--- miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/secretdoor/DoorBlockListener.java 2011/06/27 18:10:05 1532 +++ miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/secretdoor/DoorBlockListener.java 2011/06/27 19:43:33 1534 @@ -1,6 +1,9 @@ package dk.thoerup.bukkit.hoeruputils.secretdoor; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import org.bukkit.block.Block; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockListener; @@ -49,15 +52,47 @@ // don't react on floor signs return; } + + String line0 = event.getLine(0).trim().toLowerCase(); + String line1 = event.getLine(1).trim().toLowerCase(); + + int width = 2; + int height = 2; - if (event.getLine(0).toLowerCase().equals("secretdoor") ) { - Door door = new Door(sign); + if (line0.equals("secretdoor") ) { + if ( ! line1.equals("")) { + Pattern p = Pattern.compile("^[0-9]x[0-9]$"); + Matcher m = p.matcher(line1); + + if ( !m.matches() ) { + event.getPlayer().sendMessage("The second line must be of the format [width]x[height]"); + return; + } + + String parts[] = line1.split("x"); + width = Integer.parseInt( parts[0] ); + height = Integer.parseInt( parts[0] ); + + if (width <1 || width>5) { + event.getPlayer().sendMessage("width must be between 1 and 5 (inclusive)"); + return; + } + if (height <2 || height>5) { + event.getPlayer().sendMessage("height must be between 2 and 5 (inclusive)"); + return; + } + } + try { + Door door = new Door(sign, width, height, store); - store.addDoor(door); + store.addDoor(door); - event.getPlayer().sendMessage("Secret door created"); + event.getPlayer().sendMessage("Secret door created"); - sign.setTypeId(0); + sign.setTypeId(0); + } catch (ConflictingDoorException e) { + event.getPlayer().sendMessage("Door conflicts whith another secretdoor"); + } }