From 6ea9494afdff4033746dd40fd3293a6bdef724e3 Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Tue, 9 Apr 2024 17:53:27 +0200 Subject: [PATCH] progress on unit repair config. --- .../cuanvil/gui/config/MainConfigGui.java | 17 ++- .../config/global/UnitRepairConfigGui.java | 62 ++++++++++ .../config/list/MappedGuiListConfigGui.java | 1 - .../config/list/UnitRepairElementListGui.java | 107 ++++++++++++++++++ 4 files changed, 182 insertions(+), 5 deletions(-) create mode 100644 src/main/java/xyz/alexcrea/cuanvil/gui/config/global/UnitRepairConfigGui.java create mode 100644 src/main/java/xyz/alexcrea/cuanvil/gui/config/list/UnitRepairElementListGui.java diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/MainConfigGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/MainConfigGui.java index 07f8a1f..d466a75 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/MainConfigGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/MainConfigGui.java @@ -88,11 +88,20 @@ public class MainConfigGui extends ChestGui { wipMeta.setDisplayName("\u00A7cWIP"); wipItemstack.setItemMeta(wipMeta); - GuiItem wip5 = new GuiItem(wipItemstack, GuiGlobalActions.stayInPlace, CustomAnvil.instance); - GuiItem wip6 = new GuiItem(wipItemstack, GuiGlobalActions.stayInPlace, CustomAnvil.instance); + GuiItem wip = new GuiItem(wipItemstack, GuiGlobalActions.stayInPlace, CustomAnvil.instance); - pane.bindItem('5', wip5); - pane.bindItem('6', wip6); + pane.bindItem('5', wip); + + // Unit repair item + ItemStack unirRepairItemstack = new ItemStack(Material.DIAMOND); + ItemMeta unitRepairMeta = unirRepairItemstack.getItemMeta(); + + unitRepairMeta.setDisplayName("\u00A7aUnit Repair"); + unitRepairMeta.setLore(Collections.singletonList("\u00A77Click here to open anvil custom recipe menu")); + unirRepairItemstack.setItemMeta(unitRepairMeta); + + GuiItem unitRepairItem = GuiGlobalItems.goToGuiItem(unirRepairItemstack, UnitRepairConfigGui.INSTANCE); + pane.bindItem('6', unitRepairItem); // Custom recipe item ItemStack customRecipeItemstack = new ItemStack(Material.CRAFTING_TABLE); diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/UnitRepairConfigGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/UnitRepairConfigGui.java new file mode 100644 index 0000000..5e2b2c8 --- /dev/null +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/UnitRepairConfigGui.java @@ -0,0 +1,62 @@ +package xyz.alexcrea.cuanvil.gui.config.global; + +import com.github.stefvanschie.inventoryframework.gui.GuiItem; +import jdk.nashorn.internal.runtime.regexp.joni.Config; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; +import xyz.alexcrea.cuanvil.config.ConfigHolder; +import xyz.alexcrea.cuanvil.gui.config.list.MappedGuiListConfigGui; +import xyz.alexcrea.cuanvil.gui.config.list.UnitRepairElementListGui; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +public class UnitRepairConfigGui extends MappedGuiListConfigGui { + + public final static UnitRepairConfigGui INSTANCE = new UnitRepairConfigGui(); + + static { + INSTANCE.init(); + } + + private UnitRepairConfigGui() { + super("Unit Repair Config"); + } + + @Override + protected UnitRepairElementListGui newInstanceOfGui(Material material, GuiItem item) { + return new UnitRepairElementListGui(material, item); + } + + @Override + protected String genericDisplayedName() { + return "item to be repaired"; + } + + @Override + protected Material createAndSaveNewEmptyGeneric(String name) { + return Material.getMaterial(name.toUpperCase()); + } + + @Override + protected ItemStack createItemForGeneric(Material material) { + return new ItemStack(material); //TODO proper item + } + + @Override + protected List getEveryDisplayableInstanceOfGeneric() { + ArrayList materials = new ArrayList<>(); + + for (String matName : ConfigHolder.UNIT_REPAIR_HOLDER.getConfig().getKeys(false)) { + Material mat = Material.getMaterial(matName.toUpperCase()); + if(mat != null){ + materials.add(mat); + } + } + return materials; + } + + +} diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/list/MappedGuiListConfigGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/list/MappedGuiListConfigGui.java index 58dbf42..8b81fff 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/list/MappedGuiListConfigGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/list/MappedGuiListConfigGui.java @@ -12,7 +12,6 @@ import java.util.function.Consumer; public abstract class MappedGuiListConfigGui< T, S extends ElementMappedToListGui> extends MappedElementListConfigGui< T, S > { - public MappedGuiListConfigGui(@NotNull String title) { super(title); diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/list/UnitRepairElementListGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/list/UnitRepairElementListGui.java new file mode 100644 index 0000000..8903c41 --- /dev/null +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/list/UnitRepairElementListGui.java @@ -0,0 +1,107 @@ +package xyz.alexcrea.cuanvil.gui.config.list; + +import com.github.stefvanschie.inventoryframework.gui.GuiItem; +import com.github.stefvanschie.inventoryframework.gui.type.util.Gui; +import io.delilaheve.CustomAnvil; +import org.bukkit.Material; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; +import xyz.alexcrea.cuanvil.config.ConfigHolder; +import xyz.alexcrea.cuanvil.gui.config.global.EnchantCostConfigGui; +import xyz.alexcrea.cuanvil.gui.config.settings.DoubleSettingGui; +import xyz.alexcrea.cuanvil.util.CasedStringUtil; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Set; +import java.util.function.Consumer; + +public class UnitRepairElementListGui extends SettingGuiListConfigGui implements ElementMappedToListGui { + + + + + private final GuiItem parentItem; + private final Material material; + private final String materialName; + + public UnitRepairElementListGui(@NotNull Material material, GuiItem parentItem) { + super("\u00A7e" + CasedStringUtil.snakeToUpperSpacedCase(material.name().toLowerCase()) + " \u00A7rUnit repair config"); + this.parentItem = parentItem; + this.material = material; + this.materialName = CasedStringUtil.snakeToUpperSpacedCase(material.name().toLowerCase()); + + } + + // SettingGuiListConfigGui methods + + @Override + protected List getCreateItemLore() { + return Arrays.asList( + "a", + "b", + "c" + ); + } + + @Override + protected Consumer getCreateClickConsumer() { + return event -> { + event.setCancelled(true); + + event.getWhoClicked().sendMessage("todo"); + }; + } + + @Override + protected String genericDisplayedName() { + return this.materialName+"`s Unit Repair Item"; + } + + @Override + protected DoubleSettingGui.DoubleSettingFactory createFactory(String generic) { + return null; //TODO + } + + @Override + protected GuiItem itemFromFactory(DoubleSettingGui.DoubleSettingFactory factory) { + return new GuiItem(new ItemStack(Material.STONE), CustomAnvil.instance); //TODO correct item + } + + @Override + protected List getEveryDisplayableInstanceOfGeneric() { + ArrayList keys = new ArrayList<>(); + + ConfigurationSection materialSection = ConfigHolder.UNIT_REPAIR_HOLDER.getConfig().getConfigurationSection(material.name().toLowerCase()); + if(materialSection == null){ + return keys; + } + keys.addAll(materialSection.getKeys(false)); + return keys; + } + + // ElementMappedToListGui methods + + @Override + public GuiItem getParentItemForThisGui() { + return this.parentItem; + } + + @Override + public void updateLocal() { + + } + + @Override + public void cleanAndBeUnusable() { + + } + + @Override + public Gui getMappedGui() { + return this; + } +}