diff --git a/src/main/java/io/github/sefiraat/equivalencytech/commands/Commands.java b/src/main/java/io/github/sefiraat/equivalencytech/commands/Commands.java index f911664..7289af5 100644 --- a/src/main/java/io/github/sefiraat/equivalencytech/commands/Commands.java +++ b/src/main/java/io/github/sefiraat/equivalencytech/commands/Commands.java @@ -45,16 +45,16 @@ public void onDefault(CommandSender sender) { if (i.getType() != Material.AIR) { if (ContainerStorage.isCrafting(i, plugin)) { if (plugin.getEmcDefinitions().getEmcEQ().containsKey(i.getItemMeta().getDisplayName())) { - player.sendMessage(Messages.msgCmdEmcDisplay(i.getItemMeta().getDisplayName(), Utils.getEmcEq(plugin, i))); - player.sendMessage(Messages.msgCmdEmcDisplayStack(i.getItemMeta().getDisplayName(), i.getAmount(), Utils.getEmcEq(plugin, i) * i.getAmount())); + player.sendMessage(Messages.msgCmdEmcDisplay(i.getItemMeta().getDisplayName(), Utils.getEMC(plugin, i))); + player.sendMessage(Messages.msgCmdEmcDisplayStack(i.getItemMeta().getDisplayName(), i.getAmount(), Utils.getEMC(plugin, i) * i.getAmount())); } else { player.sendMessage(Messages.msgCmdEmcNone(plugin)); } return; } if (plugin.getEmcDefinitions().getEmcExtended().containsKey(i.getType())) { - player.sendMessage(Messages.msgCmdEmcDisplay(i.getType(), Utils.getEMC(plugin, i.getType()))); - player.sendMessage(Messages.msgCmdEmcDisplayStack(i.getType(), i.getAmount(), Utils.getEMC(plugin, i.getType()) * i.getAmount())); + player.sendMessage(Messages.msgCmdEmcDisplay(i.getType(), Utils.getEMC(plugin, i))); + player.sendMessage(Messages.msgCmdEmcDisplayStack(i.getType(), i.getAmount(), Utils.getEMC(plugin, i) * i.getAmount())); } else { player.sendMessage(Messages.msgCmdEmcNone(plugin)); } diff --git a/src/main/java/io/github/sefiraat/equivalencytech/gui/GUIItems.java b/src/main/java/io/github/sefiraat/equivalencytech/gui/GUIItems.java index 30bb98e..be9eeda 100644 --- a/src/main/java/io/github/sefiraat/equivalencytech/gui/GUIItems.java +++ b/src/main/java/io/github/sefiraat/equivalencytech/gui/GUIItems.java @@ -5,6 +5,7 @@ import io.github.sefiraat.equivalencytech.configuration.ConfigStrings; import io.github.sefiraat.equivalencytech.misc.Utils; import io.github.sefiraat.equivalencytech.statics.Config; +import io.github.sefiraat.equivalencytech.statics.ContainerStorage; import io.github.sefiraat.equivalencytech.statics.Messages; import io.github.sefiraat.equivalencytech.statics.SkullTextures; import me.mattstudios.mfgui.gui.guis.GuiItem; @@ -61,28 +62,17 @@ public static GuiItem guiOrbFiller(EquivalencyTech plugin) { return g; } - public static GuiItem guiEMCItem(EquivalencyTech plugin, Material material) { - - GuiItem g = new GuiItem(material); - ItemStack i = g.getItemStack(); - ItemMeta im = i.getItemMeta(); - String itemName = Utils.materialFriendlyName(material); - - im.setDisplayName(ChatColor.WHITE + itemName); - im.addItemFlags(ItemFlag.HIDE_ENCHANTS); - - im.setLore(getEmcItemLore(plugin, material)); - i.setItemMeta(im); - g.setItemStack(i); - return g; - } - - public static GuiItem guiEMCItem(EquivalencyTech plugin, ItemStack itemStack) { + public static GuiItem guiEMCItem(EquivalencyTech plugin, ItemStack itemStack, boolean isVanilla) { GuiItem g = new GuiItem(itemStack); ItemMeta im = itemStack.getItemMeta(); - im.setDisplayName(ChatColor.WHITE + im.getDisplayName()); + if (isVanilla) { + im.setDisplayName(ChatColor.WHITE + Utils.materialFriendlyName(itemStack.getType())); + } else { + im.setDisplayName(ChatColor.WHITE + ChatColor.stripColor(im.getDisplayName())); + } + im.addItemFlags(ItemFlag.HIDE_ENCHANTS); im.setLore(getEmcItemLore(plugin, itemStack)); @@ -91,21 +81,10 @@ public static GuiItem guiEMCItem(EquivalencyTech plugin, ItemStack itemStack) { return g; } - public static List getEmcItemLore(EquivalencyTech plugin, Material material) { - ConfigStrings c = plugin.getConfigClass().getStrings(); - List lore = new ArrayList<>(); - lore.add(Messages.THEME_EMC_PURPLE + "EMC: " + Utils.getEMC(plugin, material)); - lore.add(""); - lore.add(Messages.THEME_CLICK_INSTRUCTION + "Left Click: " + ChatColor.WHITE + c.getGuiEntryLeftClick()); - lore.add(Messages.THEME_CLICK_INSTRUCTION + "Right Click: " + ChatColor.WHITE + c.getGuiEntryRightClick()); - return lore; - } - - public static List getEmcItemLore(EquivalencyTech plugin, ItemStack itemStack) { ConfigStrings c = plugin.getConfigClass().getStrings(); List lore = new ArrayList<>(); - lore.add(Messages.THEME_EMC_PURPLE + "EMC: " + Utils.getEmcEq(plugin, itemStack)); + lore.add(Messages.THEME_EMC_PURPLE + "EMC: " + Utils.getEMC(plugin, itemStack)); lore.add(""); lore.add(Messages.THEME_CLICK_INSTRUCTION + "Left Click: " + ChatColor.WHITE + c.getGuiEntryLeftClick()); lore.add(Messages.THEME_CLICK_INSTRUCTION + "Right Click: " + ChatColor.WHITE + c.getGuiEntryRightClick()); diff --git a/src/main/java/io/github/sefiraat/equivalencytech/gui/GuiTransmutationOrb.java b/src/main/java/io/github/sefiraat/equivalencytech/gui/GuiTransmutationOrb.java index 2e80177..16e2ca5 100644 --- a/src/main/java/io/github/sefiraat/equivalencytech/gui/GuiTransmutationOrb.java +++ b/src/main/java/io/github/sefiraat/equivalencytech/gui/GuiTransmutationOrb.java @@ -1,9 +1,11 @@ package io.github.sefiraat.equivalencytech.gui; import io.github.sefiraat.equivalencytech.EquivalencyTech; +import io.github.sefiraat.equivalencytech.misc.Utils; import io.github.sefiraat.equivalencytech.statics.Config; import io.github.sefiraat.equivalencytech.statics.ContainerStorage; import io.github.sefiraat.equivalencytech.statics.Messages; +import jdk.jshell.execution.Util; import me.mattstudios.mfgui.gui.components.ItemBuilder; import me.mattstudios.mfgui.gui.guis.GuiItem; import me.mattstudios.mfgui.gui.guis.PaginatedGui; @@ -51,18 +53,36 @@ public static GuiTransmutationOrb buildGui(EquivalencyTech plugin, Player player List learnedItems = Config.getLearnedItems(plugin, player); + int leftOverSlots = GuiTransmutationOrb.PAGE_SIZE - (learnedItems.size() % GuiTransmutationOrb.PAGE_SIZE); + for (String s : learnedItems) { + + ItemStack itemStack; GuiItem guiItem; + boolean isVanilla = true; + if (plugin.getEqItems().getEqItemMap().containsKey(s)) { - guiItem = GUIItems.guiEMCItem(plugin, plugin.getEqItems().getEqItemMap().get(s).clone()); + isVanilla = false; + } + + if (isVanilla) { + itemStack = new ItemStack(Material.valueOf(s)); } else { - guiItem = GUIItems.guiEMCItem(plugin, Material.valueOf(s)); + itemStack = plugin.getEqItems().getEqItemMap().get(s).clone(); + } + + if (Utils.getEMC(plugin, itemStack) == null) { + // A learned item has null emc - likely removed from the config post go live - skip + leftOverSlots += 1; + continue; } + + guiItem = GUIItems.guiEMCItem(plugin, itemStack, isVanilla); + guiItem.setAction(event -> emcItemClicked(event, plugin)); gui.addItem(guiItem); } - int leftOverSlots = GuiTransmutationOrb.PAGE_SIZE - (learnedItems.size() % GuiTransmutationOrb.PAGE_SIZE); for (int i = 0; i < leftOverSlots; i++) { gui.addItem(GUIItems.guiOrbFiller(plugin)); @@ -167,6 +187,7 @@ private static void emcItemClicked(InventoryClickEvent e, EquivalencyTech plugin } private static void emcWithdrawOne(InventoryClickEvent e, EquivalencyTech plugin) { + Player player = (Player) e.getWhoClicked(); if (player.getInventory().firstEmpty() == -1) { @@ -174,18 +195,18 @@ private static void emcWithdrawOne(InventoryClickEvent e, EquivalencyTech plugin return; } - boolean isEQ = ContainerStorage.isCrafting(e.getCurrentItem(), plugin); + ItemStack clickedItem = e.getCurrentItem(); + boolean isEQ = ContainerStorage.isCrafting(clickedItem, plugin); double playerEmc = Config.getPlayerEmc(plugin, player); + Double emcValue = Utils.getEMC(plugin, clickedItem); String itemName; - Double emcValue; if (isEQ) { - itemName = e.getCurrentItem().getItemMeta().getDisplayName(); - emcValue = plugin.getEmcDefinitions().getEmcEQ().get(e.getCurrentItem().getItemMeta().getDisplayName()); + itemName = clickedItem.getItemMeta().getDisplayName(); } else { - itemName = e.getCurrentItem().getType().toString(); - emcValue = plugin.getEmcDefinitions().getEmcValue(e.getCurrentItem().getType()); + itemName = clickedItem.getType().toString(); } + if (playerEmc >= emcValue) { ItemStack itemStack; if (isEQ) { @@ -202,26 +223,24 @@ private static void emcWithdrawOne(InventoryClickEvent e, EquivalencyTech plugin } private static void emcWithdrawStack(InventoryClickEvent e, EquivalencyTech plugin) { + Player player = (Player) e.getWhoClicked(); double playerEmc = Config.getPlayerEmc(plugin, player); - ItemStack clickedItemStack = e.getCurrentItem(); - Material material = clickedItemStack.getType(); + ItemStack clickedItem = e.getCurrentItem(); + Material material = clickedItem.getType(); boolean isEQ = ContainerStorage.isCrafting(e.getCurrentItem(), plugin); String itemName; - Double emcValue; + Double emcValue = Utils.getEMC(plugin, clickedItem); if (isEQ) { itemName = e.getCurrentItem().getItemMeta().getDisplayName(); - emcValue = plugin.getEmcDefinitions().getEmcEQ().get(e.getCurrentItem().getItemMeta().getDisplayName()); } else { - itemName = e.getCurrentItem().getType().toString(); - emcValue = plugin.getEmcDefinitions().getEmcValue(material); + itemName = material.toString(); } - - int amount = clickedItemStack.getMaxStackSize(); + int amount = clickedItem.getMaxStackSize(); if (emcValue != null) { double emcValueStack = emcValue * amount; if (player.getInventory().firstEmpty() == -1) { diff --git a/src/main/java/io/github/sefiraat/equivalencytech/listeners/CraftListener.java b/src/main/java/io/github/sefiraat/equivalencytech/listeners/CraftListener.java index 66ca1c7..0dc3acf 100644 --- a/src/main/java/io/github/sefiraat/equivalencytech/listeners/CraftListener.java +++ b/src/main/java/io/github/sefiraat/equivalencytech/listeners/CraftListener.java @@ -30,9 +30,8 @@ public void onPreCraft(PrepareItemCraftEvent e) { Player player = (Player) e.getView().getPlayer(); if (e.getRecipe() != null && e.getRecipe().getResult().getType() == Material.PLAYER_HEAD) { - player.sendMessage("output valid"); ItemStack[] contents = e.getInventory().getMatrix(); - List contentlayer = new ArrayList<>(); + List contentLayer = new ArrayList<>(); for (ItemStack itemStack : contents) { ItemStack clone = null; @@ -41,32 +40,23 @@ public void onPreCraft(PrepareItemCraftEvent e) { clone.setAmount(1); player.sendMessage(clone.getType().toString()); } - contentlayer.add(clone); + contentLayer.add(clone); } - if (contentlayer.equals(Recipes.recipeCoal2Check(plugin))) { - player.sendMessage("coal2"); + if (contentLayer.equals(Recipes.recipeCoal2Check(plugin))) { e.getInventory().setResult(plugin.getEqItems().getMobiusFuel().getItemClone()); - } else if (contentlayer.equals(Recipes.recipeCoal3Check(plugin))) { - player.sendMessage("coal3"); + } else if (contentLayer.equals(Recipes.recipeCoal3Check(plugin))) { e.getInventory().setResult(plugin.getEqItems().getAeternalisFuel().getItemClone()); - } else if (contentlayer.equals(Recipes.recipeDarkMatterCheck(plugin))) { - player.sendMessage("dark"); + } else if (contentLayer.equals(Recipes.recipeDarkMatterCheck(plugin))) { e.getInventory().setResult(plugin.getEqItems().getDarkMatter().getItemClone()); - } else if (contentlayer.equals(Recipes.recipeRedMatterCheck(plugin))) { - player.sendMessage("red"); + } else if (contentLayer.equals(Recipes.recipeRedMatterCheck(plugin))) { e.getInventory().setResult(plugin.getEqItems().getRedMatter().getItemClone()); - } else if (contentlayer.equals(Recipes.recipeTransmutationOrbCheck(plugin))) { - player.sendMessage("orb"); + } else if (contentLayer.equals(Recipes.recipeTransmutationOrbCheck(plugin))) { e.getInventory().setResult(plugin.getEqItems().getTransmutationOrb().getItemClone()); - } else if (contentsEQ(contentlayer)) { + } else if (contentsEQ(contentLayer)) { e.getInventory().setResult(new ItemStack(Material.AIR)); } - } - - - } } diff --git a/src/main/java/io/github/sefiraat/equivalencytech/misc/EQItems.java b/src/main/java/io/github/sefiraat/equivalencytech/misc/EQItems.java index c5c4808..fec3e2c 100644 --- a/src/main/java/io/github/sefiraat/equivalencytech/misc/EQItems.java +++ b/src/main/java/io/github/sefiraat/equivalencytech/misc/EQItems.java @@ -2,6 +2,7 @@ import io.github.sefiraat.equivalencytech.EquivalencyTech; import io.github.sefiraat.equivalencytech.items.*; +import net.md_5.bungee.api.ChatColor; import org.bukkit.inventory.ItemStack; import java.util.HashMap; @@ -60,12 +61,12 @@ public EQItems(EquivalencyTech plugin) { redMatter = new RedMatter(plugin); eqItemMap = new HashMap<>(); - eqItemMap.put(transmutationOrb.getItem().getItemMeta().getDisplayName(), transmutationOrb.getItemClone()); - eqItemMap.put(alchemicalCoal.getItem().getItemMeta().getDisplayName(), alchemicalCoal.getItemClone()); - eqItemMap.put(mobiusFuel.getItem().getItemMeta().getDisplayName(), mobiusFuel.getItemClone()); - eqItemMap.put(aeternalisFuel.getItem().getItemMeta().getDisplayName(), aeternalisFuel.getItemClone()); - eqItemMap.put(darkMatter.getItem().getItemMeta().getDisplayName(), darkMatter.getItemClone()); - eqItemMap.put(redMatter.getItem().getItemMeta().getDisplayName(), redMatter.getItemClone()); + eqItemMap.put(ChatColor.stripColor(transmutationOrb.getItem().getItemMeta().getDisplayName()), transmutationOrb.getItemClone()); + eqItemMap.put(ChatColor.stripColor(alchemicalCoal.getItem().getItemMeta().getDisplayName()), alchemicalCoal.getItemClone()); + eqItemMap.put(ChatColor.stripColor(mobiusFuel.getItem().getItemMeta().getDisplayName()), mobiusFuel.getItemClone()); + eqItemMap.put(ChatColor.stripColor(aeternalisFuel.getItem().getItemMeta().getDisplayName()), aeternalisFuel.getItemClone()); + eqItemMap.put(ChatColor.stripColor(darkMatter.getItem().getItemMeta().getDisplayName()), darkMatter.getItemClone()); + eqItemMap.put(ChatColor.stripColor(redMatter.getItem().getItemMeta().getDisplayName()), redMatter.getItemClone()); } diff --git a/src/main/java/io/github/sefiraat/equivalencytech/misc/Utils.java b/src/main/java/io/github/sefiraat/equivalencytech/misc/Utils.java index 25b23c4..ce504c1 100644 --- a/src/main/java/io/github/sefiraat/equivalencytech/misc/Utils.java +++ b/src/main/java/io/github/sefiraat/equivalencytech/misc/Utils.java @@ -1,6 +1,7 @@ package io.github.sefiraat.equivalencytech.misc; import io.github.sefiraat.equivalencytech.EquivalencyTech; +import io.github.sefiraat.equivalencytech.statics.ContainerStorage; import io.github.sefiraat.equivalencytech.statics.Messages; import org.apache.commons.lang.WordUtils; import org.bukkit.Material; @@ -16,12 +17,13 @@ private Utils() { throw new IllegalStateException("Utility class"); } - public static Double getEMC(EquivalencyTech plugin, Material m) { - return plugin.getEmcDefinitions().getEmcExtended().get(m); - } - - public static Double getEmcEq(EquivalencyTech plugin, ItemStack i) { - return plugin.getEmcDefinitions().getEmcEQ().get(i.getItemMeta().getDisplayName()); + public static Double getEMC(EquivalencyTech plugin, ItemStack itemStack) { + if (ContainerStorage.isCrafting(itemStack, plugin)) { + ItemStack eqStack = plugin.getEqItems().getEqItemMap().get(itemStack.getItemMeta().getDisplayName()); + return plugin.getEmcDefinitions().getEmcEQ().get(eqStack.getItemMeta().getDisplayName()); + } else { + return plugin.getEmcDefinitions().getEmcExtended().get(itemStack.getType()); + } } public static String toTitleCase(String string) { diff --git a/src/main/java/io/github/sefiraat/equivalencytech/statics/Config.java b/src/main/java/io/github/sefiraat/equivalencytech/statics/Config.java index 8c8bd17..c127cda 100644 --- a/src/main/java/io/github/sefiraat/equivalencytech/statics/Config.java +++ b/src/main/java/io/github/sefiraat/equivalencytech/statics/Config.java @@ -2,6 +2,7 @@ import io.github.sefiraat.equivalencytech.EquivalencyTech; import io.github.sefiraat.equivalencytech.misc.Utils; +import org.bukkit.ChatColor; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; @@ -16,7 +17,7 @@ private Config() { public static void addLearnedItem(EquivalencyTech plugin, Player player, String itemName) { FileConfiguration c = plugin.getLearnedItemsConfig(); - c.set(player.getUniqueId().toString() + "." + itemName, true); + c.set(player.getUniqueId().toString() + "." + ChatColor.stripColor(itemName), true); } public static void removeLearnedItem(EquivalencyTech plugin, Player player, String itemName) {