diff --git a/src/me/rockyhawk/commandpanels/commandtags/tags/standard/ItemTags.java b/src/me/rockyhawk/commandpanels/commandtags/tags/standard/ItemTags.java index 32f4b65..bbb4c25 100644 --- a/src/me/rockyhawk/commandpanels/commandtags/tags/standard/ItemTags.java +++ b/src/me/rockyhawk/commandpanels/commandtags/tags/standard/ItemTags.java @@ -3,10 +3,15 @@ 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.NamespacedKey; +import org.bukkit.enchantments.Enchantment; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; +import java.util.Objects; +import java.util.Set; + public class ItemTags implements Listener { CommandPanels plugin; public ItemTags(CommandPanels pl) { @@ -34,6 +39,82 @@ public class ItemTags implements Listener { }else{ e.p.getInventory().setItem(Integer.parseInt(e.args[1]), s); } + return; + } + if(e.name.equalsIgnoreCase("enchant=")){ + e.commandTagUsed(); + //if player uses enchant= [slot] [position] [ADD/REMOVE/CLEAR] [enchant] it will add/remove/clear the enchants of the selected slot + PanelPosition position = PanelPosition.valueOf(e.args[1]); + ItemStack EditItem; + if(position == PanelPosition.Top) { + EditItem = e.p.getOpenInventory().getTopInventory().getItem(Integer.parseInt(e.args[0])); + }else if(position == PanelPosition.Middle) { + EditItem = e.p.getInventory().getItem(Integer.parseInt(e.args[0])+9); + }else{ + EditItem = e.p.getInventory().getItem(Integer.parseInt(e.args[0])); + } + + assert EditItem != null; + + if(e.args[2].equalsIgnoreCase("add")){ + try{ + Enchantment enchant = Enchantment.getByKey(NamespacedKey.minecraft(e.args[3].toLowerCase())); + assert enchant != null; + EditItem.addEnchantment(enchant, Integer.parseInt(e.args[4])); + return; + } catch (Exception err){ + //Some sort of message for player or console? + } + } + + if(e.args[2].equalsIgnoreCase("remove")){ + try{ + Enchantment enchant = Enchantment.getByKey(NamespacedKey.minecraft(e.args[3].toLowerCase())); + assert enchant != null; + EditItem.removeEnchantment(enchant); + return; + } catch (Exception err){ + //Some sort of message for player or console? + } + } + + if(e.args[2].equalsIgnoreCase("clear")){ + try{ + Set Enchants = EditItem.getEnchantments().keySet(); + for(Enchantment enchant : Enchants){ + EditItem.removeEnchantment(enchant); + } + } catch (Exception err){ + //Some sort of message for player or console? + } + } + + return; + } + if(e.name.equalsIgnoreCase("setcustomdata=")){ + e.commandTagUsed(); + //if player uses setcustomdata= [slot] [position] [data] it will change the custom model data of the item + PanelPosition position = PanelPosition.valueOf(e.args[1]); + ItemStack EditItem; + if(position == PanelPosition.Top) { + EditItem = e.p.getOpenInventory().getTopInventory().getItem(Integer.parseInt(e.args[0])); + }else if(position == PanelPosition.Middle) { + EditItem = e.p.getInventory().getItem(Integer.parseInt(e.args[0])+9); + }else{ + EditItem = e.p.getInventory().getItem(Integer.parseInt(e.args[0])); + } + + assert EditItem != null; + + try{ + if(EditItem.hasItemMeta()){ + Objects.requireNonNull(EditItem.getItemMeta()).setCustomModelData(Integer.valueOf(e.args[2])); + } + } catch (Exception err){ + //Some sort of message for player or console? + } + + return; } } }