Search in sources :

Example 86 with Button

use of me.RockinChaos.itemjoin.utils.interfaces.Button in project ItemJoin by RockinChaos.

the class Menu method modifyLorePane.

/**
 * Opens the Pane for the Player.
 * This Pane is for modifying animated lore.
 *
 * @param player - The Player to have the Pane opened.
 * @param itemMap - The ItemMap currently being modified.
 */
private static void modifyLorePane(final Player player, final ItemMap itemMap, final int position) {
    Interface modifyLorePane = new Interface(false, 2, GUIName, player);
    SchedulerUtils.runAsync(() -> {
        modifyLorePane.addButton(new Button(fillerPaneGItem), 3);
        modifyLorePane.addButton(new Button(ItemHandler.getItem("WRITABLE_BOOK", 1, false, "&a&l&nLore", "&7", "&7*Change the animated lore line.", "&9&lLore: &a" + ItemHandler.cutDelay(itemMap.getDynamicLores().get(position))), event -> {
            player.closeInventory();
            String[] placeHolders = LanguageAPI.getLang(false).newString();
            placeHolders[16] = "ANIMATED LORE";
            placeHolders[15] = "&bThis is line 1, &cThis is line 2, &6This is line 3";
            LanguageAPI.getLang(false).sendLangMessage("commands.menu.inputType", player, placeHolders);
            LanguageAPI.getLang(false).sendLangMessage("commands.menu.inputExample", player, placeHolders);
        }, event -> {
            List<List<String>> lores = itemMap.getDynamicLores();
            lores.set(position, StringUtils.split("<delay:" + StringUtils.returnInteger(ItemHandler.getDelayFormat(lores.get(position).get(0))) + ">" + ChatColor.stripColor(event.getMessage())));
            itemMap.setDynamicLores(lores);
            String[] placeHolders = LanguageAPI.getLang(false).newString();
            placeHolders[16] = "ANIMATED LORE";
            LanguageAPI.getLang(false).sendLangMessage("commands.menu.inputSet", player, placeHolders);
            modifyLorePane(event.getPlayer(), itemMap, position);
        }));
        modifyLorePane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "CLOCK" : "347"), 1, false, "&e&l&nDuration", "&7", "&7*Change the duration of the animation.", "&9&lAnimation Ticks: &a" + StringUtils.returnInteger(ItemHandler.getDelayFormat(itemMap.getDynamicLores().get(position).get(0)))), event -> durationLorePane(player, itemMap, position, false, "")));
        modifyLorePane.addButton(new Button(ItemHandler.getItem("REDSTONE", 1, false, "&c&l&nDelete", "&7", "&7*Delete this animated lore."), event -> {
            List<List<String>> lores = itemMap.getDynamicLores();
            lores.remove(position);
            itemMap.setDynamicLores(lores);
            animatedLorePane(player, itemMap);
        }));
        modifyLorePane.addButton(new Button(fillerPaneGItem), 3);
        modifyLorePane.addButton(new Button(ItemHandler.getItem("BARRIER", 1, false, "&c&l&nReturn", "&7", "&7*Returns you to the animated lore menu."), event -> animatedLorePane(player, itemMap)));
        modifyLorePane.addButton(new Button(fillerPaneBItem), 7);
        modifyLorePane.addButton(new Button(ItemHandler.getItem("BARRIER", 1, false, "&c&l&nReturn", "&7", "&7*Returns you to the animated lore menu."), event -> animatedLorePane(player, itemMap)));
    });
    modifyLorePane.open(player);
}
Also used : ItemHandler(me.RockinChaos.itemjoin.handlers.ItemHandler) PatternType(org.bukkit.block.banner.PatternType) Enchantment(org.bukkit.enchantments.Enchantment) GameProfile(com.mojang.authlib.GameProfile) Player(org.bukkit.entity.Player) LanguageAPI(me.RockinChaos.itemjoin.utils.api.LanguageAPI) Inventory(org.bukkit.inventory.Inventory) DependAPI(me.RockinChaos.itemjoin.utils.api.DependAPI) World(org.bukkit.World) Map(java.util.Map) PlayerInventory(org.bukkit.inventory.PlayerInventory) Material(org.bukkit.Material) FireworkEffectMeta(org.bukkit.inventory.meta.FireworkEffectMeta) Bukkit(org.bukkit.Bukkit) Action(me.RockinChaos.itemjoin.item.ItemCommand.Action) CommandSender(org.bukkit.command.CommandSender) UUID(java.util.UUID) Sound(org.bukkit.Sound) ItemMap(me.RockinChaos.itemjoin.item.ItemMap) EntityType(org.bukkit.entity.EntityType) FireworkMeta(org.bukkit.inventory.meta.FireworkMeta) ItemUtilities(me.RockinChaos.itemjoin.item.ItemUtilities) ItemStack(org.bukkit.inventory.ItemStack) List(java.util.List) SchedulerUtils(me.RockinChaos.itemjoin.utils.SchedulerUtils) StringUtils(me.RockinChaos.itemjoin.utils.StringUtils) LeatherArmorMeta(org.bukkit.inventory.meta.LeatherArmorMeta) ItemJoin(me.RockinChaos.itemjoin.ItemJoin) PotionEffectType(org.bukkit.potion.PotionEffectType) Button(me.RockinChaos.itemjoin.utils.interfaces.Button) ItemMeta(org.bukkit.inventory.meta.ItemMeta) Pattern(org.bukkit.block.banner.Pattern) BookMeta(org.bukkit.inventory.meta.BookMeta) Interface(me.RockinChaos.itemjoin.utils.interfaces.Interface) HashMap(java.util.HashMap) HeadDatabaseAPI(me.arcaniax.hdb.api.HeadDatabaseAPI) BannerMeta(org.bukkit.inventory.meta.BannerMeta) ServerUtils(me.RockinChaos.itemjoin.utils.ServerUtils) ArrayList(java.util.ArrayList) FileConfiguration(org.bukkit.configuration.file.FileConfiguration) Environment(org.bukkit.World.Environment) Property(com.mojang.authlib.properties.Property) ConfigHandler(me.RockinChaos.itemjoin.handlers.ConfigHandler) Color(org.bukkit.Color) Attribute(org.bukkit.attribute.Attribute) Type(org.bukkit.FireworkEffect.Type) PlayerHandler(me.RockinChaos.itemjoin.handlers.PlayerHandler) LegacyAPI(me.RockinChaos.itemjoin.utils.api.LegacyAPI) DecimalFormat(java.text.DecimalFormat) Field(java.lang.reflect.Field) File(java.io.File) PotionEffect(org.bukkit.potion.PotionEffect) CommandSequence(me.RockinChaos.itemjoin.item.ItemCommand.CommandSequence) YamlConfiguration(org.bukkit.configuration.file.YamlConfiguration) ItemCommand(me.RockinChaos.itemjoin.item.ItemCommand) ChatColor(org.bukkit.ChatColor) DyeColor(org.bukkit.DyeColor) Button(me.RockinChaos.itemjoin.utils.interfaces.Button) List(java.util.List) ArrayList(java.util.ArrayList) Interface(me.RockinChaos.itemjoin.utils.interfaces.Interface)

Example 87 with Button

use of me.RockinChaos.itemjoin.utils.interfaces.Button in project ItemJoin by RockinChaos.

the class Menu method slotPane.

/**
 * Opens the Pane for the Player.
 * This Pane is for setting the an items slot.
 *
 * @param player - The Player to have the Pane opened.
 * @param itemMap - The ItemMap currently being modified.
 * @param stage - The stage in the modification.
 * @param type - The type of slot being defined, single or multiple.
 */
