--- miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/secretdoor/Door.java 2011/06/27 16:16:37 1531 +++ miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/secretdoor/Door.java 2011/06/27 18:10:05 1532 @@ -8,49 +8,52 @@ import org.bukkit.block.Block; - class Door { + final static int EAST = 0; + final static int WEST = 1; + final static int NORTH = 2; + final static int SOUTH = 3; + Location leftUpper; - Location rightUpper; - Location leftLower; - Location rightLower; + + + Location blocks[][] = new Location[2][2]; // [width][height] - [0][0] == leftUpper int material; + + int direction; + + int width = 2; + int height = 2; + public Door(Block sign) { leftUpper = sign.getLocation().clone(); - rightUpper = sign.getLocation().clone(); + + direction = sign.getData() - 2; + switch ( sign.getData() ) { case 2: //facing east leftUpper.setZ( leftUpper.getZ() + 1 ); - rightUpper.setZ( rightUpper.getZ() + 1 ); - rightUpper.setX( rightUpper.getX() - 1 ); break; case 3: //facing west leftUpper.setZ( leftUpper.getZ() - 1 ); - rightUpper.setZ( rightUpper.getZ() - 1 ); - rightUpper.setX( rightUpper.getX() + 1 ); break; case 4: //facing north leftUpper.setX( leftUpper.getX() + 1); - rightUpper.setX( rightUpper.getX() + 1); - rightUpper.setZ( rightUpper.getZ() + 1); break; case 5: //facing south leftUpper.setX( leftUpper.getX() - 1); - rightUpper.setX( rightUpper.getX() - 1); - rightUpper.setZ( rightUpper.getZ() - 1); break; } - material = sign.getWorld().getBlockAt( leftUpper ).getTypeId(); + + + material = leftUpper.getBlock().getTypeId(); + + loadBlocks(); - leftLower = leftUpper.clone(); - rightLower = rightUpper.clone(); - - leftLower.setY( leftLower.getY() - 1); - rightLower.setY( rightLower.getY() - 1); } public Door(String input, Server server) { @@ -59,10 +62,43 @@ World w = server.getWorld( parts[0] ); leftUpper = new Location(w, Integer.parseInt(parts[1]), Integer.parseInt(parts[2]), Integer.parseInt(parts[3]) ); - rightUpper = new Location(w, Integer.parseInt(parts[4]), Integer.parseInt(parts[5]), Integer.parseInt(parts[6]) ); - leftLower = new Location(w, Integer.parseInt(parts[7]), Integer.parseInt(parts[8]), Integer.parseInt(parts[9]) ); - rightLower = new Location(w, Integer.parseInt(parts[10]), Integer.parseInt(parts[11]), Integer.parseInt(parts[12]) ); - material = Integer.parseInt( parts[13] ); + direction = Integer.parseInt( parts[4] ); + material = Integer.parseInt( parts[5] ); + loadBlocks(); + } + + private void loadBlocks() { + + for (int w=0; w map) { - map.put(leftUpper, this ); - map.put(rightUpper, this ); - map.put(leftLower, this ); - map.put(rightLower, this ); + for (int w=0; w map) { - map.remove(leftUpper); - map.remove(rightUpper); - map.remove(leftLower); - map.remove(rightLower); + for (int w=0; w