From 5032e5f21866b23bd5fe98f068c579d6f35d2563 Mon Sep 17 00:00:00 2001 From: rockyhawk64 Date: Thu, 30 Jun 2022 13:09:19 +1000 Subject: [PATCH] 3.18.1.0 --- .idea/compiler.xml | 2 +- .../Maven__net_kyori_adventure_api_4_11_0.xml | 13 ------- .../Maven__net_kyori_adventure_key_4_11_0.xml | 13 ------- ...yori_adventure_text_minimessage_4_11_0.xml | 13 ------- ...Maven__net_kyori_examination_api_1_3_0.xml | 13 ------- ...en__net_kyori_examination_string_1_3_0.xml | 13 ------- ...aven__org_jetbrains_annotations_23_0_0.xml | 13 ------- ...xml => spigot_api_1_19_R0_1_SNAPSHOT1.xml} | 4 +-- .idea/misc.xml | 2 +- CommandPanels.iml | 4 +-- resource/config.yml | 4 +-- resource/plugin.yml | 2 +- resource_editor/BottomSettings.yml | 17 ++++----- resource_editor/ItemEditMenu.yml | 4 +-- src/me/rockyhawk/commandpanels/Utils.java | 10 ++++++ .../classresources/SerializerUtils.java | 3 +- .../commands/Commandpanelsreload.java | 3 ++ .../commandtags/tags/other/SpecialTags.java | 2 +- .../commandtags/tags/standard/BasicTags.java | 11 ++++++ .../commandpanels/editor/CPEventHandler.java | 6 +++- .../generatepanels/GenUtils.java | 1 - .../openpanelsmanager/OpenPanelsLoader.java | 14 ++++++-- .../openpanelsmanager/UtilsPanelsLoader.java | 30 +++++++++++++++- .../panelblocks/Commandpanelblocks.java | 5 ++- .../panelblocks/PanelBlockOnClick.java | 35 ++++++++++++------- 25 files changed, 115 insertions(+), 122 deletions(-) delete mode 100644 .idea/libraries/Maven__net_kyori_adventure_api_4_11_0.xml delete mode 100644 .idea/libraries/Maven__net_kyori_adventure_key_4_11_0.xml delete mode 100644 .idea/libraries/Maven__net_kyori_adventure_text_minimessage_4_11_0.xml delete mode 100644 .idea/libraries/Maven__net_kyori_examination_api_1_3_0.xml delete mode 100644 .idea/libraries/Maven__net_kyori_examination_string_1_3_0.xml delete mode 100644 .idea/libraries/Maven__org_jetbrains_annotations_23_0_0.xml rename .idea/libraries/{spigot_api_1_19_R0_1_SNAPSHOT.xml => spigot_api_1_19_R0_1_SNAPSHOT1.xml} (57%) diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 5f2fe3a..f8595a0 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -10,7 +10,7 @@ - + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_kyori_adventure_api_4_11_0.xml b/.idea/libraries/Maven__net_kyori_adventure_api_4_11_0.xml deleted file mode 100644 index 101abe7..0000000 --- a/.idea/libraries/Maven__net_kyori_adventure_api_4_11_0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__net_kyori_adventure_key_4_11_0.xml b/.idea/libraries/Maven__net_kyori_adventure_key_4_11_0.xml deleted file mode 100644 index ec1cb5c..0000000 --- a/.idea/libraries/Maven__net_kyori_adventure_key_4_11_0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__net_kyori_adventure_text_minimessage_4_11_0.xml b/.idea/libraries/Maven__net_kyori_adventure_text_minimessage_4_11_0.xml deleted file mode 100644 index a59d7d8..0000000 --- a/.idea/libraries/Maven__net_kyori_adventure_text_minimessage_4_11_0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__net_kyori_examination_api_1_3_0.xml b/.idea/libraries/Maven__net_kyori_examination_api_1_3_0.xml deleted file mode 100644 index 5b4190e..0000000 --- a/.idea/libraries/Maven__net_kyori_examination_api_1_3_0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__net_kyori_examination_string_1_3_0.xml b/.idea/libraries/Maven__net_kyori_examination_string_1_3_0.xml deleted file mode 100644 index 7b7a7c3..0000000 --- a/.idea/libraries/Maven__net_kyori_examination_string_1_3_0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jetbrains_annotations_23_0_0.xml b/.idea/libraries/Maven__org_jetbrains_annotations_23_0_0.xml deleted file mode 100644 index b271e07..0000000 --- a/.idea/libraries/Maven__org_jetbrains_annotations_23_0_0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/spigot_api_1_19_R0_1_SNAPSHOT.xml b/.idea/libraries/spigot_api_1_19_R0_1_SNAPSHOT1.xml similarity index 57% rename from .idea/libraries/spigot_api_1_19_R0_1_SNAPSHOT.xml rename to .idea/libraries/spigot_api_1_19_R0_1_SNAPSHOT1.xml index eeaf356..c3d3148 100644 --- a/.idea/libraries/spigot_api_1_19_R0_1_SNAPSHOT.xml +++ b/.idea/libraries/spigot_api_1_19_R0_1_SNAPSHOT1.xml @@ -1,7 +1,7 @@ - + - + diff --git a/.idea/misc.xml b/.idea/misc.xml index 5755a99..4bd9b3a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -7,7 +7,7 @@ - + \ No newline at end of file diff --git a/CommandPanels.iml b/CommandPanels.iml index 6f9e61e..7eee2ff 100644 --- a/CommandPanels.iml +++ b/CommandPanels.iml @@ -10,7 +10,7 @@ - + @@ -25,12 +25,12 @@ + - \ No newline at end of file diff --git a/resource/config.yml b/resource/config.yml index 8d25d0b..59dd39b 100644 --- a/resource/config.yml +++ b/resource/config.yml @@ -20,7 +20,7 @@ config: update-notifications: true panel-snooper: false format: - tag: '&6[&bCommandPanels&6]' + tag: '&6[&bCommandPanels&6] ' perms: '&cNo permission.' reload: '&aReloaded.' nopanel: '&cPanel not found.' @@ -48,7 +48,7 @@ placeholders: start: '{' end: '}' updater: - auto-update: true + auto-update: false minor-updates-only: true update-checks: true purchase: diff --git a/resource/plugin.yml b/resource/plugin.yml index 00d6bf9..20229fd 100644 --- a/resource/plugin.yml +++ b/resource/plugin.yml @@ -1,4 +1,4 @@ -version: 3.18.0.0 +version: 3.18.1.0 main: me.rockyhawk.commandpanels.CommandPanels name: CommandPanels author: RockyHawk diff --git a/resource_editor/BottomSettings.yml b/resource_editor/BottomSettings.yml index 5d35ed7..de4e93f 100644 --- a/resource_editor/BottomSettings.yml +++ b/resource_editor/BottomSettings.yml @@ -15,6 +15,7 @@ panels: stack: 1 name: '&cExit' commands: + - event= CommandPanels_EditorClosed - cpc '4': material: CHEST @@ -28,11 +29,11 @@ panels: name: '&fItem Settings' commands: - "event= CommandPanels_OpenItemSettings" - '8': - material: COMPASS - stack: 1 - name: '&fItem Sections' - lore: - - "&cIN PROGRESS" - commands: - - "event= CommandPanels_OpenItemSections" \ No newline at end of file + #'8': + # material: COMPASS + # stack: 1 + # name: '&fItem Sections' + # lore: + # - "&cIN PROGRESS" + # commands: + # - "event= CommandPanels_OpenItemSections" \ No newline at end of file diff --git a/resource_editor/ItemEditMenu.yml b/resource_editor/ItemEditMenu.yml index 6fe7bf1..da32290 100644 --- a/resource_editor/ItemEditMenu.yml +++ b/resource_editor/ItemEditMenu.yml @@ -79,7 +79,7 @@ panels: - cpc player-input: - "event= CPEditor_itemnbt %cp-player-input%" - '0': + '18': material: LAVA_BUCKET name: '&cDelete Item' lore: @@ -98,7 +98,7 @@ panels: - cpc player-input: - "event= CPEditor_itemslot %cp-player-input%" - '18': + '0': material: ENDER_CHEST name: '&fMove Item' lore: diff --git a/src/me/rockyhawk/commandpanels/Utils.java b/src/me/rockyhawk/commandpanels/Utils.java index 2785b72..9c7b47c 100644 --- a/src/me/rockyhawk/commandpanels/Utils.java +++ b/src/me/rockyhawk/commandpanels/Utils.java @@ -86,6 +86,16 @@ public class Utils implements Listener { //the panels proper position panel = plugin.openPanels.getOpenPanel(p.getName(),position); + //this will cancel click on editor open and then change the slot clicked + if(plugin.editorMain.settings.containsKey(p.getUniqueId())) { + if (plugin.editorMain.settings.get(p.getUniqueId()).hasEditorOpen && position == PanelPosition.Top) { + plugin.editorMain.settings.get(p.getUniqueId()).slotSelected = String.valueOf(e.getSlot()); + plugin.editorMain.openGuiPage(plugin.editorMain.settings.get(p.getUniqueId()).menuOpen, p, PanelPosition.Middle); + e.setCancelled(true); + return; + } + } + //this loops through all the items in the panel boolean foundSlot = false; for(String slot : Objects.requireNonNull(panel.getConfig().getConfigurationSection("item")).getKeys(false)){ diff --git a/src/me/rockyhawk/commandpanels/classresources/SerializerUtils.java b/src/me/rockyhawk/commandpanels/classresources/SerializerUtils.java index 8c88f62..cf70ad0 100644 --- a/src/me/rockyhawk/commandpanels/classresources/SerializerUtils.java +++ b/src/me/rockyhawk/commandpanels/classresources/SerializerUtils.java @@ -6,7 +6,6 @@ import net.kyori.adventure.text.minimessage.MiniMessage; public class SerializerUtils { public static Component serializeText(String msg){ - Component parsedText = MiniMessage.miniMessage().deserialize(msg); - return parsedText; + return MiniMessage.miniMessage().deserialize(msg); } } diff --git a/src/me/rockyhawk/commandpanels/commands/Commandpanelsreload.java b/src/me/rockyhawk/commandpanels/commands/Commandpanelsreload.java index 8bb3d71..e33ba76 100644 --- a/src/me/rockyhawk/commandpanels/commands/Commandpanelsreload.java +++ b/src/me/rockyhawk/commandpanels/commands/Commandpanelsreload.java @@ -45,6 +45,9 @@ public class Commandpanelsreload implements CommandExecutor { //reloadHotbarSlots plugin.hotbar.reloadHotbarSlots(); + //reload tag + plugin.tag = plugin.tex.colour(plugin.config.getString("config.format.tag")); + //add custom commands to commands.yml if(plugin.config.getString("config.auto-register-commands").equalsIgnoreCase("true")) { registerCommands(); diff --git a/src/me/rockyhawk/commandpanels/commandtags/tags/other/SpecialTags.java b/src/me/rockyhawk/commandpanels/commandtags/tags/other/SpecialTags.java index 50682ef..60b3175 100644 --- a/src/me/rockyhawk/commandpanels/commandtags/tags/other/SpecialTags.java +++ b/src/me/rockyhawk/commandpanels/commandtags/tags/other/SpecialTags.java @@ -66,7 +66,7 @@ public class SpecialTags implements Listener { plugin.openPanels.closePanelForLoader(e.p.getName(),PanelPosition.Bottom); }else if(position == PanelPosition.Top && plugin.openPanels.hasPanelOpen(e.p.getName(),position)){ //closing top closes all - e.p.closeInventory(); + plugin.commandTags.runCommand(e.panel,e.pos,e.p,"cpc"); } return; } diff --git a/src/me/rockyhawk/commandpanels/commandtags/tags/standard/BasicTags.java b/src/me/rockyhawk/commandpanels/commandtags/tags/standard/BasicTags.java index 2b4ff01..83a5e38 100644 --- a/src/me/rockyhawk/commandpanels/commandtags/tags/standard/BasicTags.java +++ b/src/me/rockyhawk/commandpanels/commandtags/tags/standard/BasicTags.java @@ -6,6 +6,7 @@ import me.rockyhawk.commandpanels.classresources.SerializerUtils; import me.rockyhawk.commandpanels.commandtags.CommandTagEvent; import me.rockyhawk.commandpanels.ioclasses.legacy.MinecraftVersions; import me.rockyhawk.commandpanels.openpanelsmanager.PanelOpenType; +import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition; import net.kyori.adventure.audience.Audience; import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; @@ -24,8 +25,18 @@ public class BasicTags implements Listener { public void commandTag(CommandTagEvent e){ if(e.name.equalsIgnoreCase("cpc")){ e.commandTagUsed(); + + //unclosable panels are at the Top only + if(plugin.openPanels.getOpenPanel(e.p.getName(),PanelPosition.Top).getConfig().contains("panelType")){ + if(plugin.openPanels.getOpenPanel(e.p.getName(),PanelPosition.Top).getConfig().getStringList("panelType").contains("unclosable")){ + plugin.openPanels.closePanelForLoader(e.p.getName(),PanelPosition.Top); + plugin.openPanels.skipPanelClose.add(e.p.getName()); + } + } + //this will close the current inventory e.p.closeInventory(); + plugin.openPanels.skipPanelClose.remove(e.p.getName()); return; } if(e.name.equalsIgnoreCase("refresh")) { diff --git a/src/me/rockyhawk/commandpanels/editor/CPEventHandler.java b/src/me/rockyhawk/commandpanels/editor/CPEventHandler.java index 8602220..188b9df 100644 --- a/src/me/rockyhawk/commandpanels/editor/CPEventHandler.java +++ b/src/me/rockyhawk/commandpanels/editor/CPEventHandler.java @@ -195,7 +195,11 @@ public class CPEventHandler implements Listener { panel.getConfig().set("title", playerInput); break; case "panelrows": - panel.getConfig().set("rows", playerInput); + if(isNumeric(playerInput)){ + panel.getConfig().set("rows", Integer.parseInt(playerInput)); + }else { + panel.getConfig().set("rows", playerInput); + } break; case "panelrefreshdelay": panel.getConfig().set("refresh-delay", playerInput); diff --git a/src/me/rockyhawk/commandpanels/generatepanels/GenUtils.java b/src/me/rockyhawk/commandpanels/generatepanels/GenUtils.java index ca0813a..5c896b8 100644 --- a/src/me/rockyhawk/commandpanels/generatepanels/GenUtils.java +++ b/src/me/rockyhawk/commandpanels/generatepanels/GenUtils.java @@ -56,7 +56,6 @@ public class GenUtils implements Listener { } } - @SuppressWarnings("deprecation") void generatePanel(Player p, Inventory inv){ ArrayList apanels = new ArrayList(); for(Panel panel : plugin.panelList){ diff --git a/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenPanelsLoader.java b/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenPanelsLoader.java index eb5944a..930a213 100644 --- a/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenPanelsLoader.java +++ b/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenPanelsLoader.java @@ -77,18 +77,26 @@ public class OpenPanelsLoader { //close all of the panels for a player currently open public void closePanelForLoader(String playerName, PanelPosition position){ - if(!openPanels.containsKey(playerName) || skipPanelClose.contains(playerName)){ + //close if not panel + if(!plugin.openPanels.openPanels.containsKey(playerName) || plugin.openPanels.skipPanelClose.contains(playerName)){ return; } - panelCloseCommands(playerName,position,openPanels.get(playerName).getPanel(position)); + + //snooper if (plugin.config.contains("config.panel-snooper")) { if (Objects.requireNonNull(plugin.config.getString("config.panel-snooper")).equalsIgnoreCase("true")) { Bukkit.getConsoleSender().sendMessage("[CommandPanels] " + playerName + " Closed " + openPanels.get(playerName).getPanel(position).getName() + " at " + position); } } + //panel instance + Panel panel = openPanels.get(playerName).getPanel(position); + + //run close commands once panel is closed + panelCloseCommands(playerName,position,panel); + //fire PanelClosedEvent - PanelClosedEvent closedEvent = new PanelClosedEvent(Bukkit.getPlayer(playerName),openPanels.get(playerName).getPanel(position),position); + PanelClosedEvent closedEvent = new PanelClosedEvent(Bukkit.getPlayer(playerName),panel,position); Bukkit.getPluginManager().callEvent(closedEvent); openPanels.get(playerName).setPanel(null,position); diff --git a/src/me/rockyhawk/commandpanels/openpanelsmanager/UtilsPanelsLoader.java b/src/me/rockyhawk/commandpanels/openpanelsmanager/UtilsPanelsLoader.java index ac8d6d8..f0b521f 100644 --- a/src/me/rockyhawk/commandpanels/openpanelsmanager/UtilsPanelsLoader.java +++ b/src/me/rockyhawk/commandpanels/openpanelsmanager/UtilsPanelsLoader.java @@ -1,5 +1,6 @@ package me.rockyhawk.commandpanels.openpanelsmanager; +import me.realized.tokenmanager.command.commands.subcommands.TopCommand; import me.rockyhawk.commandpanels.CommandPanels; import me.rockyhawk.commandpanels.api.Panel; import me.rockyhawk.commandpanels.api.PanelClosedEvent; @@ -40,7 +41,34 @@ public class UtilsPanelsLoader implements Listener { //tell panel loader that player has closed the panel (there is also one of these in EditorUtils) @EventHandler public void onPlayerClosePanel(InventoryCloseEvent e){ - //only do this if editor is disabled as it will disabled this code + String playerName = e.getPlayer().getName(); + + //close if not panel + if(!plugin.openPanels.openPanels.containsKey(playerName) || plugin.openPanels.skipPanelClose.contains(playerName)){ + return; + } + + //check for panelType unclosable (unclosable is Top only) + if(plugin.openPanels.getOpenPanel(playerName,PanelPosition.Top).getConfig().contains("panelType")){ + if(plugin.openPanels.getOpenPanel(playerName,PanelPosition.Top).getConfig().getStringList("panelType").contains("unclosable")){ + plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { + public void run() { + plugin.openPanels.getOpenPanel(playerName,PanelPosition.Top).open(Bukkit.getPlayer(playerName), PanelPosition.Top); + } + }); + return; + } + } + + //run commands-on-close for panels + if(plugin.openPanels.hasPanelOpen(e.getPlayer().getName(),PanelPosition.Bottom)){ + plugin.openPanels.panelCloseCommands(playerName,PanelPosition.Bottom,plugin.openPanels.getOpenPanel(playerName,PanelPosition.Bottom)); + } + if(plugin.openPanels.hasPanelOpen(e.getPlayer().getName(),PanelPosition.Middle)){ + plugin.openPanels.panelCloseCommands(playerName,PanelPosition.Middle,plugin.openPanels.getOpenPanel(playerName,PanelPosition.Middle)); + } + + //close panels and run commands for Top panel plugin.openPanels.closePanelForLoader(e.getPlayer().getName(),PanelPosition.Top); } diff --git a/src/me/rockyhawk/commandpanels/panelblocks/Commandpanelblocks.java b/src/me/rockyhawk/commandpanels/panelblocks/Commandpanelblocks.java index 4844b14..2238a40 100644 --- a/src/me/rockyhawk/commandpanels/panelblocks/Commandpanelblocks.java +++ b/src/me/rockyhawk/commandpanels/panelblocks/Commandpanelblocks.java @@ -64,9 +64,8 @@ public class Commandpanelblocks implements CommandExecutor { return true; } //make the material name look okay - String materialNameFormatted = blockType.getType().toString().substring(0, 1).toUpperCase() + blockType.getType().toString().substring(1).toLowerCase(); - materialNameFormatted = materialNameFormatted.replaceAll("_"," "); - sender.sendMessage(plugin.tex.colour(plugin.tag + ChatColor.WHITE + args[1] + ChatColor.GREEN + " will now open when right clicking " + ChatColor.WHITE + materialNameFormatted)); + String coordinates = blockLocation.getBlockX() + ", " + blockLocation.getBlockY() + ", " + blockLocation.getBlockZ(); + sender.sendMessage(plugin.tex.colour(plugin.tag + ChatColor.WHITE + args[1] + ChatColor.GREEN + "will now open when right clicking a block in the coordinates " + ChatColor.WHITE + coordinates)); }else{ sender.sendMessage(plugin.tex.colour(plugin.tag + plugin.config.getString("config.format.perms"))); } diff --git a/src/me/rockyhawk/commandpanels/panelblocks/PanelBlockOnClick.java b/src/me/rockyhawk/commandpanels/panelblocks/PanelBlockOnClick.java index 7e36180..b04be7e 100644 --- a/src/me/rockyhawk/commandpanels/panelblocks/PanelBlockOnClick.java +++ b/src/me/rockyhawk/commandpanels/panelblocks/PanelBlockOnClick.java @@ -3,11 +3,11 @@ package me.rockyhawk.commandpanels.panelblocks; import me.rockyhawk.commandpanels.CommandPanels; import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition; import org.bukkit.Location; -import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.event.player.PlayerInteractEvent; import java.util.Objects; @@ -17,41 +17,50 @@ public class PanelBlockOnClick implements Listener { public PanelBlockOnClick(CommandPanels pl) { this.plugin = pl; } + @EventHandler public void onInteract(PlayerInteractEvent e){ + if(e.getAction() == Action.RIGHT_CLICK_BLOCK && e.getClickedBlock() != null) { + e.setCancelled(blockClickEventTrigger(e.getClickedBlock().getLocation(), e.getPlayer())); + } + } + + @EventHandler + public void onInteractEntity(PlayerInteractEntityEvent e){ + if(!e.getPlayer().isSneaking()) { + e.setCancelled(blockClickEventTrigger(e.getRightClicked().getLocation().getBlock().getLocation(), e.getPlayer())); + } + } + + public boolean blockClickEventTrigger(Location location, Player p){ //if panel blocks are disabled return if(Objects.requireNonNull(plugin.config.getString("config.panel-blocks")).equalsIgnoreCase("false")){ - return; + return false; } - if(e.getAction() != Action.RIGHT_CLICK_BLOCK) { - return; - } - Block block = e.getClickedBlock(); - Player p = e.getPlayer(); - assert block != null; if(!plugin.blockConfig.contains("blocks")){ - return; + return false; } if(plugin.openPanels.hasPanelOpen(p.getName(), PanelPosition.Top)) { //some blocks run this event twice, skip if panel already open //as blocks cannot be clicked obviously if a panel is open - return; + return false; } for (String configLocation : Objects.requireNonNull(plugin.blockConfig.getConfigurationSection("blocks")).getKeys(false)) { String[] loc = configLocation.split("_"); Location tempLocation = new Location(plugin.getServer().getWorld(loc[0].replaceAll("%dash%","_")),Double.parseDouble(loc[1]),Double.parseDouble(loc[2]),Double.parseDouble(loc[3])); - if(tempLocation.equals(block.getLocation())){ - e.setCancelled(true); + if(tempLocation.equals(location)){ if(plugin.blockConfig.contains("blocks." + configLocation + ".commands")){ for(String command : plugin.blockConfig.getStringList("blocks." + configLocation + ".commands")){ plugin.commandTags.runCommand(null,PanelPosition.Top,p, command); } - return; + return true; } //uses the open= tag because it will open a panel with panel names, but also works with open= features like placeholders String command = "open= " + plugin.blockConfig.getString("blocks." + configLocation + ".panel"); plugin.commandTags.runCommand(null,PanelPosition.Top,p, command); + return true; } } + return false; } } \ No newline at end of file