private static void slotPane(final Player player, final ItemMap itemMap, final int stage, final int type) {
    Interface slotPane = new Interface(false, 6, GUIName, player);
    Interface craftingPane = new Interface(false, 4, GUIName, player);
    SchedulerUtils.runAsync(() -> {
        craftingPane.addButton(new Button(fillerPaneGItem), 3);
        craftingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "CRAFTING_TABLE" : "58"), 1, (type > 0 ? StringUtils.containsValue(itemMap.getMultipleSlots(), "CRAFTING[1]") : false), "&9&lSlot: &7&lCRAFTING&a&l[1]", "&7", "&7*Click to set the custom item", "&7to appear in the &lCRAFTING &7slot &a&l[1]&7", (type > 0 && StringUtils.containsValue(itemMap.getMultipleSlots(), "CRAFTING[1]") ? "&9&lENABLED: &aTRUE" : "")), event -> {
            if (type == 0) {
                itemMap.setSlot("CRAFTING[1]");
                itemMap.setMultipleSlots(new ArrayList<String>());
                creatingPane(player, itemMap);
            } else {
                if (StringUtils.containsValue(itemMap.getMultipleSlots(), "CRAFTING[1]")) {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.remove("CRAFTING[1]");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 2);
                } else {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.add("CRAFTING[1]");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 2);
                }
            }
        }));
        craftingPane.addButton(new Button(fillerPaneGItem));
        craftingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "CRAFTING_TABLE" : "58"), 2, (type > 0 ? StringUtils.containsValue(itemMap.getMultipleSlots(), "CRAFTING[2]") : false), "&9&lSlot: &7&lCRAFTING&a&l[2]", "&7", "&7*Click to set the custom item", "&7to appear in the &lCRAFTING &7slot &a&l[2]&7", (type > 0 && StringUtils.containsValue(itemMap.getMultipleSlots(), "CRAFTING[2]") ? "&9&lENABLED: &aTRUE" : "")), event -> {
            if (type == 0) {
                itemMap.setSlot("CRAFTING[2]");
                itemMap.setMultipleSlots(new ArrayList<String>());
                creatingPane(player, itemMap);
            } else {
                if (StringUtils.containsValue(itemMap.getMultipleSlots(), "CRAFTING[2]")) {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.remove("CRAFTING[2]");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 2);
                } else {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.add("CRAFTING[2]");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 2);
                }
            }
        }));
        craftingPane.addButton(new Button(fillerPaneGItem), 10);
        craftingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "CRAFTING_TABLE" : "58"), 1, (type > 0 ? StringUtils.containsValue(itemMap.getMultipleSlots(), "CRAFTING[0]") : false), "&9&lSlot: &7&lCRAFTING&a&l[0]", "&7", "&7*Click to set the custom item", "&7to appear in the &lCRAFTING &7slot &a&l[0]&7", (type > 0 && StringUtils.containsValue(itemMap.getMultipleSlots(), "CRAFTING[0]") ? "&9&lENABLED: &aTRUE" : "")), event -> {
            if (type == 0) {
                itemMap.setSlot("CRAFTING[0]");
                itemMap.setMultipleSlots(new ArrayList<String>());
                creatingPane(player, itemMap);
            } else {
                if (StringUtils.containsValue(itemMap.getMultipleSlots(), "CRAFTING[0]")) {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.remove("CRAFTING[0]");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 2);
                } else {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.add("CRAFTING[0]");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 2);
                }
            }
        }));
        craftingPane.addButton(new Button(fillerPaneGItem), 4);
        craftingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "CRAFTING_TABLE" : "58"), 3, (type > 0 ? StringUtils.containsValue(itemMap.getMultipleSlots(), "CRAFTING[3]") : false), "&9&lSlot: &7&lCRAFTING&a&l[3]", "&7", "&7*Click to set the custom item", "&7to appear in the &lCRAFTING &7slot &a&l[3]&7", (type > 0 && StringUtils.containsValue(itemMap.getMultipleSlots(), "CRAFTING[3]") ? "&9&lENABLED: &aTRUE" : "")), event -> {
            if (type == 0) {
                itemMap.setSlot("CRAFTING[3]");
                itemMap.setMultipleSlots(new ArrayList<String>());
                creatingPane(player, itemMap);
            } else {
                if (StringUtils.containsValue(itemMap.getMultipleSlots(), "CRAFTING[3]")) {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.remove("CRAFTING[3]");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 2);
                } else {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.add("CRAFTING[3]");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 2);
                }
            }
        }));
        craftingPane.addButton(new Button(fillerPaneGItem));
        craftingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "CRAFTING_TABLE" : "58"), 4, (type > 0 ? StringUtils.containsValue(itemMap.getMultipleSlots(), "CRAFTING[4]") : false), "&9&lSlot: &7&lCRAFTING&a&l[4]", "&7", "&7*Click to set the custom item", "&7to appear in the &lCRAFTING &7slot &a&l[4]&7", (type > 0 && StringUtils.containsValue(itemMap.getMultipleSlots(), "CRAFTING[4]") ? "&9&lENABLED: &aTRUE" : "")), event -> {
            if (type == 0) {
                itemMap.setSlot("CRAFTING[4]");
                itemMap.setMultipleSlots(new ArrayList<String>());
                creatingPane(player, itemMap);
            } else {
                if (StringUtils.containsValue(itemMap.getMultipleSlots(), "CRAFTING[4]")) {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.remove("CRAFTING[4]");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 2);
                } else {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.add("CRAFTING[4]");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 2);
                }
            }
        }));
        craftingPane.addButton(new Button(fillerPaneGItem), 3);
        craftingPane.addButton(new Button(ItemHandler.getItem("BARRIER", 1, false, "&c&l&nReturn", "&7", "&7*Returns you back to", "&7the main slot selection menu"), event -> slotPane.open(player)));
        if (type > 0) {
            craftingPane.addButton(new Button(fillerPaneBItem), 3);
            craftingPane.addButton(new Button(ItemHandler.getItem("EMERALD", 1, false, "&a&lFinish Selecting", "&7", "&7*Saves the chosen slots", "&7to the item definition."), event -> creatingPane(player, itemMap)));
            craftingPane.addButton(new Button(fillerPaneBItem), 3);
        } else {
            craftingPane.addButton(new Button(fillerPaneBItem), 7);
        }
        craftingPane.addButton(new Button(ItemHandler.getItem("BARRIER", 1, false, "&c&l&nReturn", "&7", "&7*Returns you back to", "&7the main slot selection menu"), event -> slotPane.open(player)));
        slotPane.addButton(new Button(fillerPaneGItem));
        slotPane.addButton(new Button(ItemHandler.getItem("SUGAR", 1, (type > 0 ? StringUtils.containsValue(itemMap.getMultipleSlots(), "ARBITRARY") : false), "&9&lSlot: &a&lARBITRARY", "&7", "&7*Click to set the custom item", "&7to appear in slot &a&lArbitrary&7", "&7", "&7*Arbitrary is defined as giving the", "&7item in the first available slot.", (type > 0 && StringUtils.containsValue(itemMap.getMultipleSlots(), "ARBITRARY") ? "&9&lENABLED: &aTRUE" : "")), event -> {
            if (type == 0) {
                itemMap.setSlot("ARBITRARY");
                itemMap.setMultipleSlots(new ArrayList<String>());
                creatingPane(player, itemMap);
            } else {
                if (StringUtils.containsValue(itemMap.getMultipleSlots(), "ARBITRARY")) {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.remove("ARBITRARY");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 1);
                } else {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.add("ARBITRARY");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 1);
                }
            }
        }));
        slotPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "CRAFTING_TABLE" : "58"), 1, false, "&9&lSlot: &a&lCRAFTING", "&7", "&7*Click to see a list of crafting slots"), event -> craftingPane.open(player)));
        slotPane.addButton(new Button(ItemHandler.getItem("LEATHER_HELMET", 1, (type > 0 ? StringUtils.containsValue(itemMap.getMultipleSlots(), "HELMET") : false), "&9&lSlot: &a&lHELMET", "&7", "&7*Click to set the custom item", "&7to appear in slot &a&lHELMET&7", (type > 0 && StringUtils.containsValue(itemMap.getMultipleSlots(), "HELMET") ? "&9&lENABLED: &aTRUE" : "")), event -> {
            if (type == 0) {
                itemMap.setSlot("HELMET");
                itemMap.setMultipleSlots(new ArrayList<String>());
                creatingPane(player, itemMap);
            } else {
                if (StringUtils.containsValue(itemMap.getMultipleSlots(), "HELMET")) {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.remove("HELMET");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 1);
                } else {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.add("HELMET");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 1);
                }
            }
        }));
        slotPane.addButton(new Button(ItemHandler.getItem("LEATHER_CHESTPLATE", 1, (type > 0 ? StringUtils.containsValue(itemMap.getMultipleSlots(), "CHESTPLATE") : false), "&9&lSlot: &a&lCHESTPLATE", "&7", "&7*Click to set the custom item", "&7to appear in slot &a&lCHESTPLATE&7", (type > 0 && StringUtils.containsValue(itemMap.getMultipleSlots(), "CHESTPLATE") ? "&9&lENABLED: &aTRUE" : "")), event -> {
            if (type == 0) {
                itemMap.setSlot("CHESTPLATE");
                itemMap.setMultipleSlots(new ArrayList<String>());
                creatingPane(player, itemMap);
            } else {
                if (StringUtils.containsValue(itemMap.getMultipleSlots(), "CHESTPLATE")) {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.remove("CHESTPLATE");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 1);
                } else {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.add("CHESTPLATE");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 1);
                }
            }
        }));
        slotPane.addButton(new Button(ItemHandler.getItem("LEATHER_LEGGINGS", 1, (type > 0 ? StringUtils.containsValue(itemMap.getMultipleSlots(), "LEGGINGS") : false), "&9&lSlot: &a&lLEGGINGS", "&7", "&7*Click to set the custom item", "&7to appear in slot &a&lLEGGINGS&7", (type > 0 && StringUtils.containsValue(itemMap.getMultipleSlots(), "LEGGINGS") ? "&9&lENABLED: &aTRUE" : "")), event -> {
            if (type == 0) {
                itemMap.setSlot("LEGGINGS");
                itemMap.setMultipleSlots(new ArrayList<String>());
                creatingPane(player, itemMap);
            } else {
                if (StringUtils.containsValue(itemMap.getMultipleSlots(), "LEGGINGS")) {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.remove("LEGGINGS");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 1);
                } else {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.add("LEGGINGS");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 1);
                }
            }
        }));
        slotPane.addButton(new Button(ItemHandler.getItem("LEATHER_BOOTS", 1, (type > 0 ? StringUtils.containsValue(itemMap.getMultipleSlots(), "BOOTS") : false), "&9&lSlot: &a&lBOOTS", "&7", "&7*Click to set the custom item", "&7to appear in slot &a&lBOOTS&7", (type > 0 && StringUtils.containsValue(itemMap.getMultipleSlots(), "BOOTS") ? "&9&lENABLED: &aTRUE" : "")), event -> {
            if (type == 0) {
                itemMap.setSlot("BOOTS");
                itemMap.setMultipleSlots(new ArrayList<String>());
                creatingPane(player, itemMap);
            } else {
                if (StringUtils.containsValue(itemMap.getMultipleSlots(), "BOOTS")) {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.remove("BOOTS");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 1);
                } else {
                    List<String> slots = itemMap.getMultipleSlots();
                    slots.add("BOOTS");
                    itemMap.setMultipleSlots(slots);
                    slotPane(player, itemMap, stage, 1);
                }
            }
        }));
        if (ServerUtils.hasSpecificUpdate("1_9")) {
            slotPane.addButton(new Button(ItemHandler.getItem("SHIELD", 1, (type > 0 ? StringUtils.containsValue(itemMap.getMultipleSlots(), "OFFHAND") : false), "&9&lSlot: &a&lOFFHAND", "&7", "&7*Click to set the custom item", "&7to appear in slot &a&lOFFHAND&7", (type > 0 && StringUtils.containsValue(itemMap.getMultipleSlots(), "OFFHAND") ? "&9&lENABLED: &aTRUE" : "")), event -> {
                if (type == 0) {
                    itemMap.setSlot("OFFHAND");
                    itemMap.setMultipleSlots(new ArrayList<String>());
                    creatingPane(player, itemMap);
                } else {
                    if (StringUtils.containsValue(itemMap.getMultipleSlots(), "OFFHAND")) {
                        List<String> slots = itemMap.getMultipleSlots();
                        slots.remove("OFFHAND");
                        itemMap.setMultipleSlots(slots);
                        slotPane(player, itemMap, stage, 1);
                    } else {
                        List<String> slots = itemMap.getMultipleSlots();
                        slots.add("OFFHAND");
                        itemMap.setMultipleSlots(slots);
                        slotPane(player, itemMap, stage, 1);
                    }
                }
            }));
        } else {
            slotPane.addButton(new Button(fillerPaneGItem));
        }
        slotPane.addButton(new Button(fillerPaneGItem));
        for (int i = 9; i < 36; i++) {
            final int slot = i;
            slotPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "LIGHT_BLUE_STAINED_GLASS_PANE" : "STAINED_GLASS_PANE:3"), i, (type > 0 ? StringUtils.containsValue(itemMap.getMultipleSlots(), slot + "") : false), "&9&lSlot: &a&l" + i, "&7", "&7*Click to set the custom item", "&7to appear in slot &a&l" + i + "&7", (type > 0 && StringUtils.containsValue(itemMap.getMultipleSlots(), slot + "") ? "&9&lENABLED: &aTRUE" : "")), event -> {
                if (type == 0) {
                    itemMap.setSlot(slot + "");
                    itemMap.setMultipleSlots(new ArrayList<String>());
                    creatingPane(player, itemMap);
                } else {
                    if (StringUtils.containsValue(itemMap.getMultipleSlots(), slot + "")) {
                        List<String> slots = itemMap.getMultipleSlots();
                        slots.remove(slot + "");
                        itemMap.setMultipleSlots(slots);
                        slotPane(player, itemMap, stage, 1);
                    } else {
                        List<String> slots = itemMap.getMultipleSlots();
                        slots.add(slot + "");
                        itemMap.setMultipleSlots(slots);
                        slotPane(player, itemMap, stage, 1);
                    }
                }
            }));
        }
        for (int j = 0; j < 9; j++) {
            final int slot = j;
            int count = j;
            if (slot == 0) {
                count = 1;
            }
            slotPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "BLUE_STAINED_GLASS_PANE" : "STAINED_GLASS_PANE:11"), count, (type > 0 ? StringUtils.containsValue(itemMap.getMultipleSlots(), slot + "") : false), "&9&lSlot: &a&l" + j, "&7", "&7*Click to set the custom item", "&7to appear in slot &a&l" + j + "&7", (type > 0 && StringUtils.containsValue(itemMap.getMultipleSlots(), slot + "") ? "&9&lENABLED: &aTRUE" : "")), event -> {
                if (type == 0) {
                    itemMap.setSlot(slot + "");
                    itemMap.setMultipleSlots(new ArrayList<String>());
                    creatingPane(player, itemMap);
                } else {
                    if (StringUtils.containsValue(itemMap.getMultipleSlots(), slot + "")) {
                        List<String> slots = itemMap.getMultipleSlots();
                        slots.remove(slot + "");
                        itemMap.setMultipleSlots(slots);
                        slotPane(player, itemMap, stage, 1);
                    } else {
                        List<String> slots = itemMap.getMultipleSlots();
                        slots.add(slot + "");
                        itemMap.setMultipleSlots(slots);
                        slotPane(player, itemMap, stage, 1);
                    }
                }
            }));
        }
        slotPane.addButton(new Button(ItemHandler.getItem("BARRIER", 1, false, "&c&l&nReturn", "&7", "&7*Returns you back to", "&7the slot(s) selection menu."), event -> switchPane(player, itemMap, stage)));
        if (type > 0) {
            slotPane.addButton(new Button(fillerPaneBItem), 3);
            slotPane.addButton(new Button(ItemHandler.getItem("EMERALD", 1, false, "&a&lFinish Selecting", "&7", "&7*Saves the chosen slots", "&7to the item definition."), event -> creatingPane(player, itemMap)));
            slotPane.addButton(new Button(fillerPaneBItem), 3);
        } else {
            slotPane.addButton(new Button(fillerPaneBItem), 7);
        }
        slotPane.addButton(new Button(ItemHandler.getItem("BARRIER", 1, false, "&c&l&nReturn", "&7", "&7*Returns you back to", "&7the slot(s) selection menu."), event -> switchPane(player, itemMap, stage)));
    });
    if (type == 2) {
        craftingPane.open(player);
    } else {
        slotPane.open(player);
    }
}
Also used : ItemHandler(me.RockinChaos.itemjoin.handlers.ItemHandler) PatternType(org.bukkit.block.banner.PatternType) Enchantment(org.bukkit.enchantments.Enchantment) GameProfile(com.mojang.authlib.GameProfile) Player(org.bukkit.entity.Player) LanguageAPI(me.RockinChaos.itemjoin.utils.api.LanguageAPI) Inventory(org.bukkit.inventory.Inventory) DependAPI(me.RockinChaos.itemjoin.utils.api.DependAPI) World(org.bukkit.World) Map(java.util.Map) PlayerInventory(org.bukkit.inventory.PlayerInventory) Material(org.bukkit.Material) FireworkEffectMeta(org.bukkit.inventory.meta.FireworkEffectMeta) Bukkit(org.bukkit.Bukkit) Action(me.RockinChaos.itemjoin.item.ItemCommand.Action) CommandSender(org.bukkit.command.CommandSender) UUID(java.util.UUID) Sound(org.bukkit.Sound) ItemMap(me.RockinChaos.itemjoin.item.ItemMap) EntityType(org.bukkit.entity.EntityType) FireworkMeta(org.bukkit.inventory.meta.FireworkMeta) ItemUtilities(me.RockinChaos.itemjoin.item.ItemUtilities) ItemStack(org.bukkit.inventory.ItemStack) List(java.util.List) SchedulerUtils(me.RockinChaos.itemjoin.utils.SchedulerUtils) StringUtils(me.RockinChaos.itemjoin.utils.StringUtils) LeatherArmorMeta(org.bukkit.inventory.meta.LeatherArmorMeta) ItemJoin(me.RockinChaos.itemjoin.ItemJoin) PotionEffectType(org.bukkit.potion.PotionEffectType) Button(me.RockinChaos.itemjoin.utils.interfaces.Button) ItemMeta(org.bukkit.inventory.meta.ItemMeta) Pattern(org.bukkit.block.banner.Pattern) BookMeta(org.bukkit.inventory.meta.BookMeta) Interface(me.RockinChaos.itemjoin.utils.interfaces.Interface) HashMap(java.util.HashMap) HeadDatabaseAPI(me.arcaniax.hdb.api.HeadDatabaseAPI) BannerMeta(org.bukkit.inventory.meta.BannerMeta) ServerUtils(me.RockinChaos.itemjoin.utils.ServerUtils) ArrayList(java.util.ArrayList) FileConfiguration(org.bukkit.configuration.file.FileConfiguration) Environment(org.bukkit.World.Environment) Property(com.mojang.authlib.properties.Property) ConfigHandler(me.RockinChaos.itemjoin.handlers.ConfigHandler) Color(org.bukkit.Color) Attribute(org.bukkit.attribute.Attribute) Type(org.bukkit.FireworkEffect.Type) PlayerHandler(me.RockinChaos.itemjoin.handlers.PlayerHandler) LegacyAPI(me.RockinChaos.itemjoin.utils.api.LegacyAPI) DecimalFormat(java.text.DecimalFormat) Field(java.lang.reflect.Field) File(java.io.File) PotionEffect(org.bukkit.potion.PotionEffect) CommandSequence(me.RockinChaos.itemjoin.item.ItemCommand.CommandSequence) YamlConfiguration(org.bukkit.configuration.file.YamlConfiguration) ItemCommand(me.RockinChaos.itemjoin.item.ItemCommand) ChatColor(org.bukkit.ChatColor) DyeColor(org.bukkit.DyeColor) Button(me.RockinChaos.itemjoin.utils.interfaces.Button) ArrayList(java.util.ArrayList) List(java.util.List) ArrayList(java.util.ArrayList) Interface(me.RockinChaos.itemjoin.utils.interfaces.Interface)

