From aa12340a0d547b7b1dab839a3730285f01f881cb Mon Sep 17 00:00:00 2001 From: Andre LeBlanc Date: Tue, 30 Oct 2012 00:29:41 -0400 Subject: [PATCH 1/4] allow interacting with doors at close range while holding a placeable block --- .../Lockette/LockettePlayerListener.java | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/org/yi/acru/bukkit/Lockette/LockettePlayerListener.java b/src/org/yi/acru/bukkit/Lockette/LockettePlayerListener.java index 0363919..9e05175 100644 --- a/src/org/yi/acru/bukkit/Lockette/LockettePlayerListener.java +++ b/src/org/yi/acru/bukkit/Lockette/LockettePlayerListener.java @@ -21,6 +21,7 @@ import org.bukkit.event.Listener; import org.bukkit.event.Event.Result; import org.bukkit.event.block.Action; +import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.PluginManager; @@ -176,16 +177,18 @@ else if(text.equals("[more users]") || text.equalsIgnoreCase(Lockette.altMoreUse @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerInteract(PlayerInteractEvent event){ - if(!event.hasBlock()) return; - + plugin.getLogger().info("onPlayerInteract."); + //if(!event.hasBlock()) return; + //plugin.getLogger().info("event has block."); Action action = event.getAction(); Player player = event.getPlayer(); Block block = event.getClickedBlock(); - int type = block.getTypeId(); + int type = block != null ? block.getTypeId() : -1; BlockFace face = event.getBlockFace(); if(action == Action.RIGHT_CLICK_BLOCK){ + plugin.getLogger().info("Was right click block."); if(Lockette.protectTrapDoors) if(type == Material.TRAP_DOOR.getId()){ if(interactDoor(block, player)) return; @@ -195,6 +198,7 @@ public void onPlayerInteract(PlayerInteractEvent event){ } if(Lockette.protectDoors) if((type == Material.WOODEN_DOOR.getId()) || (type == Material.IRON_DOOR_BLOCK.getId()) || (type == materialFenceGate)){ + plugin.getLogger().info("was door"); if(interactDoor(block, player)) return; event.setUseInteractedBlock(Result.DENY); @@ -276,6 +280,7 @@ public void onPlayerInteract(PlayerInteractEvent event){ } } } + else if(action == Action.LEFT_CLICK_BLOCK){ if(Lockette.protectTrapDoors) if(type == Material.TRAP_DOOR.getId()){ if(interactDoor(block, player)) return; @@ -292,6 +297,17 @@ else if(action == Action.LEFT_CLICK_BLOCK){ event.setUseItemInHand(Result.DENY); return; } + } else if (action == Action.RIGHT_CLICK_AIR && event.isCancelled()){ + block = player.getTargetBlock(null, 4); + if (block != null) { + type = block.getTypeId(); + if(Lockette.protectDoors) if((type == Material.WOODEN_DOOR.getId()) || (type == Material.IRON_DOOR_BLOCK.getId()) || (type == materialFenceGate)){ + if (interactDoor(block, player)) return; + event.setUseInteractedBlock(Result.DENY); + event.setUseItemInHand(Result.DENY); + return; + } + } } } @@ -304,7 +320,8 @@ public void onPlayerQuit(PlayerQuitEvent event){ plugin.playerList.remove(player.getName()); } - + + //******************************************************************************************************************** // Start of interact section From 1f0e3e1d55ab9d715792350b44ee3d648216250c Mon Sep 17 00:00:00 2001 From: Andre LeBlanc Date: Tue, 30 Oct 2012 00:35:21 -0400 Subject: [PATCH 2/4] removed excess logging --- .../yi/acru/bukkit/Lockette/LockettePlayerListener.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/org/yi/acru/bukkit/Lockette/LockettePlayerListener.java b/src/org/yi/acru/bukkit/Lockette/LockettePlayerListener.java index 9e05175..440990d 100644 --- a/src/org/yi/acru/bukkit/Lockette/LockettePlayerListener.java +++ b/src/org/yi/acru/bukkit/Lockette/LockettePlayerListener.java @@ -177,9 +177,9 @@ else if(text.equals("[more users]") || text.equalsIgnoreCase(Lockette.altMoreUse @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerInteract(PlayerInteractEvent event){ - plugin.getLogger().info("onPlayerInteract."); + //if(!event.hasBlock()) return; - //plugin.getLogger().info("event has block."); + Action action = event.getAction(); Player player = event.getPlayer(); Block block = event.getClickedBlock(); @@ -188,7 +188,7 @@ public void onPlayerInteract(PlayerInteractEvent event){ if(action == Action.RIGHT_CLICK_BLOCK){ - plugin.getLogger().info("Was right click block."); + if(Lockette.protectTrapDoors) if(type == Material.TRAP_DOOR.getId()){ if(interactDoor(block, player)) return; @@ -198,7 +198,6 @@ public void onPlayerInteract(PlayerInteractEvent event){ } if(Lockette.protectDoors) if((type == Material.WOODEN_DOOR.getId()) || (type == Material.IRON_DOOR_BLOCK.getId()) || (type == materialFenceGate)){ - plugin.getLogger().info("was door"); if(interactDoor(block, player)) return; event.setUseInteractedBlock(Result.DENY); From 587e3649447f7fcacb31cde5e7b7f399848feb72 Mon Sep 17 00:00:00 2001 From: andrepl Date: Tue, 30 Oct 2012 02:49:01 -0300 Subject: [PATCH 3/4] Update src/org/yi/acru/bukkit/Lockette/LockettePlayerListener.java minor cleanup --- src/org/yi/acru/bukkit/Lockette/LockettePlayerListener.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/org/yi/acru/bukkit/Lockette/LockettePlayerListener.java b/src/org/yi/acru/bukkit/Lockette/LockettePlayerListener.java index 440990d..ad8c4f8 100644 --- a/src/org/yi/acru/bukkit/Lockette/LockettePlayerListener.java +++ b/src/org/yi/acru/bukkit/Lockette/LockettePlayerListener.java @@ -178,15 +178,12 @@ else if(text.equals("[more users]") || text.equalsIgnoreCase(Lockette.altMoreUse @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerInteract(PlayerInteractEvent event){ - //if(!event.hasBlock()) return; - Action action = event.getAction(); Player player = event.getPlayer(); Block block = event.getClickedBlock(); int type = block != null ? block.getTypeId() : -1; BlockFace face = event.getBlockFace(); - if(action == Action.RIGHT_CLICK_BLOCK){ if(Lockette.protectTrapDoors) if(type == Material.TRAP_DOOR.getId()){ From b89bdc6a2078f2fb00549af397b8d27946464795 Mon Sep 17 00:00:00 2001 From: Andre LeBlanc Date: Sat, 1 Dec 2012 23:32:44 -0500 Subject: [PATCH 4/4] adjust BlockFaces now that bukkit got it right --- .../bukkit/Lockette/LocketteBlockListener.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/org/yi/acru/bukkit/Lockette/LocketteBlockListener.java b/src/org/yi/acru/bukkit/Lockette/LocketteBlockListener.java index d7498e2..f9a88a5 100644 --- a/src/org/yi/acru/bukkit/Lockette/LocketteBlockListener.java +++ b/src/org/yi/acru/bukkit/Lockette/LocketteBlockListener.java @@ -34,8 +34,20 @@ public class LocketteBlockListener implements Listener{ private static Lockette plugin; - - final byte faceList[] = {5, 3, 4, 2}; + static byte faceList[]; + static { + if (BlockFace.NORTH.getModX() == -1) { + faceList[0] = 5; + faceList[1] = 3; + faceList[2] = 4; + faceList[3] = 2; + } else { + faceList[0] = 2; + faceList[1] = 5; + faceList[2] = 3; + faceList[3] = 4; + } + } final int materialList[] = {Material.CHEST.getId(), Material.DISPENSER.getId(), Material.FURNACE.getId(), Material.BURNING_FURNACE.getId(), Material.BREWING_STAND.getId(), Material.TRAP_DOOR.getId(),