From ee91b2707987de5363907ac969bc94e2ab50b483 Mon Sep 17 00:00:00 2001 From: BuildTools <23562356riley@gmail.com> Date: Sun, 3 Nov 2019 20:26:14 -0500 Subject: [PATCH] Finish the success & destroy selection system. --- .../rpbookgui/EnchantConstructor.java | 2 +- .../rpbookgui/Events/InventoryClick.java | 145 +++++++---- .../puyodead1/rpbookgui/Inventories.java | 80 ++++-- .../rpbookgui/Utils/ItemBuilder.java | 227 ++++++++++++++++++ src/main/resources/config.yml | 1 + src/main/resources/plugin.yml | 1 + 6 files changed, 390 insertions(+), 66 deletions(-) create mode 100644 src/main/java/io/github/puyodead1/rpbookgui/Utils/ItemBuilder.java diff --git a/src/main/java/io/github/puyodead1/rpbookgui/EnchantConstructor.java b/src/main/java/io/github/puyodead1/rpbookgui/EnchantConstructor.java index 73028f8..dee82be 100644 --- a/src/main/java/io/github/puyodead1/rpbookgui/EnchantConstructor.java +++ b/src/main/java/io/github/puyodead1/rpbookgui/EnchantConstructor.java @@ -5,6 +5,7 @@ import org.bukkit.Bukkit; import org.bukkit.inventory.ItemStack; +import io.github.puyodead1.rpbookgui.Utils.RPBookGUIUtils; import me.randomhashtags.randompackage.addon.CustomEnchant; import me.randomhashtags.randompackage.addon.EnchantRarity; import me.randomhashtags.randompackage.api.CustomEnchants; @@ -29,7 +30,6 @@ public EnchantConstructor(CustomEnchant customEnchant, EnchantRarity enchantRari enchants.put(customEnchant.getIdentifier(), this); - // Bukkit.broadcastMessage("EnchantConstructor added: " + customEnchant.getIdentifier() + " " + enchantLevel); } public CustomEnchant getCustomEnchant() { diff --git a/src/main/java/io/github/puyodead1/rpbookgui/Events/InventoryClick.java b/src/main/java/io/github/puyodead1/rpbookgui/Events/InventoryClick.java index d64bc81..d39d20d 100644 --- a/src/main/java/io/github/puyodead1/rpbookgui/Events/InventoryClick.java +++ b/src/main/java/io/github/puyodead1/rpbookgui/Events/InventoryClick.java @@ -1,8 +1,8 @@ package io.github.puyodead1.rpbookgui.Events; import java.util.ArrayList; +import java.util.Map.Entry; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -19,9 +19,9 @@ import io.github.puyodead1.rpbookgui.RPBookGUI; import io.github.puyodead1.rpbookgui.Utils.RPBookGUIUtils; import io.github.puyodead1.rpbookgui.Utils.UMaterial; -import me.randomhashtags.randompackage.RandomPackageAPI; import me.randomhashtags.randompackage.addon.CustomEnchant; import me.randomhashtags.randompackage.addon.EnchantRarity; +import me.randomhashtags.randompackage.api.CustomEnchants; import me.randomhashtags.randompackage.util.RPStorage; public class InventoryClick implements Listener { @@ -43,31 +43,31 @@ public void InventoryClickEvent(InventoryClickEvent e) { if (ci.getItemMeta().getDisplayName() .equals(ItemStacks.SimpleCategoryItem().clone().getItemMeta().getDisplayName())) { - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.SimpleEnchants()); } else if (ci.getItemMeta().getDisplayName() .equals(ItemStacks.UniqueCategoryItem().clone().getItemMeta().getDisplayName())) { - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.UniqueEnchants()); } else if (ci.getItemMeta().getDisplayName() .equals(ItemStacks.EliteCategoryItem().clone().getItemMeta().getDisplayName())) { - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.EliteEnchants()); } else if (ci.getItemMeta().getDisplayName() .equals(ItemStacks.UltimateCategoryItem().clone().getItemMeta().getDisplayName())) { - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.UltimateEnchants()); } else if (ci.getItemMeta().getDisplayName() .equals(ItemStacks.LegendaryCategoryItem().clone().getItemMeta().getDisplayName())) { - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.LegendaryEnchants()); } else if (ci.getItemMeta().getDisplayName() .equals(ItemStacks.SoulCategoryItem().clone().getItemMeta().getDisplayName())) { - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.SoulEnchants()); } else if (ci.getItemMeta().getDisplayName() .equals(ItemStacks.HeroicCategoryItem().clone().getItemMeta().getDisplayName())) { - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.HeroicEnchants()); } } @@ -78,13 +78,13 @@ public void InventoryClickEvent(InventoryClickEvent e) { e.setCancelled(true); if (ci.getItemMeta().getDisplayName().equals(ItemStacks.Back().clone().getItemMeta().getDisplayName())) - player.closeInventory(); + player.getOpenInventory().close(); if (ci.getItemMeta().getDisplayName() .equals(ItemStacks.KeepMenuOpenSetting().clone().getItemMeta().getDisplayName())) { RPBookGUI.getPlugin.getConfig().set("settings.keepinvopen", !RPBookGUI.getPlugin.getConfig().getBoolean("settings.keepinvopen")); - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.Settings()); } if (ci.getItemMeta().getDisplayName() @@ -92,7 +92,7 @@ public void InventoryClickEvent(InventoryClickEvent e) { RPBookGUI.getPlugin.getConfig().set("settings.usepermissions", !RPBookGUI.getPlugin.getConfig().getBoolean("settings.usepermissions")); - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.Settings()); } } @@ -104,13 +104,13 @@ public void InventoryClickEvent(InventoryClickEvent e) { e.setCancelled(true); if (ci.getItemMeta().getDisplayName() .equals(ItemStacks.Back().clone().getItemMeta().getDisplayName())) { - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.MainGUI()); } if (e.getCurrentItem().getType().equals(UMaterial.match("BOOK").getMaterial())) { CustomEnchant ce = RPStorage.valueOfCustomEnchant( ChatColor.stripColor(e.getCurrentItem().getItemMeta().getDisplayName())); - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.Enchant(ce)); } } @@ -122,13 +122,13 @@ public void InventoryClickEvent(InventoryClickEvent e) { e.setCancelled(true); if (ci.getItemMeta().getDisplayName() .equals(ItemStacks.Back().clone().getItemMeta().getDisplayName())) { - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.MainGUI()); } if (e.getCurrentItem().getType().equals(UMaterial.match("BOOK").getMaterial())) { CustomEnchant ce = RPStorage.valueOfCustomEnchant( ChatColor.stripColor(e.getCurrentItem().getItemMeta().getDisplayName())); - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.Enchant(ce)); } } @@ -139,13 +139,13 @@ public void InventoryClickEvent(InventoryClickEvent e) { e.setCancelled(true); if (ci.getItemMeta().getDisplayName() .equals(ItemStacks.Back().clone().getItemMeta().getDisplayName())) { - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.MainGUI()); } if (e.getCurrentItem().getType().equals(UMaterial.match("BOOK").getMaterial())) { CustomEnchant ce = RPStorage.valueOfCustomEnchant( ChatColor.stripColor(e.getCurrentItem().getItemMeta().getDisplayName())); - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.Enchant(ce)); } } @@ -157,13 +157,13 @@ public void InventoryClickEvent(InventoryClickEvent e) { e.setCancelled(true); if (ci.getItemMeta().getDisplayName() .equals(ItemStacks.Back().clone().getItemMeta().getDisplayName())) { - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.MainGUI()); } if (e.getCurrentItem().getType().equals(UMaterial.match("BOOK").getMaterial())) { CustomEnchant ce = RPStorage.valueOfCustomEnchant( ChatColor.stripColor(e.getCurrentItem().getItemMeta().getDisplayName())); - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.Enchant(ce)); } } @@ -174,13 +174,13 @@ public void InventoryClickEvent(InventoryClickEvent e) { e.setCancelled(true); if (ci.getItemMeta().getDisplayName() .equals(ItemStacks.Back().clone().getItemMeta().getDisplayName())) { - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.MainGUI()); } if (e.getCurrentItem().getType().equals(UMaterial.match("BOOK").getMaterial())) { CustomEnchant ce = RPStorage.valueOfCustomEnchant( ChatColor.stripColor(e.getCurrentItem().getItemMeta().getDisplayName())); - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.Enchant(ce)); } } @@ -192,13 +192,13 @@ public void InventoryClickEvent(InventoryClickEvent e) { e.setCancelled(true); if (ci.getItemMeta().getDisplayName() .equals(ItemStacks.Back().clone().getItemMeta().getDisplayName())) { - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.MainGUI()); } if (e.getCurrentItem().getType().equals(UMaterial.match("BOOK").getMaterial())) { CustomEnchant ce = RPStorage.valueOfCustomEnchant( ChatColor.stripColor(e.getCurrentItem().getItemMeta().getDisplayName())); - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.Enchant(ce)); } } @@ -209,13 +209,13 @@ public void InventoryClickEvent(InventoryClickEvent e) { e.setCancelled(true); if (ci.getItemMeta().getDisplayName() .equals(ItemStacks.Back().clone().getItemMeta().getDisplayName())) { - player.closeInventory(); + player.getOpenInventory().close(); player.openInventory(Inventories.MainGUI()); } if (e.getCurrentItem().getType().equals(UMaterial.match("BOOK").getMaterial())) { - RPBookGUIUtils.SendDebugMessge(RPBookGUIUtils.FormatEnchantName(e.getCurrentItem())); - CustomEnchant ce = RPStorage.valueOfCustomEnchant(RPBookGUIUtils.FormatEnchantName(e.getCurrentItem())); - player.closeInventory(); + CustomEnchant ce = RPStorage + .valueOfCustomEnchant(RPBookGUIUtils.FormatEnchantName(e.getCurrentItem())); + player.getOpenInventory().close(); player.openInventory(Inventories.Enchant(ce)); } } @@ -229,7 +229,7 @@ public void InventoryClickEvent(InventoryClickEvent e) { if (e.getCurrentItem().getItemMeta().getDisplayName() .equals(ItemStacks.Back().getItemMeta().getDisplayName()) && e.getCurrentItem().getType().equals(ItemStacks.Back().clone().clone().getType())) { - player.closeInventory(); + player.getOpenInventory().close(); switch (RPStorage.valueOfEnchantRarity(enchant).getIdentifier()) { case "SIMPLE": player.openInventory(Inventories.SimpleEnchants()); @@ -286,22 +286,83 @@ public void InventoryClickEvent(InventoryClickEvent e) { .replace("{NAME}", ci.getItemMeta().getDisplayName()) .replace("{ITEM}", player.getItemInHand().getType().name()))); } else { - - for(EnchantConstructor ec : EnchantConstructor.getEnchants().values()) { - if(ec.getRevealItem() != ci) { - RPBookGUIUtils.SendDebugMessge("Removing EnchantConstructor: " + ec.getCustomEnchant().getIdentifier() + " " + ec.getEnchantLevel()); + + for (EnchantConstructor ec : EnchantConstructor.getEnchants().values()) { + if (!ChatColor.stripColor(ec.getRevealItem().getItemMeta().getDisplayName()) + .equals(ChatColor.stripColor(ci.getItemMeta().getDisplayName()))) { EnchantConstructor.getEnchants().remove(ec.getCustomEnchant().getIdentifier()); } } - - //player.closeInventory(); - //player.openInventory(Inventories.SuccessDestroySelection(ci)); - player.getInventory().addItem(ci); - if (!RPBookGUI.getPlugin.getConfig().getBoolean("settings.keep inventory open")) - player.closeInventory(); - player.sendMessage(RPBookGUIUtils - .ChatColor(RPBookGUI.getPlugin.getConfig().getString("messages.added book") - .replace("{NAME}", ci.getItemMeta().getDisplayName()))); + if (RPBookGUI.getPlugin.getConfig().getBoolean("settings.use success destroy configuration")) { + player.getOpenInventory().close(); + player.openInventory(Inventories.SuccessDestroySelection(ci)); + } else { + player.getInventory().addItem(ci); + if (!RPBookGUI.getPlugin.getConfig().getBoolean("settings.keep inventory open")) + player.getOpenInventory().close(); + player.sendMessage(RPBookGUIUtils + .ChatColor(RPBookGUI.getPlugin.getConfig().getString("messages.added book") + .replace("{NAME}", ci.getItemMeta().getDisplayName()))); + } + } + } + } + + if (invTitle.equals("Success & Destry Configuration")) { + e.setCancelled(true); + if (e.getCurrentItem().getType().equals(Material.BOOK)) { + player.getInventory().addItem(e.getCurrentItem().clone()); + player.getOpenInventory().close(); + } else { + // TODO: prevent negatives + String incrementType = ChatColor.stripColor(e.getCurrentItem().getItemMeta().getDisplayName()) + .substring(0, 1); + String[] split = ChatColor.stripColor(e.getCurrentItem().getItemMeta().getDisplayName()) + .substring(1).split(" "); + int amount = Integer.parseInt(split[0]); + String type = split[1].toLowerCase(); + + int currentSuccess = Integer.parseInt(ChatColor + .stripColor(e.getInventory().getItem(22).getItemMeta().getLore().get(0)).split("%")[0]); + int currentDestroy = Integer.parseInt(ChatColor + .stripColor(e.getInventory().getItem(22).getItemMeta().getLore().get(1)).split("%")[0]); + + Entry entry = EnchantConstructor.getEnchants().entrySet().iterator() + .next(); + CustomEnchant ce = RPStorage.valueOfCustomEnchant(entry.getKey()); + + if (type.equals("success")) { + if (incrementType.equals("+")) { + final int newAmount = (currentSuccess + amount); + ItemStack eb = CustomEnchants.getCustomEnchants().getRevealedItem(ce, + EnchantConstructor.getEnchants().get(ce.getIdentifier()).getEnchantLevel(), + newAmount > 0 ? newAmount : currentSuccess, currentDestroy, true, true); + e.getInventory().setItem(22, eb); + player.updateInventory(); + } else if (incrementType.equals("-")) { + final int newAmount = (currentSuccess - amount); + ItemStack eb = CustomEnchants.getCustomEnchants().getRevealedItem(ce, + EnchantConstructor.getEnchants().get(ce.getIdentifier()).getEnchantLevel(), + newAmount > 0 ? newAmount : currentSuccess, currentDestroy, true, true); + e.getInventory().setItem(22, eb); + player.updateInventory(); + } + } else if (type.equals("destroy")) { + if (incrementType.equals("+")) { + final int newAmount = (currentDestroy + amount); + ItemStack eb = CustomEnchants.getCustomEnchants().getRevealedItem(ce, + EnchantConstructor.getEnchants().get(ce.getIdentifier()).getEnchantLevel(), + currentSuccess, newAmount > 0 ? newAmount : currentDestroy, true, true); + e.getInventory().setItem(22, eb); + player.updateInventory(); + } else if (incrementType.equals("-")) { + final int newAmount = (currentDestroy - amount); + ItemStack eb = CustomEnchants.getCustomEnchants().getRevealedItem(ce, + EnchantConstructor.getEnchants().get(ce.getIdentifier()).getEnchantLevel(), + currentSuccess, newAmount > 0 ? newAmount : currentDestroy, true, true); + e.getInventory().setItem(22, eb); + player.updateInventory(); + } } } } diff --git a/src/main/java/io/github/puyodead1/rpbookgui/Inventories.java b/src/main/java/io/github/puyodead1/rpbookgui/Inventories.java index 2c0f34d..16d4c36 100644 --- a/src/main/java/io/github/puyodead1/rpbookgui/Inventories.java +++ b/src/main/java/io/github/puyodead1/rpbookgui/Inventories.java @@ -22,16 +22,17 @@ import org.bukkit.Material; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import io.github.puyodead1.rpbookgui.Utils.ItemBuilder; import io.github.puyodead1.rpbookgui.Utils.RPBookGUIUtils; -import me.randomhashtags.randompackage.RandomPackageAPI; import me.randomhashtags.randompackage.addon.CustomEnchant; import me.randomhashtags.randompackage.addon.EnchantRarity; import me.randomhashtags.randompackage.api.CustomEnchants; import me.randomhashtags.randompackage.util.RPStorage; public class Inventories { - + // TODO: get the round method working, round to closest multiple of 9 depending // on the number of enchants. @@ -299,22 +300,17 @@ public static Inventory HeroicEnchants(ItemStack itemApplyTo) { inv.setItem(53, ItemStacks.Back().clone()); return inv; } - + public static Inventory Enchant(CustomEnchant ce) { EnchantRarity rarity = RPStorage.valueOfEnchantRarity(ce); - RPBookGUIUtils.SendDebugMessge("CE: " + ce.toString()); - RPBookGUIUtils.SendDebugMessge("Name: " + ce.getName()); - RPBookGUIUtils.SendDebugMessge("Colors: " + rarity.getNameColors()); Inventory inv = Bukkit.createInventory(null, 18, rarity.getNameColors() + ce.getName()); int x = 0; for (int i = 1; i < ce.getMaxLevel() + 1; i++) { ItemStack is = CustomEnchants.getCustomEnchants().getRevealedItem(ce, i, 100, 0, true, true).clone(); new EnchantConstructor(ce, rarity, i, 0, 0); - RPBookGUIUtils.SendDebugMessge("EnchantConstructor size: " + EnchantConstructor.getEnchants().size()); inv.setItem(x, is); x++; } - RPBookGUIUtils.SendDebugMessge("Final EnchantConstructor size: " + EnchantConstructor.getEnchants().size()); inv.setItem(17, ItemStacks.Back().clone()); return inv; } @@ -341,25 +337,63 @@ public static Inventory Settings() { inv.setItem(22, ItemStacks.Back().clone()); return inv; } - + public static Inventory SuccessDestroySelection(ItemStack book) { - Inventory inv = Bukkit.createInventory(null, 54, "Success & Destry Configuration"); + Inventory inv = Bukkit.createInventory(null, 45, "Success & Destry Configuration"); CustomEnchant ce = RPStorage.valueOfCustomEnchant(book); - // slot 10 - increase success - // slot 28 - decrease success - // slot 21 - book - - ItemStack addSuccess = new ItemStack(Material.GREEN_WOOL); - ItemStack removeSuccess = new ItemStack(Material.RED_WOOL); - - inv.setItem(10, addSuccess); -// inv.setItem(21, CustomEnchants.getCustomEnchants().getRevealedItem(ce, EnchantConstructor.getEnchants().get(ce.getName()).getEnchantLevel(), 0, 0, true, true)); - inv.setItem(28, removeSuccess); + // slot 10-12 - increase success + // slot 14-16 - increase destroy + // slot 28-30 - decrease success + // slot 32-34 - decrease destroy + // slot 22 - book + + // Success controls + ItemStack as1 = new ItemBuilder(Material.GREEN_WOOL).setName(RPBookGUIUtils.ChatColor("&a+1 Success")) + .toItemStack(); + ItemStack rs1 = new ItemBuilder(Material.RED_WOOL).setName(RPBookGUIUtils.ChatColor("&c-1 Success")) + .toItemStack(); + ItemStack as5 = new ItemBuilder(Material.GREEN_WOOL).setName(RPBookGUIUtils.ChatColor("&a+5 Success")) + .toItemStack(); + ItemStack rs5 = new ItemBuilder(Material.RED_WOOL).setName(RPBookGUIUtils.ChatColor("&c-5 Success")) + .toItemStack(); + ItemStack as10 = new ItemBuilder(Material.GREEN_WOOL).setName(RPBookGUIUtils.ChatColor("&a+10 Success")) + .toItemStack(); + ItemStack rs10 = new ItemBuilder(Material.RED_WOOL).setName(RPBookGUIUtils.ChatColor("&c-10 Success")) + .toItemStack(); + + // Destroy controls + ItemStack ad1 = new ItemBuilder(Material.GREEN_WOOL).setName(RPBookGUIUtils.ChatColor("&a+1 Destroy")) + .toItemStack(); + ItemStack rd1 = new ItemBuilder(Material.RED_WOOL).setName(RPBookGUIUtils.ChatColor("&c-1 Destroy")) + .toItemStack(); + ItemStack ad5 = new ItemBuilder(Material.GREEN_WOOL).setName(RPBookGUIUtils.ChatColor("&a+5 Destroy")) + .toItemStack(); + ItemStack rd5 = new ItemBuilder(Material.RED_WOOL).setName(RPBookGUIUtils.ChatColor("&c-5 Destroy")) + .toItemStack(); + ItemStack ad10 = new ItemBuilder(Material.GREEN_WOOL).setName(RPBookGUIUtils.ChatColor("&a+10 Destroy")) + .toItemStack(); + ItemStack rd10 = new ItemBuilder(Material.RED_WOOL).setName(RPBookGUIUtils.ChatColor("&c-10 Destroy")) + .toItemStack(); + + inv.setItem(10, as1); + inv.setItem(11, as5); + inv.setItem(12, as10); - for(EnchantConstructor ec : EnchantConstructor.getEnchants().values()) { - Bukkit.broadcastMessage(ec.getCustomEnchant().getIdentifier() + " " + ec.getEnchantLevel()); - } + inv.setItem(14, ad10); + inv.setItem(15, ad5); + inv.setItem(16, ad1); + + inv.setItem(22, CustomEnchants.getCustomEnchants().getRevealedItem(ce, + EnchantConstructor.getEnchants().get(ce.getIdentifier()).getEnchantLevel(), 0, 0, true, true)); + + inv.setItem(28, rs1); + inv.setItem(29, rs5); + inv.setItem(30, rs10); + inv.setItem(32, rd10); + inv.setItem(33, rd5); + inv.setItem(34, rd1); + return inv; } } diff --git a/src/main/java/io/github/puyodead1/rpbookgui/Utils/ItemBuilder.java b/src/main/java/io/github/puyodead1/rpbookgui/Utils/ItemBuilder.java new file mode 100644 index 0000000..2b0c577 --- /dev/null +++ b/src/main/java/io/github/puyodead1/rpbookgui/Utils/ItemBuilder.java @@ -0,0 +1,227 @@ +package io.github.puyodead1.rpbookgui.Utils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import org.bukkit.Color; +import org.bukkit.DyeColor; +import org.bukkit.Material; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.LeatherArmorMeta; +import org.bukkit.inventory.meta.SkullMeta; + +/** + * Easily create itemstacks, without messing your hands. + * Note that if you do use this in one of your projects, leave this notice. + * Please do credit me if you do use this in one of your projects. + * @author NonameSL + */ +public class ItemBuilder { + private ItemStack is; + /** + * Create a new ItemBuilder from scratch. + * @param m The material to create the ItemBuilder with. + */ + public ItemBuilder(Material m){ + this(m, 1); + } + /** + * Create a new ItemBuilder over an existing itemstack. + * @param is The itemstack to create the ItemBuilder over. + */ + public ItemBuilder(ItemStack is){ + this.is=is; + } + /** + * Create a new ItemBuilder from scratch. + * @param m The material of the item. + * @param amount The amount of the item. + */ + public ItemBuilder(Material m, int amount){ + is= new ItemStack(m, amount); + } + /** + * Create a new ItemBuilder from scratch. + * @param m The material of the item. + * @param amount The amount of the item. + * @param durability The durability of the item. + */ + public ItemBuilder(Material m, int amount, byte durability){ + is = new ItemStack(m, amount, durability); + } + /** + * Clone the ItemBuilder into a new one. + * @return The cloned instance. + */ + public ItemBuilder clone(){ + return new ItemBuilder(is); + } + /** + * Change the durability of the item. + * @param dur The durability to set it to. + */ + public ItemBuilder setDurability(short dur){ + is.setDurability(dur); + return this; + } + /** + * Set the displayname of the item. + * @param name The name to change it to. + */ + public ItemBuilder setName(String name){ + ItemMeta im = is.getItemMeta(); + im.setDisplayName(name); + is.setItemMeta(im); + return this; + } + /** + * Add an unsafe enchantment. + * @param ench The enchantment to add. + * @param level The level to put the enchant on. + */ + public ItemBuilder addUnsafeEnchantment(Enchantment ench, int level){ + is.addUnsafeEnchantment(ench, level); + return this; + } + /** + * Remove a certain enchant from the item. + * @param ench The enchantment to remove + */ + public ItemBuilder removeEnchantment(Enchantment ench){ + is.removeEnchantment(ench); + return this; + } + /** + * Set the skull owner for the item. Works on skulls only. + * @param owner The name of the skull's owner. + */ + public ItemBuilder setSkullOwner(String owner){ + try{ + SkullMeta im = (SkullMeta)is.getItemMeta(); + im.setOwner(owner); + is.setItemMeta(im); + }catch(ClassCastException expected){} + return this; + } + /** + * Add an enchant to the item. + * @param ench The enchant to add + * @param level The level + */ + public ItemBuilder addEnchant(Enchantment ench, int level){ + ItemMeta im = is.getItemMeta(); + im.addEnchant(ench, level, true); + is.setItemMeta(im); + return this; + } + /** + * Add multiple enchants at once. + * @param enchantments The enchants to add. + */ + public ItemBuilder addEnchantments(Map enchantments){ + is.addEnchantments(enchantments); + return this; + } + /** + * Sets infinity durability on the item by setting the durability to Short.MAX_VALUE. + */ + public ItemBuilder setInfinityDurability(){ + is.setDurability(Short.MAX_VALUE); + return this; + } + /** + * Re-sets the lore. + * @param lore The lore to set it to. + */ + public ItemBuilder setLore(String... lore){ + ItemMeta im = is.getItemMeta(); + im.setLore(Arrays.asList(lore)); + is.setItemMeta(im); + return this; + } + /** + * Re-sets the lore. + * @param lore The lore to set it to. + */ + public ItemBuilder setLore(List lore) { + ItemMeta im = is.getItemMeta(); + im.setLore(lore); + is.setItemMeta(im); + return this; + } + /** + * Remove a lore line. + * @param lore The lore to remove. + */ + public ItemBuilder removeLoreLine(String line){ + ItemMeta im = is.getItemMeta(); + List lore = new ArrayList<>(im.getLore()); + if(!lore.contains(line))return this; + lore.remove(line); + im.setLore(lore); + is.setItemMeta(im); + return this; + } + /** + * Remove a lore line. + * @param index The index of the lore line to remove. + */ + public ItemBuilder removeLoreLine(int index){ + ItemMeta im = is.getItemMeta(); + List lore = new ArrayList<>(im.getLore()); + if(index<0||index>lore.size())return this; + lore.remove(index); + im.setLore(lore); + is.setItemMeta(im); + return this; + } + /** + * Add a lore line. + * @param line The lore line to add. + */ + public ItemBuilder addLoreLine(String line){ + ItemMeta im = is.getItemMeta(); + List lore = new ArrayList<>(); + if(im.hasLore())lore = new ArrayList<>(im.getLore()); + lore.add(line); + im.setLore(lore); + is.setItemMeta(im); + return this; + } + /** + * Add a lore line. + * @param line The lore line to add. + * @param pos The index of where to put it. + */ + public ItemBuilder addLoreLine(String line, int pos){ + ItemMeta im = is.getItemMeta(); + List lore = new ArrayList<>(im.getLore()); + lore.set(pos, line); + im.setLore(lore); + is.setItemMeta(im); + return this; + } + /** + * Sets the armor color of a leather armor piece. Works only on leather armor pieces. + * @param color The color to set it to. + */ + public ItemBuilder setLeatherArmorColor(Color color){ + try{ + LeatherArmorMeta im = (LeatherArmorMeta)is.getItemMeta(); + im.setColor(color); + is.setItemMeta(im); + }catch(ClassCastException expected){} + return this; + } + /** + * Retrieves the itemstack from the ItemBuilder. + * @return The itemstack created/modified by the ItemBuilder instance. + */ + public ItemStack toItemStack(){ + return is; + } +} \ No newline at end of file diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 0413314..751e007 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -2,6 +2,7 @@ settings: keep inventory open: true use permissions: true try to apply to item in hand: true + use success destroy configuration: true messages: no permission: "&7[&dRPBookGUI&7] &cYou don't have permission for that!" diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 66f8bf3..048dfcc 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,6 +3,7 @@ version: 2.9.7 author: Puyodead1 main: io.github.puyodead1.rpbookgui.RPBookGUI depend: [RandomPackage] +api-version: 1.13 commands: bookgui: description: Open the main menu