Example 88 with Button

use of me.RockinChaos.itemjoin.utils.interfaces.Button in project ItemJoin by RockinChaos.

the class Menu method choicePane.

/**
 * Opens the Pane for the Player.
 * This Pane is for selecting item modification or deletion.
 *
 * @param player - The Player to have the Pane opened.
 * @param itemMap - The ItemMap currently being modified.
 * @param item - The ItemStack currently being modified.
 */
private static void choicePane(final Player player, final ItemMap itemMap, final ItemStack item) {
    Interface choicePane = new Interface(false, 3, GUIName, player);
    SchedulerUtils.runAsync(() -> {
        choicePane.addButton(new Button(fillerPaneBItem), 4);
        choicePane.addButton(new Button(item));
        choicePane.addButton(new Button(fillerPaneBItem), 4);
        choicePane.addButton(new Button(fillerPaneBItem), 3);
        choicePane.addButton(new Button(ItemHandler.getItem("SUGAR", 1, true, "&b&lSettings", "&7", "&7*Change the settings for this item.", "&7Make changes to the item name, lore,", "&7permissions, enabled-worlds, and more."), event -> {
            creatingPane(player, itemMap);
        }));
        choicePane.addButton(new Button(fillerPaneBItem));
        choicePane.addButton(new Button(ItemHandler.getItem("REDSTONE", 1, true, "&c&lDelete", "&7", "&7*Delete this item.", "&7This will remove the item from the", "&7items.yml and will no longer be useable.", "&c&lWARNING: &7This &lCANNOT &7be undone!"), event -> {
            itemMap.removeFromConfig();
            String[] placeHolders = LanguageAPI.getLang(false).newString();
            placeHolders[3] = itemMap.getConfigName();
            LanguageAPI.getLang(false).sendLangMessage("commands.menu.itemRemoved", player, placeHolders);
            ConfigHandler.getConfig().reloadConfigs(true);
            SchedulerUtils.runLater(6L, () -> {
                startModify(player, null, 0);
            });
        }));
        choicePane.addButton(new Button(fillerPaneBItem), 3);
        choicePane.addButton(new Button(ItemHandler.getItem("BARRIER", 1, false, "&c&l&nReturn", "&7", "&7*Returns you to the modify menu"), event -> startModify(player, null, 0)));
        choicePane.addButton(new Button(fillerPaneBItem), 7);
        choicePane.addButton(new Button(ItemHandler.getItem("BARRIER", 1, false, "&c&l&nReturn", "&7", "&7*Returns you to the modify menu"), event -> startModify(player, null, 0)));
    });
    choicePane.open(player);
}
Also used : ItemHandler(me.RockinChaos.itemjoin.handlers.ItemHandler) PatternType(org.bukkit.block.banner.PatternType) Enchantment(org.bukkit.enchantments.Enchantment) GameProfile(com.mojang.authlib.GameProfile) Player(org.bukkit.entity.Player) LanguageAPI(me.RockinChaos.itemjoin.utils.api.LanguageAPI) Inventory(org.bukkit.inventory.Inventory) DependAPI(me.RockinChaos.itemjoin.utils.api.DependAPI) World(org.bukkit.World) Map(java.util.Map) PlayerInventory(org.bukkit.inventory.PlayerInventory) Material(org.bukkit.Material) FireworkEffectMeta(org.bukkit.inventory.meta.FireworkEffectMeta) Bukkit(org.bukkit.Bukkit) Action(me.RockinChaos.itemjoin.item.ItemCommand.Action) CommandSender(org.bukkit.command.CommandSender) UUID(java.util.UUID) Sound(org.bukkit.Sound) ItemMap(me.RockinChaos.itemjoin.item.ItemMap) EntityType(org.bukkit.entity.EntityType) FireworkMeta(org.bukkit.inventory.meta.FireworkMeta) ItemUtilities(me.RockinChaos.itemjoin.item.ItemUtilities) ItemStack(org.bukkit.inventory.ItemStack) List(java.util.List) SchedulerUtils(me.RockinChaos.itemjoin.utils.SchedulerUtils) StringUtils(me.RockinChaos.itemjoin.utils.StringUtils) LeatherArmorMeta(org.bukkit.inventory.meta.LeatherArmorMeta) ItemJoin(me.RockinChaos.itemjoin.ItemJoin) PotionEffectType(org.bukkit.potion.PotionEffectType) Button(me.RockinChaos.itemjoin.utils.interfaces.Button) ItemMeta(org.bukkit.inventory.meta.ItemMeta) Pattern(org.bukkit.block.banner.Pattern) BookMeta(org.bukkit.inventory.meta.BookMeta) Interface(me.RockinChaos.itemjoin.utils.interfaces.Interface) HashMap(java.util.HashMap) HeadDatabaseAPI(me.arcaniax.hdb.api.HeadDatabaseAPI) BannerMeta(org.bukkit.inventory.meta.BannerMeta) ServerUtils(me.RockinChaos.itemjoin.utils.ServerUtils) ArrayList(java.util.ArrayList) FileConfiguration(org.bukkit.configuration.file.FileConfiguration) Environment(org.bukkit.World.Environment) Property(com.mojang.authlib.properties.Property) ConfigHandler(me.RockinChaos.itemjoin.handlers.ConfigHandler) Color(org.bukkit.Color) Attribute(org.bukkit.attribute.Attribute) Type(org.bukkit.FireworkEffect.Type) PlayerHandler(me.RockinChaos.itemjoin.handlers.PlayerHandler) LegacyAPI(me.RockinChaos.itemjoin.utils.api.LegacyAPI) DecimalFormat(java.text.DecimalFormat) Field(java.lang.reflect.Field) File(java.io.File) PotionEffect(org.bukkit.potion.PotionEffect) CommandSequence(me.RockinChaos.itemjoin.item.ItemCommand.CommandSequence) YamlConfiguration(org.bukkit.configuration.file.YamlConfiguration) ItemCommand(me.RockinChaos.itemjoin.item.ItemCommand) ChatColor(org.bukkit.ChatColor) DyeColor(org.bukkit.DyeColor) Button(me.RockinChaos.itemjoin.utils.interfaces.Button) Interface(me.RockinChaos.itemjoin.utils.interfaces.Interface)

