diff options
author | KHobbits <rob@khobbits.co.uk> | 2014-02-09 21:51:18 +0000 |
---|---|---|
committer | KHobbits <rob@khobbits.co.uk> | 2014-02-09 21:54:04 +0000 |
commit | 9bc8f287a4aa63a282aeec2dd3be8fcd88ed10f1 (patch) | |
tree | e04387c7001c3b7831ac7b196966e6fce45fb9eb | |
parent | 5e6ce8aecb56131345e8d99059490c52a94e695c (diff) | |
download | Essentials-9bc8f287a4aa63a282aeec2dd3be8fcd88ed10f1.tar Essentials-9bc8f287a4aa63a282aeec2dd3be8fcd88ed10f1.tar.gz Essentials-9bc8f287a4aa63a282aeec2dd3be8fcd88ed10f1.tar.lz Essentials-9bc8f287a4aa63a282aeec2dd3be8fcd88ed10f1.tar.xz Essentials-9bc8f287a4aa63a282aeec2dd3be8fcd88ed10f1.zip |
Fix ghost items with /recipe
-rw-r--r-- | Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index 6db22c0fa..975559026 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -650,6 +650,7 @@ public class EssentialsPlayerListener implements Listener @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onInventoryClickEvent(final InventoryClickEvent event) { + Player refreshPlayer = null; final Inventory top = event.getView().getTopInventory(); final InventoryType type = top.getType(); @@ -665,7 +666,7 @@ public class EssentialsPlayerListener implements Listener || !invOwner.isOnline())) { event.setCancelled(true); - user.updateInventory(); + refreshPlayer = user.getBase(); } } } @@ -675,6 +676,7 @@ public class EssentialsPlayerListener implements Listener if (user.isEnderSee() && (!user.isAuthorized("essentials.enderchest.modify"))) { event.setCancelled(true); + refreshPlayer = user.getBase(); } } else if (type == InventoryType.WORKBENCH) @@ -683,6 +685,7 @@ public class EssentialsPlayerListener implements Listener if (user.isRecipeSee()) { event.setCancelled(true); + refreshPlayer = user.getBase(); } } else if (type == InventoryType.CHEST && top.getSize() == 9) @@ -692,26 +695,41 @@ public class EssentialsPlayerListener implements Listener if (invHolder != null && invHolder instanceof HumanEntity && user.isInvSee()) { event.setCancelled(true); + refreshPlayer = user.getBase(); } } + + if (refreshPlayer != null) + { + final Player player = refreshPlayer; + ess.scheduleSyncDelayedTask(new Runnable() + { + @Override + public void run() + { + player.updateInventory(); + } + }, 1); + } } @EventHandler(priority = EventPriority.MONITOR) public void onInventoryCloseEvent(final InventoryCloseEvent event) { + Player refreshPlayer = null; final Inventory top = event.getView().getTopInventory(); final InventoryType type = top.getType(); if (type == InventoryType.PLAYER) { final User user = ess.getUser((Player)event.getPlayer()); user.setInvSee(false); - user.updateInventory(); + refreshPlayer = user.getBase(); } else if (type == InventoryType.ENDER_CHEST) { final User user = ess.getUser((Player)event.getPlayer()); user.setEnderSee(false); - user.updateInventory(); + refreshPlayer = user.getBase(); } else if (type == InventoryType.WORKBENCH) { @@ -720,7 +738,7 @@ public class EssentialsPlayerListener implements Listener { user.setRecipeSee(false); event.getView().getTopInventory().clear(); - user.updateInventory(); + refreshPlayer = user.getBase(); } } else if (type == InventoryType.CHEST && top.getSize() == 9) @@ -730,9 +748,22 @@ public class EssentialsPlayerListener implements Listener { final User user = ess.getUser((Player)event.getPlayer()); user.setInvSee(false); - user.updateInventory(); + refreshPlayer = user.getBase(); } } + + if (refreshPlayer != null) + { + final Player player = refreshPlayer; + ess.scheduleSyncDelayedTask(new Runnable() + { + @Override + public void run() + { + player.updateInventory(); + } + }, 1); + } } @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) |