package dk.thoerup.bukkit.hoeruputils.secretdoor; import java.util.Map; import org.bukkit.Location; import org.bukkit.Server; import org.bukkit.World; import org.bukkit.block.Block; class Door { Location leftUpper; Location rightUpper; Location leftLower; Location rightLower; int material; public Door(Block sign) { leftUpper = sign.getLocation().clone(); rightUpper = sign.getLocation().clone(); 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(); leftLower = leftUpper.clone(); rightLower = rightUpper.clone(); leftLower.setY( leftLower.getY() - 1); rightLower.setY( rightLower.getY() - 1); } public Door(String input, Server server) { String parts[] = input.split(":"); 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] ); } public String toCsv() { StringBuilder sb = new StringBuilder(); sb.append( leftUpper.getWorld().getName() ); sb.append( ":" + leftUpper.getBlockX() ); sb.append( ":" + leftUpper.getBlockY() ); sb.append( ":" + leftUpper.getBlockZ() ); sb.append( ":" + rightUpper.getBlockX() ); sb.append( ":" + rightUpper.getBlockY() ); sb.append( ":" + rightUpper.getBlockZ() ); sb.append( ":" + leftLower.getBlockX() ); sb.append( ":" + leftLower.getBlockY() ); sb.append( ":" + leftLower.getBlockZ() ); sb.append( ":" + rightLower.getBlockX() ); sb.append( ":" + rightLower.getBlockY() ); sb.append( ":" + rightLower.getBlockZ() ); sb.append( ":" + material ); return sb.toString(); } public void registerMap(Map map) { map.put(leftUpper, this ); map.put(rightUpper, this ); map.put(leftLower, this ); map.put(rightLower, this ); } public void unregisterMap(Map map) { map.remove(leftUpper); map.remove(rightUpper); map.remove(leftLower); map.remove(rightLower); } public void open(World world) { world.getBlockAt( leftUpper ).setTypeId( 0 ); world.getBlockAt( rightUpper ).setTypeId( 0 ); world.getBlockAt( leftLower ).setTypeId( 0 ); world.getBlockAt( rightLower ).setTypeId( 0 ); } public void close(World world) { world.getBlockAt( leftUpper ).setTypeId( material ); world.getBlockAt( rightUpper ).setTypeId( material ); world.getBlockAt( leftLower ).setTypeId( material ); world.getBlockAt( rightLower ).setTypeId( material ); } }