Example 89 with Button

use of me.RockinChaos.itemjoin.utils.interfaces.Button in project ItemJoin by RockinChaos.

the class Menu method switchPane.

/**
 * Opens the Pane for the Player.
 * This Pane is for setting single or multiple slots for an item.
 *
 * @param player - The Player to have the Pane opened.
 * @param itemMap - The ItemMap currently being modified.
 * @param stage - The stage in the modification.
 */
private static void switchPane(final Player player, final ItemMap itemMap, final int stage) {
    Interface switchPane = new Interface(false, 1, GUIName, player);
    SchedulerUtils.runAsync(() -> {
        if (stage == 0) {
            switchPane.addButton(new Button(ItemHandler.getItem("BARRIER", 1, false, "&c&l&nReturn", "&7", "&7*Returns you back to", "&7the material selection menu."), event -> materialPane(player, itemMap, 0, 0)));
        } else {
            switchPane.addButton(new Button(ItemHandler.getItem("BARRIER", 1, false, "&c&l&nReturn", "&7", "&7*Returns you to the item definition menu."), event -> creatingPane(player, itemMap)));
        }
        switchPane.addButton(new Button(fillerPaneBItem), 2);
        switchPane.addButton(new Button(ItemHandler.getItem("GLASS", 1, false, "&a&lSingle Slot", "&7", "&7*Define a single dedicated", "&7 slot for the item."), event -> slotPane(player, itemMap, stage, 0)));
        switchPane.addButton(new Button(fillerPaneBItem), 1);
        switchPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "DISPENSER" : "23"), 1, false, "&b&lMultiple Slots", "&7", "&7*Define multiple slots for the item."), event -> slotPane(player, itemMap, stage, 1)));
        switchPane.addButton(new Button(fillerPaneBItem), 2);
        if (stage == 0) {
            switchPane.addButton(new Button(ItemHandler.getItem("BARRIER", 1, false, "&c&l&nReturn", "&7", "&7*Returns you back to", "&7the material selection menu."), event -> materialPane(player, itemMap, 0, 0)));
        } else {
            switchPane.addButton(new Button(ItemHandler.getItem("BARRIER", 1, false, "&c&l&nReturn", "&7", "&7*Returns you to the item definition menu."), event -> creatingPane(player, itemMap)));
        }
    });
    switchPane.open(player);
}
Also used : ItemHandler(me.RockinChaos.itemjoin.handlers.ItemHandler) PatternType(org.bukkit.block.banner.PatternType) Enchantment(org.bukkit.enchantments.Enchantment) GameProfile(com.mojang.authlib.GameProfile) Player(org.bukkit.entity.Player) LanguageAPI(me.RockinChaos.itemjoin.utils.api.LanguageAPI) Inventory(org.bukkit.inventory.Inventory) DependAPI(me.RockinChaos.itemjoin.utils.api.DependAPI) World(org.bukkit.World) Map(java.util.Map) PlayerInventory(org.bukkit.inventory.PlayerInventory) Material(org.bukkit.Material) FireworkEffectMeta(org.bukkit.inventory.meta.FireworkEffectMeta) Bukkit(org.bukkit.Bukkit) Action(me.RockinChaos.itemjoin.item.ItemCommand.Action) CommandSender(org.bukkit.command.CommandSender) UUID(java.util.UUID) Sound(org.bukkit.Sound) ItemMap(me.RockinChaos.itemjoin.item.ItemMap) EntityType(org.bukkit.entity.EntityType) FireworkMeta(org.bukkit.inventory.meta.FireworkMeta) ItemUtilities(me.RockinChaos.itemjoin.item.ItemUtilities) ItemStack(org.bukkit.inventory.ItemStack) List(java.util.List) SchedulerUtils(me.RockinChaos.itemjoin.utils.SchedulerUtils) StringUtils(me.RockinChaos.itemjoin.utils.StringUtils) LeatherArmorMeta(org.bukkit.inventory.meta.LeatherArmorMeta) ItemJoin(me.RockinChaos.itemjoin.ItemJoin) PotionEffectType(org.bukkit.potion.PotionEffectType) Button(me.RockinChaos.itemjoin.utils.interfaces.Button) ItemMeta(org.bukkit.inventory.meta.ItemMeta) Pattern(org.bukkit.block.banner.Pattern) BookMeta(org.bukkit.inventory.meta.BookMeta) Interface(me.RockinChaos.itemjoin.utils.interfaces.Interface) HashMap(java.util.HashMap) HeadDatabaseAPI(me.arcaniax.hdb.api.HeadDatabaseAPI) BannerMeta(org.bukkit.inventory.meta.BannerMeta) ServerUtils(me.RockinChaos.itemjoin.utils.ServerUtils) ArrayList(java.util.ArrayList) FileConfiguration(org.bukkit.configuration.file.FileConfiguration) Environment(org.bukkit.World.Environment) Property(com.mojang.authlib.properties.Property) ConfigHandler(me.RockinChaos.itemjoin.handlers.ConfigHandler) Color(org.bukkit.Color) Attribute(org.bukkit.attribute.Attribute) Type(org.bukkit.FireworkEffect.Type) PlayerHandler(me.RockinChaos.itemjoin.handlers.PlayerHandler) LegacyAPI(me.RockinChaos.itemjoin.utils.api.LegacyAPI) DecimalFormat(java.text.DecimalFormat) Field(java.lang.reflect.Field) File(java.io.File) PotionEffect(org.bukkit.potion.PotionEffect) CommandSequence(me.RockinChaos.itemjoin.item.ItemCommand.CommandSequence) YamlConfiguration(org.bukkit.configuration.file.YamlConfiguration) ItemCommand(me.RockinChaos.itemjoin.item.ItemCommand) ChatColor(org.bukkit.ChatColor) DyeColor(org.bukkit.DyeColor) Button(me.RockinChaos.itemjoin.utils.interfaces.Button) Interface(me.RockinChaos.itemjoin.utils.interfaces.Interface)

