From 2fb64f9eb45401c21b6d945ef58e65f3975c38f1 Mon Sep 17 00:00:00 2001 From: rockyhawk64 Date: Mon, 4 Jan 2021 09:30:21 +1100 Subject: [PATCH] v3.14.4.6 --- resource/plugin.yml | 2 +- .../interactives/Commandpanelrefresher.java | 14 ------------ .../openpanelsmanager/OpenPanelsLoader.java | 22 +++++++++++++++++++ .../openpanelsmanager/UtilsPanelsLoader.java | 14 ++++++++++++ 4 files changed, 37 insertions(+), 15 deletions(-) diff --git a/resource/plugin.yml b/resource/plugin.yml index c1dbe1a..a1b221e 100644 --- a/resource/plugin.yml +++ b/resource/plugin.yml @@ -1,4 +1,4 @@ -version: 3.14.4.5 +version: 3.14.4.6 main: me.rockyhawk.commandpanels.CommandPanels name: CommandPanels author: RockyHawk diff --git a/src/me/rockyhawk/commandpanels/interactives/Commandpanelrefresher.java b/src/me/rockyhawk/commandpanels/interactives/Commandpanelrefresher.java index cf49233..aa19bf7 100644 --- a/src/me/rockyhawk/commandpanels/interactives/Commandpanelrefresher.java +++ b/src/me/rockyhawk/commandpanels/interactives/Commandpanelrefresher.java @@ -96,20 +96,6 @@ public class Commandpanelrefresher implements Listener { } } c = 0; - //check to ensure players haven't duplicated items - try { - p.updateInventory(); - for (ItemStack playerContent : plugin.legacy.getStorageContents(p.getInventory())) { - //ensure the panel item is not a placeable item - try { - if (NBTEditor.getString(playerContent, "plugin").equalsIgnoreCase("CommandPanels")) { - p.getInventory().removeItem(playerContent); - } - }catch(Exception ignore){} - } - }catch(Exception e){ - //oof - } this.cancel(); } } diff --git a/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenPanelsLoader.java b/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenPanelsLoader.java index 94fb75b..d243bd6 100644 --- a/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenPanelsLoader.java +++ b/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenPanelsLoader.java @@ -1,8 +1,12 @@ package me.rockyhawk.commandpanels.openpanelsmanager; import me.rockyhawk.commandpanels.CommandPanels; +import me.rockyhawk.commandpanels.ioclasses.NBTEditor; import org.bukkit.Bukkit; import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -89,6 +93,7 @@ public class OpenPanelsLoader { for(int i = 0; i < openPanelsPN.size(); i++){ if(openPanelsPN.get(i)[0].equals(playerName)){ panelCloseCommands(playerName,openPanelsPN.get(i)[1]); + checkNBTItems(Bukkit.getPlayer(playerName)); plugin.customCommand.removeCCP(openPanelsPN.get(i)[1], playerName); openPanelsCF.remove(i); openPanelsPN.remove(i); @@ -102,6 +107,7 @@ public class OpenPanelsLoader { for(int i = 0; i < openPanelsPN.size(); i++){ if(Arrays.equals(openPanelsPN.get(i), new String[]{playerName, panelName})){ panelCloseCommands(playerName,panelName); + checkNBTItems(Bukkit.getPlayer(playerName)); plugin.customCommand.removeCCP(panelName, playerName); openPanelsCF.remove(i); openPanelsPN.remove(i); @@ -139,4 +145,20 @@ public class OpenPanelsLoader { } } } + + //ensure the player has not duplicated items + public void checkNBTItems(Player p){ + try { + for(ItemStack playerItem : p.getInventory().getContents()){ + //ensure the item is not a panel item + try { + if (NBTEditor.getString(playerItem, "plugin").equalsIgnoreCase("CommandPanels")) { + p.getInventory().removeItem(playerItem); + } + }catch(Exception ignore){} + } + }catch(Exception e){ + //oof + } + } } diff --git a/src/me/rockyhawk/commandpanels/openpanelsmanager/UtilsPanelsLoader.java b/src/me/rockyhawk/commandpanels/openpanelsmanager/UtilsPanelsLoader.java index 1d945f6..3606747 100644 --- a/src/me/rockyhawk/commandpanels/openpanelsmanager/UtilsPanelsLoader.java +++ b/src/me/rockyhawk/commandpanels/openpanelsmanager/UtilsPanelsLoader.java @@ -1,9 +1,13 @@ package me.rockyhawk.commandpanels.openpanelsmanager; import me.rockyhawk.commandpanels.CommandPanels; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.event.inventory.InventoryOpenEvent; +import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerQuitEvent; import java.util.Objects; @@ -39,4 +43,14 @@ public class UtilsPanelsLoader implements Listener { } } } + + @EventHandler + public void onInventoryItemClick(InventoryClickEvent e){ + //this will check to ensure an item is not from CommandPanels on inventory open + try { + plugin.openPanels.checkNBTItems((Player) e.getWhoClicked()); + }catch(Exception ex){ + plugin.debug(ex); + } + } }