--- miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/secretdoor/DoorBlockListener.java 2011/07/16 11:01:02 1578 +++ miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/secretdoor/DoorBlockListener.java 2012/01/25 21:55:33 1680 @@ -6,15 +6,16 @@ import org.bukkit.block.Block; import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockListener; import org.bukkit.event.block.BlockRedstoneEvent; import org.bukkit.event.block.SignChangeEvent; -import org.bukkit.event.player.PlayerListener; import org.bukkit.plugin.Plugin; -public class DoorBlockListener extends BlockListener { + +public class DoorBlockListener implements Listener { private DoorStorage store; @@ -32,29 +33,28 @@ handler = new DoorOpenListener(store, plugin); } - public PlayerListener getPlayerListener() { + public Listener getPlayerListener() { return handler; } - @Override + @EventHandler public void onBlockBreak(BlockBreakEvent event) { Door door = store.findDoor(event.getBlock().getLocation() ); if (door != null) { + Player player = event.getPlayer(); if ( ! door.getOwner().equals( player.getName() )) { - - Player owner = player.getServer().getPlayer( door.getOwner() ); - - if (owner != null) { - owner.sendMessage("" + player.getName() + " broke one of your secret doors"); - } + player.sendMessage("Can not break secret door"); + event.setCancelled(true); + } else { + player.sendMessage("Secret door broken"); + store.removeDoor(door); } - player.sendMessage("Secret door broken"); - store.removeDoor(door); } } private Block[] getAdjacentBlocks(Block block) { +/* Block out[] = new Block[6]; out[0] = block.getRelative(-1,0,0); @@ -65,17 +65,30 @@ out[4] = block.getRelative(0,0,-1); out[5] = block.getRelative(0,0,1); +*/ + + Block out[] = new Block[27]; + int count = 0; + for (int x=-1; x<=1; x++) { + for (int y=-1; y<=1; y++) { + for (int z=-1; z<=1; z++) { + out[count++] = block.getRelative(x,y,z); + } + } + + } return out; } - @Override + @EventHandler public void onBlockRedstoneChange(BlockRedstoneEvent event) { - //System.out.println( event.getBlock().toString() ); Block block = event.getBlock(); + //System.out.println( block.toString() + " / " + block.getTypeId() ); + int x,y,z; Block blocks[] = getAdjacentBlocks(block); @@ -87,12 +100,13 @@ if (d != null) { //System.out.println(" found door"); d.powerChange(block.getWorld(), event.getOldCurrent(), event.getNewCurrent() ); + return; } } } - @Override + @EventHandler public void onSignChange(SignChangeEvent event) { Block sign = event.getBlock(); @@ -104,10 +118,15 @@ String line0 = event.getLine(0).trim().toLowerCase(); String line1 = event.getLine(1).trim().toLowerCase(); + String line2 = event.getLine(2).trim().toLowerCase(); int width = 2; int height = 2; + boolean isPrivate = false; + + String owner = event.getPlayer().getName(); + if (line0.equals("secretdoor") ) { if ( ! line1.equals("")) { Pattern p = Pattern.compile("^[0-9]x[0-9]$"); @@ -131,8 +150,13 @@ return; } } + + if( line2.equals("private") ) { + isPrivate = true; + } + try { - Door door = new Door(sign, width, height, store, event.getPlayer().getName() ); + Door door = new Door(sign, width, height, store, owner, isPrivate ); store.addDoor(door);