diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/GuiGlobalItems.java b/src/main/java/xyz/alexcrea/cuanvil/gui/GuiGlobalItems.java index 2a588d4..82cf3c9 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/GuiGlobalItems.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/GuiGlobalItems.java @@ -9,6 +9,9 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; import xyz.alexcrea.cuanvil.gui.config.settings.AbstractSettingGui; +import xyz.alexcrea.cuanvil.gui.config.settings.BoolSettingsGui; + +import java.util.Collections; // maybe use builder patern ? public class GuiGlobalItems { @@ -75,4 +78,39 @@ public class GuiGlobalItems { return new GuiItem(item, GuiGlobalActions.openSettingGuiAction(factory), CustomAnvil.instance); } + private static final String SETTING_ITEM_LORE_PREFIX = "\u00A77value: "; + public static GuiItem boolSettingGuiItem( + @NotNull BoolSettingsGui.BoolSettingFactory factory + ){ + // Get item properties + boolean value = factory.getConfiguredValue(); + + Material itemMat; + StringBuilder itemName = new StringBuilder("\u00A7"); + if(value){ + itemMat = Material.GREEN_TERRACOTTA; + itemName.append("a"); + }else{ + itemMat = Material.RED_TERRACOTTA; + itemName.append("c"); + } + itemName.append(getConfigNameFromPath(factory.getConfigPath())); + + // Create item + ItemStack item = new ItemStack(itemMat); + ItemMeta itemMeta = item.getItemMeta(); + + itemMeta.setDisplayName(itemName.toString()); + itemMeta.setLore(Collections.singletonList(SETTING_ITEM_LORE_PREFIX+value)); + + item.setItemMeta(itemMeta); + return openSettingGuiItem(item, factory); + } + + public static String getConfigNameFromPath(String path){ + int indexOfDot = path.indexOf("."); + //if(indexOfDot == -1) return path; + // indexOfDot == -1 (not fond) imply indexOfDot+1 = 0. substring will keep the full path as expected + return path.substring(indexOfDot+1); + } } diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/UpdatableGlobalGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/UpdatableGlobalGui.java new file mode 100644 index 0000000..54cafd7 --- /dev/null +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/UpdatableGlobalGui.java @@ -0,0 +1,7 @@ +package xyz.alexcrea.cuanvil.gui; + +public interface UpdatableGlobalGui { + + void updateGuiForAll(); + +} diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/BasicConfigGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/BasicConfigGui.java index 337c401..0134580 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/BasicConfigGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/BasicConfigGui.java @@ -43,9 +43,8 @@ public class BasicConfigGui extends ChestGui { GuiItem setting1 = GuiGlobalItems.openSettingGuiItem(setting1Item, factory1); pane.bindItem('1', setting1); - ItemStack setting2Item = new ItemStack(Material.STONE); - AbstractSettingGui.SettingGuiFactory factory2 = BoolSettingsGui.factory("Test Gui bool",this, "test2", CustomAnvil.instance.getConfig(), false); - GuiItem setting2 = GuiGlobalItems.openSettingGuiItem(setting2Item, factory2); + BoolSettingsGui.BoolSettingFactory factory2 = BoolSettingsGui.factory("Test Gui bool",this, "test2", CustomAnvil.instance.getConfig(), false); + GuiItem setting2 = GuiGlobalItems.boolSettingGuiItem(factory2); pane.bindItem('2', setting2); } diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/AbstractSettingGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/AbstractSettingGui.java index b7aeb3a..f0c2e3b 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/AbstractSettingGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/AbstractSettingGui.java @@ -7,6 +7,7 @@ import com.github.stefvanschie.inventoryframework.gui.type.util.Gui; import com.github.stefvanschie.inventoryframework.pane.PatternPane; import com.github.stefvanschie.inventoryframework.pane.util.Pattern; import io.delilaheve.CustomAnvil; +import org.bukkit.configuration.ConfigurationSection; import org.jetbrains.annotations.NotNull; import xyz.alexcrea.cuanvil.gui.GuiGlobalItems; @@ -50,6 +51,23 @@ public abstract class AbstractSettingGui extends ChestGui { public abstract static class SettingGuiFactory{ + protected String configPath; + protected ConfigurationSection section; + + protected SettingGuiFactory(String configPath, ConfigurationSection section){ + this.configPath = configPath; + this.section = section; + } + + public String getConfigPath() { + return configPath; + } + + public ConfigurationSection getSection() { + return section; + } + + public abstract AbstractSettingGui create(); - }; + } } diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/BoolSettingsGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/BoolSettingsGui.java index 2015c90..e2c1372 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/BoolSettingsGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/BoolSettingsGui.java @@ -79,7 +79,7 @@ public class BoolSettingsGui extends AbstractSettingGui{ } - public static SettingGuiFactory factory(@NotNull String title, Gui parent, + public static BoolSettingFactory factory(@NotNull String title, Gui parent, String configPath, ConfigurationSection section, boolean defaultVal){ return new BoolSettingFactory( @@ -91,24 +91,27 @@ public class BoolSettingsGui extends AbstractSettingGui{ public static class BoolSettingFactory extends SettingGuiFactory{ @NotNull String title; Gui parent; - String configPath; ConfigurationSection section; boolean defaultVal; private BoolSettingFactory(@NotNull String title, Gui parent, String configPath, ConfigurationSection section, boolean defaultVal){ + super(configPath, section); this.title = title; this.parent = parent; - this.configPath = configPath; - this.section = section; + this.defaultVal = defaultVal; } + public boolean getConfiguredValue(){ + return this.section.getBoolean(this.configPath, this.defaultVal); + } + @Override public AbstractSettingGui create() { // Get value or default //TODO maybe get section dynamically (and maybe same for save ?) - boolean now = section.getBoolean(this.configPath, this.defaultVal); + boolean now = getConfiguredValue(); // create new gui return new BoolSettingsGui(this, now); } diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/IntSettingsGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/IntSettingsGui.java index 5541ed4..2ddfeb9 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/IntSettingsGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/IntSettingsGui.java @@ -118,27 +118,29 @@ public class IntSettingsGui extends AbstractSettingGui{ public static class IntSettingFactory extends SettingGuiFactory{ @NotNull String title; Gui parent; - String configPath; ConfigurationSection section; int min; int max; int defaultVal; int[] steps; private IntSettingFactory(@NotNull String title, Gui parent, String configPath, ConfigurationSection section, int min, int max, int defaultVal, int... steps){ + super(configPath, section); this.title = title; this.parent = parent; - this.configPath = configPath; - this.section = section; this.min = min; this.max = max; this.defaultVal = defaultVal; this.steps = steps; } + public int getConfiguredValue(){ + return this.section.getInt(this.configPath, this.defaultVal); + } + @Override public AbstractSettingGui create() { // Get value or default //TODO maybe get section dynamically (and maybe same for save ?) - int now = section.getInt(this.configPath, this.defaultVal); + int now = getConfiguredValue(); // create new gui return new IntSettingsGui(this, now); }