diff --git a/src/main/java/cn/citycraft/MenuProtect/listen/ProtectListener.java b/src/main/java/cn/citycraft/MenuProtect/listen/ProtectListener.java index e3b8a2a..028c696 100644 --- a/src/main/java/cn/citycraft/MenuProtect/listen/ProtectListener.java +++ b/src/main/java/cn/citycraft/MenuProtect/listen/ProtectListener.java @@ -7,12 +7,10 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryMoveItemEvent; import org.bukkit.event.inventory.InventoryPickupItemEvent; import org.bukkit.event.player.PlayerItemHeldEvent; import org.bukkit.event.player.PlayerPickupItemEvent; -import org.bukkit.inventory.AnvilInventory; -import org.bukkit.inventory.CraftingInventory; -import org.bukkit.inventory.DoubleChestInventory; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; @@ -28,7 +26,15 @@ public class ProtectListener implements Listener { this.plugin = plugin; } - @EventHandler + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onInvMove(final InventoryMoveItemEvent e) { + final ItemStack ci = e.getItem(); + if (MarkUtil.hasMark(ci)) { + e.setCancelled(true); + } + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onInvPickup(final InventoryPickupItemEvent e) { final ItemStack ci = e.getItem().getItemStack(); if (MarkUtil.hasMark(ci)) { @@ -41,7 +47,7 @@ public class ProtectListener implements Listener { final Player p = (Player) e.getWhoClicked(); final ItemStack ci = e.getCurrentItem(); final Inventory inv = e.getInventory(); - if (inv.getHolder() == null || !(inv instanceof PlayerInventory || inv instanceof CraftingInventory || inv instanceof AnvilInventory || inv instanceof DoubleChestInventory)) { + if (inv.getHolder() == null) { return; } final int solt = e.getSlot(); @@ -54,7 +60,7 @@ public class ProtectListener implements Listener { } } - @EventHandler + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onPlayerHandlerItem(final PlayerItemHeldEvent e) { Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { @Override @@ -78,7 +84,7 @@ public class ProtectListener implements Listener { }); } - @EventHandler + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onPlayerPickup(final PlayerPickupItemEvent e) { final ItemStack ci = e.getItem().getItemStack(); if (MarkUtil.hasMark(ci)) {