From f07ca103e53464af41e7902dce2ce4c3e2d49714 Mon Sep 17 00:00:00 2001 From: Aria Date: Sat, 14 Dec 2019 01:54:56 +0100 Subject: [PATCH] Crafting Stations now show the amount of the item crafted For example, a recipe with 3 Steel Ingots as output will display "3 x Steel Ingot" and the display item will be in a stack of 3 --- .../item/plugin/crafting/CraftingRecipeDisplay.java | 12 +++++++++--- .../net/Indyuce/mmoitems/api/util/IsSimilar.java | 4 +--- .../Indyuce/mmoitems/api/util/message/Message.java | 1 + .../Indyuce/mmoitems/gui/CraftingStationPreview.java | 8 ++++++-- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/crafting/CraftingRecipeDisplay.java b/src/main/java/net/Indyuce/mmoitems/api/item/plugin/crafting/CraftingRecipeDisplay.java index f0758826..78570262 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/item/plugin/crafting/CraftingRecipeDisplay.java +++ b/src/main/java/net/Indyuce/mmoitems/api/item/plugin/crafting/CraftingRecipeDisplay.java @@ -13,12 +13,13 @@ import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.crafting.condition.Condition.ConditionInfo; import net.Indyuce.mmoitems.api.crafting.recipe.CraftingRecipe; import net.Indyuce.mmoitems.api.crafting.recipe.RecipeInfo; +import net.Indyuce.mmoitems.api.item.NBTItem; import net.Indyuce.mmoitems.api.item.plugin.ConfigItem; +import net.Indyuce.mmoitems.api.util.message.Message; import net.Indyuce.mmoitems.version.nms.ItemTag; public class CraftingRecipeDisplay extends ConfigItem { @@ -105,13 +106,18 @@ public class CraftingRecipeDisplay extends ConfigItem { lore.set(n, ChatColor.translateAlternateColorCodes('&', lore.get(n))); ItemStack item = craftingRecipe.getOutput().getPreview(); + int amount = craftingRecipe.getOutput().getAmount(); + + if(amount > 64) lore.add(0, Message.STATION_BIG_STACK.format(ChatColor.GOLD, "#size#", "" + amount).toString()); + else item.setAmount(amount); + ItemMeta meta = item.getItemMeta(); meta.addItemFlags(ItemFlag.values()); - meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', name.replace("#name#", MMOUtils.getDisplayName(item)))); + meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', name.replace("#name#", (amount > 1 ? (ChatColor.WHITE + "" + amount + " x ") : "") + MMOUtils.getDisplayName(item)))); meta.setLore(lore); item.setItemMeta(meta); - return MMOItems.plugin.getNMS().getNBTItem(item).addTag(new ItemTag("recipeId", craftingRecipe.getId())).toItem(); + return NBTItem.get(item).addTag(new ItemTag("recipeId", craftingRecipe.getId())).toItem(); } } } diff --git a/src/main/java/net/Indyuce/mmoitems/api/util/IsSimilar.java b/src/main/java/net/Indyuce/mmoitems/api/util/IsSimilar.java index 1578eac9..e914b71c 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/util/IsSimilar.java +++ b/src/main/java/net/Indyuce/mmoitems/api/util/IsSimilar.java @@ -7,11 +7,9 @@ import net.Indyuce.mmoitems.version.VersionMaterial; public class IsSimilar { public static boolean check(ItemStack i1, ItemStack i2) { if(i1.getType() == VersionMaterial.PLAYER_HEAD.toMaterial()) { - System.out.println("IS SIMILAR: head"); return i1.toString().equals(i2.toString()); } - - System.out.println("IS SIMILAR: non head"); + return i1.isSimilar(i2); } } diff --git a/src/main/java/net/Indyuce/mmoitems/api/util/message/Message.java b/src/main/java/net/Indyuce/mmoitems/api/util/message/Message.java index 7e824632..d58435be 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/util/message/Message.java +++ b/src/main/java/net/Indyuce/mmoitems/api/util/message/Message.java @@ -76,6 +76,7 @@ public enum Message { CONDITIONS_NOT_MET("You cannot craft this item."), CRAFTING_CANCELED("You cancelled a crafting recipe."), CRAFTING_QUEUE_FULL("The crafting queue is currently full."), + STATION_BIG_STACK("Amount Crafted: #size#"), // ALREADY_CRAFTING("You are already crafting something else."), // ALREADY_CRAFTING_STATION("You are already crafting something else in that // station."), diff --git a/src/main/java/net/Indyuce/mmoitems/gui/CraftingStationPreview.java b/src/main/java/net/Indyuce/mmoitems/gui/CraftingStationPreview.java index f5a0bbf6..d2296007 100644 --- a/src/main/java/net/Indyuce/mmoitems/gui/CraftingStationPreview.java +++ b/src/main/java/net/Indyuce/mmoitems/gui/CraftingStationPreview.java @@ -62,8 +62,11 @@ public class CraftingStationPreview extends PluginInventory { for (int slot : fill) inv.setItem(slot, ConfigItem.FILL.getItem()); - if(recipe.getRecipe() instanceof CraftingRecipe) - inv.setItem(16, ((CraftingRecipe) recipe.getRecipe()).getOutput().getPreview()); + if(recipe.getRecipe() instanceof CraftingRecipe) { + ItemStack item = ((CraftingRecipe) recipe.getRecipe()).getOutput().getPreview(); + item.setAmount(((CraftingRecipe) recipe.getRecipe()).getOutput().getAmount()); + inv.setItem(16, item); + } if(recipe.getRecipe() instanceof UpgradingRecipe) { ItemStack stack = ((UpgradingRecipe) recipe.getRecipe()).getItem().getPreview(); ItemMeta meta = stack.getItemMeta(); @@ -76,6 +79,7 @@ public class CraftingStationPreview extends PluginInventory { inv.setItem(34, ConfigItem.CONFIRM.getItem()); ItemStack book = recipe.display(); book.setType(Material.KNOWLEDGE_BOOK); + book.setAmount(1); ItemMeta meta = book.getItemMeta(); List newLore = meta.getLore().subList(0, meta.getLore().size() - 3); meta.setLore(newLore);