From 9f282aaa82baf1ab3d1eb5113d84e9a70c72a023 Mon Sep 17 00:00:00 2001 From: okx-code Date: Sun, 8 Dec 2024 17:45:20 +0000 Subject: [PATCH] add custom item support to /item --- .../mc/civmodcore/inventory/CustomItem.java | 9 +++++++++ .../FactoryMod/commands/FMCommandManager.java | 15 +++++++++++++++ .../igotyou/FactoryMod/commands/ItemUseMenu.java | 14 ++++++++------ .../igotyou/FactoryMod/utility/ItemUseGUI.java | 4 ++-- 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/plugins/civmodcore-paper/src/main/java/vg/civcraft/mc/civmodcore/inventory/CustomItem.java b/plugins/civmodcore-paper/src/main/java/vg/civcraft/mc/civmodcore/inventory/CustomItem.java index 1cd3fff6b..ef95218b3 100644 --- a/plugins/civmodcore-paper/src/main/java/vg/civcraft/mc/civmodcore/inventory/CustomItem.java +++ b/plugins/civmodcore-paper/src/main/java/vg/civcraft/mc/civmodcore/inventory/CustomItem.java @@ -6,8 +6,13 @@ import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.persistence.PersistentDataType; import org.bukkit.plugin.java.JavaPlugin; import vg.civcraft.mc.civmodcore.CivModCorePlugin; +import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; public class CustomItem { @@ -47,4 +52,8 @@ public class CustomItem { return null; } } + + public static Set getKeys() { + return Collections.unmodifiableSet(customItems.keySet()); + } } diff --git a/plugins/factorymod-paper/src/main/java/com/github/igotyou/FactoryMod/commands/FMCommandManager.java b/plugins/factorymod-paper/src/main/java/com/github/igotyou/FactoryMod/commands/FMCommandManager.java index a3bce46b7..dab586f6f 100644 --- a/plugins/factorymod-paper/src/main/java/com/github/igotyou/FactoryMod/commands/FMCommandManager.java +++ b/plugins/factorymod-paper/src/main/java/com/github/igotyou/FactoryMod/commands/FMCommandManager.java @@ -4,9 +4,16 @@ import co.aikar.commands.BukkitCommandCompletionContext; import co.aikar.commands.CommandCompletions; import com.github.igotyou.FactoryMod.FactoryMod; import com.github.igotyou.FactoryMod.eggs.IFactoryEgg; +import org.bukkit.Material; import org.bukkit.plugin.Plugin; import org.jetbrains.annotations.NotNull; import vg.civcraft.mc.civmodcore.commands.CommandManager; +import vg.civcraft.mc.civmodcore.inventory.CustomItem; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Set; +import java.util.TreeSet; public class FMCommandManager extends CommandManager { @@ -29,5 +36,13 @@ public class FMCommandManager extends CommandManager { super.registerCompletions(completions); completions.registerCompletion("FM_Factories", (context) -> FactoryMod.getInstance().getManager().getAllFactoryEggs().stream().map( IFactoryEgg::getName).toList()); + completions.registerCompletion("materials_and_custom_items", (context) -> { + Set allCompletions = new TreeSet<>(); + for (Material m : Material.values()) { + allCompletions.add(m.name().toLowerCase()); + } + allCompletions.addAll(CustomItem.getKeys()); + return allCompletions; + }); } } diff --git a/plugins/factorymod-paper/src/main/java/com/github/igotyou/FactoryMod/commands/ItemUseMenu.java b/plugins/factorymod-paper/src/main/java/com/github/igotyou/FactoryMod/commands/ItemUseMenu.java index 585e544da..152178244 100644 --- a/plugins/factorymod-paper/src/main/java/com/github/igotyou/FactoryMod/commands/ItemUseMenu.java +++ b/plugins/factorymod-paper/src/main/java/com/github/igotyou/FactoryMod/commands/ItemUseMenu.java @@ -11,25 +11,27 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import vg.civcraft.mc.civmodcore.inventory.CustomItem; public class ItemUseMenu extends BaseCommand { @CommandAlias("item") @Syntax("[material]") @Description("Opens a GUI allowing you to browse all recipes which use or output the item in your main hand") - @CommandCompletion("@materials") + @CommandCompletion("@materials_and_custom_items") public void execute(Player p, @Optional String material) { if (material == null) { ItemUseGUI gui = new ItemUseGUI(p); gui.showItemOverview(p.getInventory().getItemInMainHand()); - } else { + } else if (Material.matchMaterial(material) != null) { Material mat = Material.matchMaterial(material); - if (mat == null) { - p.sendMessage(ChatColor.RED + "The item " + material + " does not exist"); - return; - } ItemUseGUI gui = new ItemUseGUI(p); gui.showItemOverview(new ItemStack(mat)); + } else if (CustomItem.getCustomItem(material.toLowerCase()) != null) { + ItemUseGUI gui = new ItemUseGUI(p); + gui.showItemOverview(CustomItem.getCustomItem(material.toLowerCase())); + } else { + p.sendMessage(ChatColor.RED + "The item " + material + " does not exist"); } } } diff --git a/plugins/factorymod-paper/src/main/java/com/github/igotyou/FactoryMod/utility/ItemUseGUI.java b/plugins/factorymod-paper/src/main/java/com/github/igotyou/FactoryMod/utility/ItemUseGUI.java index b17d18865..8525df799 100644 --- a/plugins/factorymod-paper/src/main/java/com/github/igotyou/FactoryMod/utility/ItemUseGUI.java +++ b/plugins/factorymod-paper/src/main/java/com/github/igotyou/FactoryMod/utility/ItemUseGUI.java @@ -150,11 +150,11 @@ public class ItemUseGUI { ItemUtils.setDisplayName(is, ChatColor.DARK_GREEN + fccEgg.getName()); List lore = new ArrayList<>(); lore.add(ChatColor.DARK_AQUA + recipe.getName()); - lore.add(ChatColor.GOLD + "input:"); + lore.add(ChatColor.GOLD + "Input:"); for (String input : recipe.getTextualInputRepresentation(null, null)) { lore.add(formatIngredient(input, item)); } - lore.add(ChatColor.GOLD + "output:"); + lore.add(ChatColor.GOLD + "Output:"); for (String output : recipe.getTextualOutputRepresentation(null, null)) { lore.add(formatIngredient(output, item)); }