From 2962705ef4e28aa1c9cd905a19e0cb478b72ea8b Mon Sep 17 00:00:00 2001 From: Michael Limiero Date: Tue, 7 May 2013 15:41:06 -0400 Subject: [PATCH 1/2] Fix hopper minecarts being able to pull from locked chests --- src/org/yi/acru/bukkit/Lockette/Lockette.java | 6 ++- .../Lockette/LocketteInventoryListener.java | 48 +++++++++++++++++++ 2 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 src/org/yi/acru/bukkit/Lockette/LocketteInventoryListener.java diff --git a/src/org/yi/acru/bukkit/Lockette/Lockette.java b/src/org/yi/acru/bukkit/Lockette/Lockette.java index 74691ab..c3aab7d 100644 --- a/src/org/yi/acru/bukkit/Lockette/Lockette.java +++ b/src/org/yi/acru/bukkit/Lockette/Lockette.java @@ -40,6 +40,7 @@ public class Lockette extends PluginCore{ private static boolean registered = false; private final LocketteBlockListener blockListener = new LocketteBlockListener(this); private final LocketteEntityListener entityListener = new LocketteEntityListener(this); + private final LocketteInventoryListener inventoryListener = new LocketteInventoryListener(this); private final LockettePlayerListener playerListener = new LockettePlayerListener(this); private final LockettePrefixListener prefixListener = new LockettePrefixListener(this); private final LocketteWorldListener worldListener = new LocketteWorldListener(this); @@ -127,6 +128,7 @@ else if((build >= 685) && (build <= 703)){ if(!registered){ blockListener.registerEvents(); entityListener.registerEvents(); + inventoryListener.registerEvents(); playerListener.registerEvents(); prefixListener.registerEvents(); worldListener.registerEvents(); @@ -395,7 +397,7 @@ protected void loadStrings(boolean reload, String fileName){ // Load in the alternate sign strings. altPrivate = strings.getString("alternate-private-tag"); - if((altPrivate == null) || altPrivate.isEmpty() || (original && altPrivate.equals("Privé"))){ + if((altPrivate == null) || altPrivate.isEmpty() || (original && altPrivate.equals("Priv�"))){ altPrivate = "Private"; strings.set("alternate-private-tag", altPrivate); } @@ -418,7 +420,7 @@ protected void loadStrings(boolean reload, String fileName){ altEveryone = "["+altEveryone+"]"; altOperators = strings.getString("alternate-operators-tag"); - if((altOperators == null) || altOperators.isEmpty() || (original && altOperators.equals("Opérateurs"))){ + if((altOperators == null) || altOperators.isEmpty() || (original && altOperators.equals("Op�rateurs"))){ altOperators = "Operators"; strings.set("alternate-operators-tag", altOperators); stringChanged = true; diff --git a/src/org/yi/acru/bukkit/Lockette/LocketteInventoryListener.java b/src/org/yi/acru/bukkit/Lockette/LocketteInventoryListener.java new file mode 100644 index 0000000..1eecc52 --- /dev/null +++ b/src/org/yi/acru/bukkit/Lockette/LocketteInventoryListener.java @@ -0,0 +1,48 @@ +package org.yi.acru.bukkit.Lockette; + +import org.bukkit.block.BlockState; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryMoveItemEvent; + +import org.bukkit.inventory.InventoryHolder; + +import org.bukkit.plugin.PluginManager; + +public class LocketteInventoryListener implements Listener { + private static Lockette plugin; + + public LocketteInventoryListener(Lockette instance) { + plugin = instance; + } + + protected void registerEvents() { + + PluginManager pm = plugin.getServer().getPluginManager(); + + pm.registerEvents(this, plugin); + } + + //******************************************************************************************************************** + // Start of event section + + @EventHandler(priority = EventPriority.HIGHEST) + public void onInventoryMoveItem(InventoryMoveItemEvent event) { + InventoryHolder sourceHolder = event.getSource().getHolder(); + if (sourceHolder instanceof BlockState) { + if (Lockette.isProtected( ((BlockState)sourceHolder).getBlock() )) { + event.setCancelled(true); + return; + } + } + InventoryHolder destHolder = event.getDestination().getHolder(); + if (destHolder instanceof BlockState) { + if (Lockette.isProtected( ((BlockState)destHolder).getBlock() )) { + event.setCancelled(true); + return; + } + } + } +} From d837042b90186729897ed20eac1b22c75e227a01 Mon Sep 17 00:00:00 2001 From: Michael Limiero Date: Tue, 7 May 2013 16:42:50 -0400 Subject: [PATCH 2/2] Protect double chests from hopper minecarts too --- .../acru/bukkit/Lockette/LocketteInventoryListener.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/org/yi/acru/bukkit/Lockette/LocketteInventoryListener.java b/src/org/yi/acru/bukkit/Lockette/LocketteInventoryListener.java index 1eecc52..51bcd12 100644 --- a/src/org/yi/acru/bukkit/Lockette/LocketteInventoryListener.java +++ b/src/org/yi/acru/bukkit/Lockette/LocketteInventoryListener.java @@ -1,6 +1,7 @@ package org.yi.acru.bukkit.Lockette; import org.bukkit.block.BlockState; +import org.bukkit.block.DoubleChest; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -31,13 +32,21 @@ protected void registerEvents() { @EventHandler(priority = EventPriority.HIGHEST) public void onInventoryMoveItem(InventoryMoveItemEvent event) { InventoryHolder sourceHolder = event.getSource().getHolder(); + if (sourceHolder instanceof DoubleChest) { + // checking one side is sufficient + sourceHolder = ((DoubleChest)sourceHolder).getLeftSide(); + } if (sourceHolder instanceof BlockState) { if (Lockette.isProtected( ((BlockState)sourceHolder).getBlock() )) { event.setCancelled(true); return; } } + InventoryHolder destHolder = event.getDestination().getHolder(); + if (destHolder instanceof DoubleChest) { + destHolder = ((DoubleChest)destHolder).getLeftSide(); + } if (destHolder instanceof BlockState) { if (Lockette.isProtected( ((BlockState)destHolder).getBlock() )) { event.setCancelled(true);