From 30724148687b6fa7224440baa00893a53a089fbe Mon Sep 17 00:00:00 2001 From: TinyTank800 Date: Thu, 11 Apr 2024 12:41:26 -0700 Subject: [PATCH] Buy command tag rework. Give-item not supports normal mats. --- .../commandtags/tags/economy/BuyItemTags.java | 30 ++++++++++++------- .../commandtags/tags/standard/ItemTags.java | 26 ++++++++++++---- .../InventorySaver.java | 2 +- 3 files changed, 41 insertions(+), 17 deletions(-) diff --git a/src/me/rockyhawk/commandpanels/commandtags/tags/economy/BuyItemTags.java b/src/me/rockyhawk/commandpanels/commandtags/tags/economy/BuyItemTags.java index e606e7e..9ebbdd2 100644 --- a/src/me/rockyhawk/commandpanels/commandtags/tags/economy/BuyItemTags.java +++ b/src/me/rockyhawk/commandpanels/commandtags/tags/economy/BuyItemTags.java @@ -13,7 +13,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; -import java.util.Objects; +import java.util.*; public class BuyItemTags implements Listener { CommandPanels plugin; @@ -25,13 +25,13 @@ public class BuyItemTags implements Listener { public void commandTag(CommandTagEvent e){ if(e.name.equalsIgnoreCase("buy=")){ e.commandTagUsed(); - //if player uses buy= it will be eg. buy= + //if player uses buy= it will be eg. buy= [id:#] try { if (plugin.econ != null) { if (plugin.econ.getBalance(e.p) >= Double.parseDouble(e.args[0])) { plugin.econ.withdrawPlayer(e.p, Double.parseDouble(e.args[0])); plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.currency.success")).replaceAll("%cp-args%", e.args[0])); - giveItem(e.p, e.args); + giveItem(e.p, e); } else { plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.currency.failure"))); @@ -47,7 +47,7 @@ public class BuyItemTags implements Listener { } if(e.name.equalsIgnoreCase("tokenbuy=")) { e.commandTagUsed(); - //if player uses tokenbuy= it will be eg. tokenbuy= + //if player uses tokenbuy= it will be eg. tokenbuy= [id:#] try { if (plugin.getServer().getPluginManager().isPluginEnabled("TokenManager")) { final TokenManager api = (TokenManager) Bukkit.getServer().getPluginManager().getPlugin("TokenManager"); @@ -58,7 +58,7 @@ public class BuyItemTags implements Listener { plugin.tex.sendMessage(e.p, Objects.requireNonNull(plugin.config.getString("purchase.tokens.success")).replaceAll("%cp-args%", e.args[0])); plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.tokens.success")).replaceAll("%cp-args%", e.args[0])); - giveItem(e.p,e.args); + giveItem(e.p, e); } else { plugin.tex.sendString(e.panel, PanelPosition.Top, e.p, Objects.requireNonNull(plugin.config.getString("purchase.tokens.failure"))); @@ -74,17 +74,27 @@ public class BuyItemTags implements Listener { } @SuppressWarnings("deprecation") - private void giveItem(Player p, String[] args){ + private void giveItem(Player p, CommandTagEvent e){ + String[] args = e.args; //legacy ID byte id = 0; if(plugin.legacy.LOCAL_VERSION.lessThanOrEqualTo(MinecraftVersions.v1_15)) { - for (String argsTemp : args) { - if (argsTemp.startsWith("id:")) { - id = Byte.parseByte(argsTemp.replace("id:", "")); + for (String arg : args) { + if (arg.startsWith("id:")) { + id = Byte.parseByte(arg.replace("id:", "")); break; } } } - plugin.inventorySaver.addItem(p,new ItemStack(Objects.requireNonNull(Material.matchMaterial(args[1])), Integer.parseInt(args[2]),id)); + + ItemStack buyItem; + if (Material.matchMaterial(args[1]) == null) { + buyItem = plugin.itemCreate.makeCustomItemFromConfig(e.panel, PanelPosition.Top, e.panel.getConfig().getConfigurationSection("custom-item." + args[1]), e.p, true, true, false); + buyItem.setAmount(Integer.parseInt(args[2])); + } else { + buyItem = new ItemStack(Objects.requireNonNull(Material.matchMaterial(args[1])), Integer.parseInt(args[2]), id); + } + + plugin.inventorySaver.addItem(p,buyItem); } } diff --git a/src/me/rockyhawk/commandpanels/commandtags/tags/standard/ItemTags.java b/src/me/rockyhawk/commandpanels/commandtags/tags/standard/ItemTags.java index 2a6717a..0fc9c4e 100644 --- a/src/me/rockyhawk/commandpanels/commandtags/tags/standard/ItemTags.java +++ b/src/me/rockyhawk/commandpanels/commandtags/tags/standard/ItemTags.java @@ -3,6 +3,7 @@ package me.rockyhawk.commandpanels.commandtags.tags.standard; import me.rockyhawk.commandpanels.CommandPanels; import me.rockyhawk.commandpanels.commandtags.CommandTagEvent; import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition; +import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.enchantments.Enchantment; import org.bukkit.event.EventHandler; @@ -22,14 +23,27 @@ public class ItemTags implements Listener { public void commandTag(CommandTagEvent e){ if(e.name.equalsIgnoreCase("give-item=")){ e.commandTagUsed(); - ItemStack itm = plugin.itemCreate.makeCustomItemFromConfig(null,e.pos,e.panel.getConfig().getConfigurationSection("custom-item." + e.args[0]), e.p, true, true, false); - if(e.args.length == 2){ - try{ - itm.setAmount(Integer.parseInt(e.args[1])); - } catch (Exception err){ - plugin.debug(err,e.p); + ItemStack itm; + if (Material.matchMaterial(e.args[0]) == null) { + itm = plugin.itemCreate.makeCustomItemFromConfig(null,e.pos,e.panel.getConfig().getConfigurationSection("custom-item." + e.args[0]), e.p, true, true, false); + if(e.args.length == 2){ + try{ + itm.setAmount(Integer.parseInt(e.args[1])); + } catch (Exception err){ + plugin.debug(err,e.p); + } + } + } else { + itm = new ItemStack(Objects.requireNonNull(Material.matchMaterial(e.args[0]))); + if(e.args.length == 2){ + try{ + itm.setAmount(Integer.parseInt(e.args[1])); + } catch (Exception err){ + plugin.debug(err,e.p); + } } } + plugin.inventorySaver.addItem(e.p,itm); return; } diff --git a/src/me/rockyhawk/commandpanels/playerinventoryhandler/InventorySaver.java b/src/me/rockyhawk/commandpanels/playerinventoryhandler/InventorySaver.java index 16569cf..ab6214c 100644 --- a/src/me/rockyhawk/commandpanels/playerinventoryhandler/InventorySaver.java +++ b/src/me/rockyhawk/commandpanels/playerinventoryhandler/InventorySaver.java @@ -143,7 +143,7 @@ public class InventorySaver implements Listener { p.getInventory().addItem(item); return; } - }else { + } else { List cont = new ArrayList<>(Arrays.asList(getNormalInventory(p))); boolean found = false; for (int i = 0; 36 > i; i++){