From f6aec68a1bcb20b25ea6c0091cc9f4b0ddc6929e Mon Sep 17 00:00:00 2001 From: rockyhawk64 Date: Wed, 23 Dec 2020 20:38:46 +1100 Subject: [PATCH] v3.14.3.0 --- .idea/libraries/MMOItems_6_5_1.xml | 9 ++++ Command Panels.iml | 1 + resource/plugin.yml | 4 +- .../commandpanels/CommandPanels.java | 40 ++++++++++++--- .../classresources/ItemCreation.java | 49 +++++++++++++------ .../commands/Commandpanelsreload.java | 16 ++++-- .../openpanelsmanager/OpenGUI.java | 3 +- 7 files changed, 94 insertions(+), 28 deletions(-) create mode 100644 .idea/libraries/MMOItems_6_5_1.xml diff --git a/.idea/libraries/MMOItems_6_5_1.xml b/.idea/libraries/MMOItems_6_5_1.xml new file mode 100644 index 0000000..3b00529 --- /dev/null +++ b/.idea/libraries/MMOItems_6_5_1.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/Command Panels.iml b/Command Panels.iml index 8672490..a41c8aa 100644 --- a/Command Panels.iml +++ b/Command Panels.iml @@ -15,5 +15,6 @@ + \ No newline at end of file diff --git a/resource/plugin.yml b/resource/plugin.yml index f706c9b..b21a6de 100644 --- a/resource/plugin.yml +++ b/resource/plugin.yml @@ -1,10 +1,10 @@ -version: 3.14.2.6 +version: 3.14.3.0 main: me.rockyhawk.commandpanels.CommandPanels name: CommandPanels author: RockyHawk api-version: '1.13' description: Fully Custom GUIs. Make your Server Professional. -softdepend: [PlaceholderAPI, Vault, HeadDatabase, TokenManager, VotingPlugin] +softdepend: [PlaceholderAPI, Vault, HeadDatabase, TokenManager, VotingPlugin, MMOItems] commands: commandpanel: description: Open a command panel. diff --git a/src/me/rockyhawk/commandpanels/CommandPanels.java b/src/me/rockyhawk/commandpanels/CommandPanels.java index 59e348f..d7265e7 100644 --- a/src/me/rockyhawk/commandpanels/CommandPanels.java +++ b/src/me/rockyhawk/commandpanels/CommandPanels.java @@ -85,15 +85,13 @@ public class CommandPanels extends JavaPlugin { public File panelsf; public YamlConfiguration blockConfig; //where panel block locations are stored - public CommandPanels() { - this.panelsf = new File(this.getDataFolder() + File.separator + "panels"); - this.blockConfig = YamlConfiguration.loadConfiguration(new File(getDataFolder() + File.separator + "blocks.yml")); - } - public void onEnable() { Bukkit.getLogger().info("[CommandPanels] RockyHawk's CommandPanels v" + this.getDescription().getVersion() + " Plugin Loading..."); + this.panelsf = new File(this.getDataFolder() + File.separator + "panels"); + this.blockConfig = YamlConfiguration.loadConfiguration(new File(getDataFolder() + File.separator + "blocks.yml")); this.config = YamlConfiguration.loadConfiguration(new File(this.getDataFolder() + File.separator + "config.yml")); + //save the config.yml file File configFile = new File(this.getDataFolder() + File.separator + "config.yml"); if (!configFile.exists()) { @@ -361,6 +359,7 @@ public class CommandPanels extends JavaPlugin { return setpapi; } + @SuppressWarnings("deprecation") public String setCpPlaceholders(Player p, String str) { //replace nodes with PlaceHolders str = str.replaceAll("%cp-player-displayname%", p.getDisplayName()); @@ -395,6 +394,7 @@ public class CommandPanels extends JavaPlugin { } } + //DO placeholders for detection of other items in a panel //get material value from slot in current open inventory (panel) while (str.contains("%cp-material-")) { try { @@ -404,6 +404,10 @@ public class CommandPanels extends JavaPlugin { String material; try { material = p.getOpenInventory().getTopInventory().getItem(Integer.parseInt(matNumber)).getType().toString(); + if(legacy.isLegacy()){ + //add the ID to the end if it is legacy (eg, material:id) + material = material + ":" + p.getOpenInventory().getTopInventory().getItem(Integer.parseInt(matNumber)).getType().getId(); + } } catch (NullPointerException er) { material = "AIR"; } @@ -412,7 +416,6 @@ public class CommandPanels extends JavaPlugin { debug(ex); } } - //get stack amount from slot in current open inventory (panel) while (str.contains("%cp-stack-")) { try { @@ -430,6 +433,31 @@ public class CommandPanels extends JavaPlugin { debug(ex); } } + //is an item damaged + while (str.contains("%cp-damaged-")) { + try { + int start = str.indexOf("%cp-damaged-"); + int end = str.indexOf("%", str.indexOf("%cp-damaged-") + 1); + String matNumber = str.substring(start, end).replace("%cp-damaged-", "").replace("%", ""); + boolean damaged = false; + ItemStack itm = p.getOpenInventory().getTopInventory().getItem(Integer.parseInt(matNumber)); + try { + if(legacy.isLegacy()){ + if(itm.getType().getMaxDurability() != 0) { + damaged = (itm.getType().getMaxDurability() - itm.getDurability()) < itm.getType().getMaxDurability(); + } + }else { + Damageable itemDamage = (Damageable) itm.getItemMeta(); + damaged = itemDamage.hasDamage(); + } + } catch (NullPointerException er) { + damaged = false; + } + str = str.replace(str.substring(start, end) + "%", String.valueOf(damaged)); + }catch(Exception ex){ + debug(ex); + } + } //does %cp-random-MIN,MAX% while (str.contains("%cp-random-")) { diff --git a/src/me/rockyhawk/commandpanels/classresources/ItemCreation.java b/src/me/rockyhawk/commandpanels/classresources/ItemCreation.java index cb3060e..7d67c14 100644 --- a/src/me/rockyhawk/commandpanels/classresources/ItemCreation.java +++ b/src/me/rockyhawk/commandpanels/classresources/ItemCreation.java @@ -2,6 +2,9 @@ package me.rockyhawk.commandpanels.classresources; import me.arcaniax.hdb.api.HeadDatabaseAPI; import me.rockyhawk.commandpanels.CommandPanels; +import net.Indyuce.mmoitems.MMOItems; +import net.Indyuce.mmoitems.api.item.mmoitem.MMOItem; +import net.Indyuce.mmoitems.manager.ItemManager; import org.bukkit.*; import org.bukkit.block.banner.Pattern; import org.bukkit.block.banner.PatternType; @@ -44,9 +47,9 @@ public class ItemCreation { p.sendMessage(plugin.papi(plugin.tag + plugin.config.getString("config.format.error") + " material: could not load material!")); return null; } - ItemStack s; + ItemStack s = null; String mat; - String matskull; + String matraw; String skullname; //this will convert the %cp-player-online-1-find% into cps= NAME if (material.contains("%cp-player-online-")) { @@ -62,14 +65,19 @@ public class ItemCreation { } } try { + //can be changed mat = material.toUpperCase(); - matskull = material; + //cannot be changed (raw) + matraw = material; + //generate item stack normally + boolean normalCreation = true; + //name of head/skull if used skullname = "no skull"; short id = 0; if(itemSection.contains("ID")){ id = Short.parseShort(itemSection.getString("ID")); } - if (matskull.split("\\s")[0].toLowerCase().equals("cps=") || matskull.split("\\s")[0].toLowerCase().equals("cpo=")) { + if (matraw.split("\\s")[0].toLowerCase().equals("cps=") || matraw.split("\\s")[0].toLowerCase().equals("cpo=")) { skullname = p.getUniqueId().toString(); mat = plugin.getHeads.playerHeadString(); if(plugin.legacy.isLegacy()){ @@ -77,7 +85,7 @@ public class ItemCreation { } } - if (matskull.split("\\s")[0].toLowerCase().equals("hdb=")) { + if (matraw.split("\\s")[0].toLowerCase().equals("hdb=")) { skullname = "hdb"; mat = plugin.getHeads.playerHeadString(); if(plugin.legacy.isLegacy()){ @@ -85,12 +93,24 @@ public class ItemCreation { } } - s = new ItemStack(Objects.requireNonNull(Material.matchMaterial(mat)), 1,id); + //create custom MMOItems item + if(matraw.split("\\s")[0].toLowerCase().equals("mmo=") && plugin.getServer().getPluginManager().isPluginEnabled("MMOItems")){ + String itemType = matraw.split("\\s")[1]; + String itemID = matraw.split("\\s")[2]; + ItemManager itemManager = MMOItems.plugin.getItems(); + MMOItem mmoitem = itemManager.getMMOItem(MMOItems.plugin.getTypes().get(itemType), itemID); + s = mmoitem.newBuilder().build(); + normalCreation = false; + } - if (!skullname.equals("no skull") && !skullname.equals("hdb") && !matskull.split("\\s")[0].equalsIgnoreCase("cpo=")) { + if(normalCreation) { + s = new ItemStack(Objects.requireNonNull(Material.matchMaterial(mat)), 1, id); + } + + if (!skullname.equals("no skull") && !skullname.equals("hdb") && !matraw.split("\\s")[0].equalsIgnoreCase("cpo=")) { try { SkullMeta meta; - if (matskull.split("\\s")[1].equalsIgnoreCase("self")) { + if (matraw.split("\\s")[1].equalsIgnoreCase("self")) { //if cps= self meta = (SkullMeta) s.getItemMeta(); if(!plugin.legacy.isLegacy()) { @@ -105,22 +125,22 @@ public class ItemCreation { meta.setOwner(p.getName()); } s.setItemMeta(meta); - }else if (plugin.papiNoColour(p,matskull.split("\\s")[1]).length() <= 16) { + }else if (plugin.papiNoColour(p,matraw.split("\\s")[1]).length() <= 16) { //if cps= username - s = plugin.customHeads.getPlayerHead(plugin.papiNoColour(p,matskull.split("\\s")[1])); + s = plugin.customHeads.getPlayerHead(plugin.papiNoColour(p,matraw.split("\\s")[1])); } else { //custom data cps= base64 - s = plugin.customHeads.getCustomHead(plugin.papiNoColour(p,matskull.split("\\s")[1])); + s = plugin.customHeads.getCustomHead(plugin.papiNoColour(p,matraw.split("\\s")[1])); } } catch (Exception var32) { p.sendMessage(plugin.papi( plugin.tag + plugin.config.getString("config.format.error") + " head material: Could not load skull")); plugin.debug(var32); } } - if (!skullname.equals("no skull") && matskull.split("\\s")[0].equalsIgnoreCase("cpo=")) { + if (!skullname.equals("no skull") && matraw.split("\\s")[0].equalsIgnoreCase("cpo=")) { SkullMeta cpoMeta = (SkullMeta) s.getItemMeta(); assert cpoMeta != null; - cpoMeta.setOwningPlayer(Bukkit.getOfflinePlayer(Objects.requireNonNull(Bukkit.getPlayer(matskull.split("\\s")[1])).getUniqueId())); + cpoMeta.setOwningPlayer(Bukkit.getOfflinePlayer(Objects.requireNonNull(Bukkit.getPlayer(matraw.split("\\s")[1])).getUniqueId())); s.setItemMeta(cpoMeta); } if (skullname.equals("hdb")) { @@ -129,7 +149,7 @@ public class ItemCreation { api = new HeadDatabaseAPI(); try { - s = api.getItemHead(matskull.split("\\s")[1].trim()); + s = api.getItemHead(matraw.split("\\s")[1].trim()); } catch (Exception var22) { p.sendMessage(plugin.papi(plugin.tag + plugin.config.getString("config.format.error") + " hdb: could not load skull!")); plugin.debug(var22); @@ -138,6 +158,7 @@ public class ItemCreation { p.sendMessage(plugin.papi(plugin.tag + "Download HeadDatabaseHook from Spigot to use this feature!")); } } + if (itemSection.contains("map")) { /* This will do maps from custom images diff --git a/src/me/rockyhawk/commandpanels/commands/Commandpanelsreload.java b/src/me/rockyhawk/commandpanels/commands/Commandpanelsreload.java index 868668f..87f6d9c 100644 --- a/src/me/rockyhawk/commandpanels/commands/Commandpanelsreload.java +++ b/src/me/rockyhawk/commandpanels/commands/Commandpanelsreload.java @@ -77,18 +77,24 @@ public class Commandpanelsreload implements CommandExecutor { for (String[] panelName : plugin.panelNames) { tempFile = YamlConfiguration.loadConfiguration(new File(plugin.panelsf + File.separator + plugin.panelFiles.get(Integer.parseInt(panelName[1])))).getConfigurationSection("panels." + panelName[0]); + if(tempFile.contains("panelType")){ + if(tempFile.getStringList("panelType").contains("nocommandregister")){ + continue; + } + } + if(tempFile.contains("commands")){ List panelCommands = tempFile.getStringList("commands"); for(String command : panelCommands){ cmdCF.set("aliases." + command.split("\\s")[0],temp); } } + } - try { - cmdCF.save(commandsLoc); - } catch (IOException var10) { - Bukkit.getConsoleSender().sendMessage("[CommandPanels]" + ChatColor.RED + " WARNING: Could not register custom commands!"); - } + try { + cmdCF.save(commandsLoc); + } catch (IOException var10) { + Bukkit.getConsoleSender().sendMessage("[CommandPanels]" + ChatColor.RED + " WARNING: Could not register custom commands!"); } } } \ No newline at end of file diff --git a/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenGUI.java b/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenGUI.java index f716d83..c9d3108 100644 --- a/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenGUI.java +++ b/src/me/rockyhawk/commandpanels/openpanelsmanager/OpenGUI.java @@ -59,8 +59,9 @@ public class OpenGUI { } ItemStack s = plugin.itemCreate.makeItemFromConfig(Objects.requireNonNull(pconfig.getConfigurationSection("item." + item.split("\\s")[c] + section)), p, onOpen != 3, onOpen != 3); - //do itemType for placeable + //This is for CUSTOM ITEMS if(pconfig.contains("item." + item.split("\\s")[c] + section + ".itemType")) { + //this is for contents in the itemType section if (pconfig.getStringList("item." + item.split("\\s")[c] + section + ".itemType").contains("placeable") && onOpen == 0) { //keep item the same, onOpen == 0 meaning panel is refreshing i.setItem(Integer.parseInt(item.split("\\s")[c]), p.getOpenInventory().getItem(Integer.parseInt(item.split("\\s")[c])));