Example 90 with Button

use of me.RockinChaos.itemjoin.utils.interfaces.Button in project ItemJoin by RockinChaos.

the class Menu method creatingPane.

/**
 * Opens the Pane for the Player.
 * This Pane is for Creating a NEW custom item.
 *
 * @param player - The Player to have the Pane opened.
 * @param itemMap - The ItemMap currently being modified.
 */
private static void creatingPane(final Player player, final ItemMap itemMap) {
    Interface creatingPane = new Interface(false, 5, GUIName, player);
    SchedulerUtils.runAsync(() -> {
        String slotList = "";
        String slotString = "";
        if (StringUtils.nullCheck(itemMap.getMultipleSlots().toString()) != "NONE") {
            for (String slot : itemMap.getMultipleSlots()) {
                slotString += slot + ", ";
            }
            for (String split : StringUtils.softSplit(StringUtils.nullCheck(slotString.substring(0, slotString.length())))) {
                slotList += "&a" + split + " /n ";
            }
        }
        String itemflagsList = "";
        if (StringUtils.nullCheck(itemMap.getItemFlags()) != "NONE") {
            for (String split : StringUtils.softSplit(itemMap.getItemFlags())) {
                itemflagsList += "&a" + split + " /n ";
            }
        }
        String triggersList = "";
        if (StringUtils.nullCheck(itemMap.getTriggers()) != "NONE") {
            for (String split : StringUtils.softSplit(itemMap.getTriggers())) {
                triggersList += "&a" + split + " /n ";
            }
        }
        String disabledList = "";
        if (StringUtils.nullCheck(itemMap.getDisabledWorlds().toString()) != "NONE") {
            for (String split : StringUtils.softSplit(StringUtils.nullCheck(itemMap.getDisabledWorlds().toString()))) {
                disabledList += "&a" + split + " /n ";
            }
        }
        String enabledList = "";
        if (StringUtils.nullCheck(itemMap.getEnabledWorlds().toString()) != "NONE") {
            for (String split : StringUtils.softSplit(StringUtils.nullCheck(itemMap.getEnabledWorlds().toString()))) {
                enabledList += "&a" + split + " /n ";
            }
        }
        String regionList = "";
        if (StringUtils.nullCheck(itemMap.getEnabledRegions().toString()) != "NONE") {
            for (String split : StringUtils.softSplit(StringUtils.nullCheck(itemMap.getEnabledRegions().toString()))) {
                regionList += "&a" + split + " /n ";
            }
        }
        String enchantList = "";
        if (StringUtils.nullCheck(itemMap.getEnchantments().toString()) != "NONE") {
            for (String split : StringUtils.softSplit(StringUtils.nullCheck(itemMap.getEnchantments().toString()))) {
                enchantList += "&a" + split + " /n ";
            }
        }
        String potionList = "";
        String potionString = "";
        if (StringUtils.nullCheck(itemMap.getPotionEffect().toString()) != "NONE") {
            for (PotionEffect potions : itemMap.getPotionEffect()) {
                potionString += potions.getType().getName().toUpperCase() + ":" + potions.getAmplifier() + ":" + potions.getDuration() + ", ";
            }
            for (String split : StringUtils.softSplit(StringUtils.nullCheck(potionString.substring(0, potionString.length())))) {
                potionList += "&a" + split + " /n ";
            }
        }
        String attributeList = "";
        String attributeString = "";
        if (StringUtils.nullCheck(itemMap.getAttributes().toString()) != "NONE") {
            for (String attribute : itemMap.getAttributes().keySet()) {
                attributeString += attribute + ":" + itemMap.getAttributes().get(attribute) + ", ";
            }
            for (String split : StringUtils.softSplit(StringUtils.nullCheck(attributeString.substring(0, attributeString.length())))) {
                attributeList += "&a" + split + " /n ";
            }
        }
        String patternList = "";
        String patternString = "";
        if (StringUtils.nullCheck(itemMap.getBannerPatterns().toString()) != "NONE") {
            for (Pattern patterns : itemMap.getBannerPatterns()) {
                patternString += patterns.getColor() + ":" + patterns.getPattern().name().toUpperCase() + ", ";
            }
            for (String split : StringUtils.softSplit(StringUtils.nullCheck(patternString.substring(0, patternString.length())))) {
                patternList += "&a" + split + " /n ";
            }
        }
        creatingPane.addButton(new Button(fillerPaneGItem), 4);
        creatingPane.addButton(new Button(headerStack(player, itemMap)));
        creatingPane.addButton(new Button(fillerPaneGItem), 4);
        creatingPane.addButton(new Button(ItemHandler.getItem(itemMap.getMaterial().toString() + ((itemMap.getDataValue() != null && itemMap.getDataValue() != 0) ? ":" + itemMap.getDataValue() : ""), 1, false, "&c&lMaterial", "&7", "&7*Set the material of the item.", "&9&lMATERIAL: &a" + itemMap.getMaterial().toString() + ((itemMap.getDataValue() != null && itemMap.getDataValue() != 0) ? ":" + itemMap.getDataValue() : "")), event -> {
            if (itemMap.getDynamicMaterials() != null && !itemMap.getDynamicMaterials().isEmpty()) {
                animateMaterialPane(player, itemMap);
            } else {
                materialPane(player, itemMap, 1, 0);
            }
        }));
        creatingPane.addButton(new Button(ItemHandler.getItem("GLASS", 1, false, "&c&lSlot", "&7", "&7*Set the slot that the", "&7item will be given in.", (itemMap.getMultipleSlots() != null && !itemMap.getMultipleSlots().isEmpty() ? "&9&lSlot(s): &a" + slotList : "&9&lSLOT: &a" + itemMap.getSlot().toUpperCase())), event -> switchPane(player, itemMap, 1)));
        creatingPane.addButton(new Button(ItemHandler.getItem("DIAMOND", itemMap.getCount(player), false, "&b&lCount", "&7", "&7*Set the amount of the", "&7item to be given.", "&9&lCOUNT: &a" + itemMap.getCount(player)), event -> countPane(player, itemMap)));
        creatingPane.addButton(new Button(ItemHandler.getItem("NAME_TAG", 1, false, "&b&lName", "&7", "&7*Set the name of the item.", "&9&lNAME: &f" + StringUtils.nullCheck(itemMap.getCustomName())), event -> {
            if (itemMap.getDynamicNames() != null && !itemMap.getDynamicNames().isEmpty()) {
                animatedNamePane(player, itemMap);
            } else {
                if (StringUtils.nullCheck(itemMap.getCustomName()) != "NONE") {
                    itemMap.setCustomName(null);
                    creatingPane(player, itemMap);
                } else {
                    player.closeInventory();
                    String[] placeHolders = LanguageAPI.getLang(false).newString();
                    placeHolders[16] = "NAME";
                    placeHolders[15] = "&bUltimate Sword";
                    LanguageAPI.getLang(false).sendLangMessage("commands.menu.inputType", player, placeHolders);
                    LanguageAPI.getLang(false).sendLangMessage("commands.menu.inputExample", player, placeHolders);
                }
            }
        }, event -> {
            itemMap.setCustomName(ChatColor.stripColor(event.getMessage()));
            String[] placeHolders = LanguageAPI.getLang(false).newString();
            placeHolders[16] = "NAME";
            LanguageAPI.getLang(false).sendLangMessage("commands.menu.inputSet", player, placeHolders);
            creatingPane(event.getPlayer(), itemMap);
        }));
        creatingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "WRITABLE_BOOK" : "386"), 1, false, "&b&lLore", "&7", "&7*Set the lore of the item.", "&9&lLORE: &f" + StringUtils.nullCheck(itemMap.getCustomLore().toString())), event -> {
            if (itemMap.getDynamicLores() != null && !itemMap.getDynamicLores().isEmpty()) {
                animatedLorePane(player, itemMap);
            } else {
                lorePane(player, itemMap);
            }
        }, event -> {
            itemMap.setCustomLore(StringUtils.split(ChatColor.stripColor(event.getMessage())));
            String[] placeHolders = LanguageAPI.getLang(false).newString();
            placeHolders[16] = "LORE";
            LanguageAPI.getLang(false).sendLangMessage("commands.menu.inputSet", player, placeHolders);
            creatingPane(event.getPlayer(), itemMap);
        }));
        creatingPane.addButton(new Button(ItemHandler.setDurability(ItemHandler.getItem("DIAMOND_BOOTS", 1, false, "&e&lData", "&7", "&7*Set the damage or the", "&7custom texture of the item."), 160), event -> {
            dataPane(player, itemMap);
        }));
        creatingPane.addButton(new Button(ItemHandler.getItem("BOOK", 1, false, "&e&lCommand Settings", "&7", "&7*Define commands for the item", "&7which execute upon being", "&7interacted with."), event -> commandPane(player, itemMap)));
        creatingPane.addButton(new Button(ItemHandler.getItem("ENCHANTED_BOOK", 1, false, "&b&lEnchantments", "&7", "&7*Add enchants to make the", "&7item sparkle and powerful.", "&9&lENCHANTMENTS: &a" + (StringUtils.nullCheck(itemMap.getEnchantments().toString()) != "NONE" ? "&a" + enchantList : "NONE")), event -> enchantPane(player, itemMap)));
        creatingPane.addButton(new Button(ItemHandler.getItem("CHEST", 1, false, "&b&lItemflags", "&7", "&7*Special flags that will give", "&7the item abilities and", "&7custom features.", "&9&lITEMFLAGS: &a" + (StringUtils.nullCheck(itemMap.getItemFlags()) != "NONE" ? "&a" + itemflagsList : "NONE")), event -> flagPane(player, itemMap)));
        creatingPane.addButton(new Button(ItemHandler.getItem("REDSTONE", 1, false, "&b&lTriggers", "&7", "&7*When the players act upon these", "&7events, the item will be given.", "&9&lTRIGGERS: &a" + (StringUtils.nullCheck(itemMap.getTriggers()) != "NONE" ? "&a" + triggersList : "NONE")), event -> triggerPane(player, itemMap)));
        creatingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "REDSTONE_TORCH" : "76"), 1, false, "&b&lPermission Node", "&7", "&7*Custom permission node that", "&7will be required by a permission", "&7plugin to receive the item.", "&7&lNote: &7Do NOT include", "&7any spaces or special characters", "&9&lPERMISSION-NODE: &a" + StringUtils.nullCheck(itemMap.getPermissionNode())), event -> {
            if (StringUtils.nullCheck(itemMap.getPermissionNode()) != "NONE") {
                itemMap.setPerm(null);
                creatingPane(player, itemMap);
            } else {
                player.closeInventory();
                String[] placeHolders = LanguageAPI.getLang(false).newString();
                placeHolders[16] = "CUSTOM PERMISSION";
                placeHolders[15] = "itemjoin.ultra";
                LanguageAPI.getLang(false).sendLangMessage("commands.menu.inputType", player, placeHolders);
                LanguageAPI.getLang(false).sendLangMessage("commands.menu.inputExample", player, placeHolders);
            }
        }, event -> {
            itemMap.setPerm(ChatColor.stripColor(event.getMessage()));
            String[] placeHolders = LanguageAPI.getLang(false).newString();
            placeHolders[16] = "CUSTOM PERMISSION";
            LanguageAPI.getLang(false).sendLangMessage("commands.menu.inputSet", player, placeHolders);
            creatingPane(event.getPlayer(), itemMap);
        }));
        creatingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "BEDROCK" : "7"), 1, false, "&b&lDisabled Worlds", "&7", "&7*Define the world(s) that the", "&7item will &l&nNOT&7 be given in.", "&9&lDISABLED-WORLDS: &a" + (StringUtils.nullCheck(itemMap.getDisabledWorlds().toString()) != "NONE" ? "&a" + disabledList : "NONE")), event -> worldPane(player, itemMap, 0)));
        creatingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "GRASS_BLOCK" : "2"), 1, false, "&b&lEnabled Worlds", "&7", "&7*Define the world(s) that the", "&7item will be given in.", "&9&lENABLED-WORLDS: &a" + (StringUtils.nullCheck(itemMap.getEnabledWorlds().toString()) != "NONE" ? "&a" + enabledList : "NONE")), event -> worldPane(player, itemMap, 1)));
        creatingPane.addButton(new Button(ItemHandler.getItem("GOLD_BLOCK", 1, true, "&b&lEnabled Regions", "&7", "&7*Define the region(s) that the", "&7item will be given in.", (DependAPI.getDepends(false).getGuard().guardEnabled() ? "&9&lENABLED-REGIONS: &a" + (StringUtils.nullCheck(itemMap.getEnabledRegions().toString()) != "NONE" ? "&a" + regionList : "NONE") : ""), (DependAPI.getDepends(false).getGuard().guardEnabled() ? "" : "&7"), (DependAPI.getDepends(false).getGuard().guardEnabled() ? "" : "&c&lERROR: &7WorldGuard was NOT found."), (DependAPI.getDepends(false).getGuard().guardEnabled() ? "" : "&7This button will do nothing...")), event -> {
            if (DependAPI.getDepends(false).getGuard().guardEnabled()) {
                regionPane(player, itemMap);
            }
        }));
        creatingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "STICKY_PISTON" : "29"), 1, false, "&e&lAnimation Settings", "&7", "&7*Define animations for the item", "&7Example: Custom iterations for the", "&7items name, lore, and material type"), event -> animationPane(player, itemMap)));
        creatingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "OAK_FENCE" : "FENCE"), 1, false, "&b&lLimit-Modes", "&7", "&7*Define the gamemode(s) that the", "&7item will be limited to.", "&9&lLIMIT-MODES: &a" + StringUtils.nullCheck(itemMap.getLimitModes())), event -> limitPane(player, itemMap)));
        creatingPane.addButton(new Button(ItemHandler.getItem("NETHER_STAR", 1, false, "&b&lProbability", "&7", "&7*Define the chance that the", "&7item will be given to the player.", "&7", "&c&lNOTICE:&7 Only ONE item defined with", "&7a probability value will be selected.", "&7Probability is the same as a dice roll.", "&7", "&9&lPROBABILITY: &a" + StringUtils.nullCheck(itemMap.getProbability() + "&a%")), event -> {
            if (StringUtils.nullCheck(itemMap.getProbability() + "&a%") != "NONE") {
                itemMap.setProbability(-1);
                creatingPane(player, itemMap);
            } else {
                probabilityPane(player, itemMap);
            }
        }));
        creatingPane.addButton(new Button(ItemHandler.getItem("ICE", 1, false, "&b&lUsage Cooldown", "&7", "&7*Define the cooldown for", "&7interacting with the item.", "&9&lUSE-COOLDOWN: &a" + StringUtils.nullCheck(itemMap.getInteractCooldown() + "&7")), event -> {
            if (StringUtils.nullCheck(itemMap.getInteractCooldown() + "&7") != "NONE") {
                itemMap.setInteractCooldown(0);
                creatingPane(player, itemMap);
            } else {
                usePane(player, itemMap);
            }
        }));
        creatingPane.addButton(new Button(fillerPaneGItem));
        creatingPane.addButton(new Button(ItemHandler.getItem("LAVA_BUCKET", 1, false, "&b&lConditions", "&7", "&7*Define conditions for triggers,", "&7commands, and the disposable itemflag.", "&9Enabled: &a" + ((itemMap.getTriggerConditions() != null && !itemMap.getTriggerConditions().isEmpty()) || (itemMap.getDisposableConditions() != null && !itemMap.getDisposableConditions().isEmpty()) || (itemMap.getCommandConditions() != null && !itemMap.getCommandConditions().isEmpty()) ? "YES" : "NONE")), event -> {
            conditionsPane(player, itemMap);
        }));
        creatingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "REPEATER" : "356"), 1, false, "&b&lToggle", "&7", "&7*Specify command(s) players can", "&7execute to enable or disable the", "&7custom item for themselves.", "&9Enabled: &a" + (itemMap.getToggleCommands() != null && !itemMap.getToggleCommands().isEmpty() ? "YES" : "NONE")), event -> {
            togglePane(player, itemMap);
        }));
        creatingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "CRAFTING_TABLE" : "58"), 1, false, "&b&lRecipe", "&7", "&7*Define the recipe to be", "&7able to craft this item.", "&9Enabled: &a" + (itemMap.getIngredients() != null && !itemMap.getIngredients().isEmpty() ? "YES" : "NONE")), event -> {
            recipePane(player, itemMap);
        }));
        creatingPane.addButton(new Button(fillerPaneGItem));
        creatingPane.addButton(new Button(ItemHandler.getItem("GOLD_INGOT", 1, false, "&e&lDrop Chances", "&7", "&7*Define the drop chance for receiving", "&7this item from mobs or breaking blocks."), event -> {
            dropsPane(player, itemMap);
        }));
        creatingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "COMMAND_BLOCK" : "137"), 1, false, "&c&lNBT Properties", "&7", "&7*Define specific NBT Properties", "&7to be set to the item.", "&9Enabled: &a" + (itemMap.getNBTValues() != null && !itemMap.getNBTValues().isEmpty() ? "YES" : "NONE")), event -> {
            nbtPane(player, itemMap);
        }));
        if (itemMap.getMaterial().toString().contains("MAP")) {
            creatingPane.addButton(new Button(ItemHandler.getItem("FEATHER", 1, false, "&e&lMap Image", "&7", "&7*Adds a custom map image that", "&7will be displayed when held.", "&7", "&7Place the custom map image", "&7in the MAIN ItemJoin folder.", "&7", "&7The map CAN be a GIF but", "&7must be a 128x128 pixel image.", "&9&lImage: &a" + StringUtils.nullCheck(itemMap.getMapImage())), event -> {
                if (StringUtils.nullCheck(itemMap.getMapImage()) != "NONE") {
                    itemMap.setMapImage(null);
                    creatingPane(player, itemMap);
                } else {
                    player.closeInventory();
                    String[] placeHolders = LanguageAPI.getLang(false).newString();
                    placeHolders[16] = "MAP IMAGE";
                    placeHolders[15] = "minecraft.png OR minecraft-dance.gif";
                    LanguageAPI.getLang(false).sendLangMessage("commands.menu.inputType", player, placeHolders);
                    LanguageAPI.getLang(false).sendLangMessage("commands.menu.inputExample", player, placeHolders);
                }
            }, event -> {
                itemMap.setMapImage(ChatColor.stripColor(event.getMessage()));
                String[] placeHolders = LanguageAPI.getLang(false).newString();
                placeHolders[16] = "MAP IMAGE";
                LanguageAPI.getLang(false).sendLangMessage("commands.menu.inputSet", player, placeHolders);
                creatingPane(event.getPlayer(), itemMap);
            }));
        } else if (itemMap.getMaterial().toString().contains("ARROW") && !itemMap.getMaterial().toString().contains("TIPPED_ARROW")) {
            creatingPane.addButton(new Button(ItemHandler.getItem("ENDER_PEARL", 1, false, "&e&lTeleport", "&7", "&7*Set the arrow to teleport", "&7the player upon landing.", "&9&lEnabled: &a" + String.valueOf(itemMap.isTeleport()).toUpperCase()), event -> teleportPane(player, itemMap, 0)));
        } else if (itemMap.getMaterial().toString().contains("CHARGE") || itemMap.getMaterial().toString().equalsIgnoreCase("FIREWORK_STAR")) {
            Interface colorPane = new Interface(true, 6, GUIName, player);
            colorPane.setReturnButton(new Button(ItemHandler.getItem("BARRIER", 1, false, "&c&l&nReturn", "&7", "&7*Returns you to the item definition menu"), event -> creatingPane(player, itemMap)));
            for (DyeColor color : DyeColor.values()) {
                colorPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "GRAY_DYE" : "351:8"), 1, false, "&f" + color.name(), "&7", "&7*This will be the color", "&7of your firework charge."), event -> {
                    itemMap.setChargeColor(color);
                    creatingPane(player, itemMap);
                }));
            }
            creatingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "PINK_DYE" : "351:9"), 1, false, "&e&lCharge Color", "&7", "&7*Set the color of", "&7the firework star.", "&9&lColor: &a" + StringUtils.nullCheck(itemMap.getChargeColor() + "")), event -> {
                if (StringUtils.nullCheck(itemMap.getChargeColor() + "") != "NONE") {
                    itemMap.setChargeColor(null);
                    creatingPane(player, itemMap);
                } else {
                    colorPane.open(player);
                }
            }));
        } else if (itemMap.getMaterial().isEdible() || itemMap.getMaterial().toString().equalsIgnoreCase("POTION")) {
            creatingPane.addButton(new Button(ItemHandler.getItem("POTION", 1, false, "&e&lEffects", "&7", "&7*Add custom effects after", "&7consuming the item.", "&9&lPotion-Effects: &a" + StringUtils.nullCheck(potionList)), event -> potionPane(player, itemMap, 0)));
        } else if (itemMap.getMaterial().toString().contains("BANNER")) {
            creatingPane.addButton(new Button(ItemHandler.getItem("CLAY_BALL", 1, false, "&e&lBanner Patterns", "&7", "&7*Set custom patterns that", "&7will appear on the item.", "&9&lBanner-Meta: &a" + StringUtils.nullCheck(patternList)), event -> bannerPane(player, itemMap)));
        } else if (!ItemHandler.getDesignatedSlot(itemMap.getMaterial()).equalsIgnoreCase("noslot") && !itemMap.getMaterial().toString().contains("LEATHER_")) {
            creatingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "ENCHANTED_GOLDEN_APPLE" : "322:1"), 1, false, "&a&lAttributes", "&7", "&7*Add a custom attribute to", "&7your armor or weapon.", (StringUtils.nullCheck(attributeList) != "NONE" ? "&9&lAttributes: &a" + attributeList : "")), event -> {
                attributePane(player, itemMap, false);
            }));
        } else if (itemMap.getMaterial().toString().contains("SHULKER")) {
            creatingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "PURPLE_SHULKER_BOX" : "229"), 1, false, "&a&lContents", "&7", "&7*Add existing custom items into", "&7the contents of this box.", "&9Enabled: &a" + (itemMap.getContents() != null && !itemMap.getContents().isEmpty() ? "YES" : "NONE")), event -> {
                Interface contentsPane = new Interface(true, 6, GUIName, player);
                SchedulerUtils.runAsync(() -> {
                    setPage(player, contentsPane, ItemUtilities.getUtilities().copyItems(), itemMap, null, 0);
                });
                contentsPane.open(player);
            }));
        } else {
            creatingPane.addButton(new Button(ItemHandler.getItem("MAGMA_CREAM", 1, false, "&e&lOther Settings", "&7", "&7*Settings that are specific", "&7to the item's material type.", (specialItem(itemMap) ? "" : "&7"), (specialItem(itemMap) ? "" : "&c&lERROR: &7A " + itemMap.getMaterial().name() + " &7is NOT"), (specialItem(itemMap) ? "" : "&7a special material type.")), event -> {
                if (specialItem(itemMap)) {
                    otherPane(player, itemMap);
                }
            }));
        }
        creatingPane.addButton(new Button(fillerPaneGItem));
        creatingPane.addButton(new Button(ItemHandler.getItem("BARRIER", 1, false, "&c&l&nMain Menu", "&7", "&7*Cancel and return to the main menu.", "&7", "&c&lWARNING: &7This item has NOT been saved!"), event -> returnConfirm(player, itemMap)));
        creatingPane.addButton(new Button(fillerPaneBItem), 3);
        creatingPane.addButton(new Button(ItemHandler.getItem((ServerUtils.hasSpecificUpdate("1_13") ? "LIME_WOOL" : "WOOL:5"), 1, false, "&a&l&nSave to Config", "&7", "&7*Saves the custom item", "&7settings to the items.yml file."), event -> {
            itemMap.saveToConfig();
            String[] placeHolders = LanguageAPI.getLang(false).newString();
            placeHolders[3] = itemMap.getConfigName();
            LanguageAPI.getLang(false).sendLangMessage("commands.menu.itemSaved", player, placeHolders);
            ConfigHandler.getConfig().reloadConfigs(true);
            player.closeInventory();
        }));
        creatingPane.addButton(new Button(fillerPaneBItem), 3);
        creatingPane.addButton(new Button(ItemHandler.getItem("BARRIER", 1, false, "&c&l&nMain Menu", "&7", "&7*Cancel and return you to the main menu.", "&7", "&c&lWARNING: &7This item has NOT been saved!"), event -> returnConfirm(player, itemMap)));
    });
    creatingPane.open(player);
}
Also used : ItemHandler(me.RockinChaos.itemjoin.handlers.ItemHandler) PatternType(org.bukkit.block.banner.PatternType) Enchantment(org.bukkit.enchantments.Enchantment) GameProfile(com.mojang.authlib.GameProfile) Player(org.bukkit.entity.Player) LanguageAPI(me.RockinChaos.itemjoin.utils.api.LanguageAPI) Inventory(org.bukkit.inventory.Inventory) DependAPI(me.RockinChaos.itemjoin.utils.api.DependAPI) World(org.bukkit.World) Map(java.util.Map) PlayerInventory(org.bukkit.inventory.PlayerInventory) Material(org.bukkit.Material) FireworkEffectMeta(org.bukkit.inventory.meta.FireworkEffectMeta) Bukkit(org.bukkit.Bukkit) Action(me.RockinChaos.itemjoin.item.ItemCommand.Action) CommandSender(org.bukkit.command.CommandSender) UUID(java.util.UUID) Sound(org.bukkit.Sound) ItemMap(me.RockinChaos.itemjoin.item.ItemMap) EntityType(org.bukkit.entity.EntityType) FireworkMeta(org.bukkit.inventory.meta.FireworkMeta) ItemUtilities(me.RockinChaos.itemjoin.item.ItemUtilities) ItemStack(org.bukkit.inventory.ItemStack) List(java.util.List) SchedulerUtils(me.RockinChaos.itemjoin.utils.SchedulerUtils) StringUtils(me.RockinChaos.itemjoin.utils.StringUtils) LeatherArmorMeta(org.bukkit.inventory.meta.LeatherArmorMeta) ItemJoin(me.RockinChaos.itemjoin.ItemJoin) PotionEffectType(org.bukkit.potion.PotionEffectType) Button(me.RockinChaos.itemjoin.utils.interfaces.Button) ItemMeta(org.bukkit.inventory.meta.ItemMeta) Pattern(org.bukkit.block.banner.Pattern) BookMeta(org.bukkit.inventory.meta.BookMeta) Interface(me.RockinChaos.itemjoin.utils.interfaces.Interface) HashMap(java.util.HashMap) HeadDatabaseAPI(me.arcaniax.hdb.api.HeadDatabaseAPI) BannerMeta(org.bukkit.inventory.meta.BannerMeta) ServerUtils(me.RockinChaos.itemjoin.utils.ServerUtils) ArrayList(java.util.ArrayList) FileConfiguration(org.bukkit.configuration.file.FileConfiguration) Environment(org.bukkit.World.Environment) Property(com.mojang.authlib.properties.Property) ConfigHandler(me.RockinChaos.itemjoin.handlers.ConfigHandler) Color(org.bukkit.Color) Attribute(org.bukkit.attribute.Attribute) Type(org.bukkit.FireworkEffect.Type) PlayerHandler(me.RockinChaos.itemjoin.handlers.PlayerHandler) LegacyAPI(me.RockinChaos.itemjoin.utils.api.LegacyAPI) DecimalFormat(java.text.DecimalFormat) Field(java.lang.reflect.Field) File(java.io.File) PotionEffect(org.bukkit.potion.PotionEffect) CommandSequence(me.RockinChaos.itemjoin.item.ItemCommand.CommandSequence) YamlConfiguration(org.bukkit.configuration.file.YamlConfiguration) ItemCommand(me.RockinChaos.itemjoin.item.ItemCommand) ChatColor(org.bukkit.ChatColor) DyeColor(org.bukkit.DyeColor) Pattern(org.bukkit.block.banner.Pattern) PotionEffect(org.bukkit.potion.PotionEffect) Button(me.RockinChaos.itemjoin.utils.interfaces.Button) DyeColor(org.bukkit.DyeColor) Interface(me.RockinChaos.itemjoin.utils.interfaces.Interface)

Aggregations

GameProfile (com.mojang.authlib.GameProfile)108 Property (com.mojang.authlib.properties.Property)108 File (java.io.File)108 Field (java.lang.reflect.Field)108 DecimalFormat (java.text.DecimalFormat)108 ArrayList (java.util.ArrayList)108 HashMap (java.util.HashMap)108 List (java.util.List)108 Map (java.util.Map)108 UUID (java.util.UUID)108 ItemJoin (me.RockinChaos.itemjoin.ItemJoin)108 ConfigHandler (me.RockinChaos.itemjoin.handlers.ConfigHandler)108 ItemHandler (me.RockinChaos.itemjoin.handlers.ItemHandler)108 PlayerHandler (me.RockinChaos.itemjoin.handlers.PlayerHandler)108 ItemCommand (me.RockinChaos.itemjoin.item.ItemCommand)108 Action (me.RockinChaos.itemjoin.item.ItemCommand.Action)108 CommandSequence (me.RockinChaos.itemjoin.item.ItemCommand.CommandSequence)108 ItemMap (me.RockinChaos.itemjoin.item.ItemMap)108 ItemUtilities (me.RockinChaos.itemjoin.item.ItemUtilities)108 SchedulerUtils (me.RockinChaos.itemjoin.utils.SchedulerUtils)108