update globaly visible menu on value update

This commit is contained in:
alexcrea 2024-02-29 01:55:08 +01:00 committed by alexcrea
parent 0b11f5b66f
commit 3afe786b38
9 changed files with 59 additions and 31 deletions

View file

@ -9,6 +9,7 @@ import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import xyz.alexcrea.cuanvil.gui.config.BasicConfigGui;
import xyz.alexcrea.cuanvil.gui.utils.GuiGlobalItems;
public class MainConfigGui extends ChestGui {

View file

@ -1,7 +0,0 @@
package xyz.alexcrea.cuanvil.gui;
public interface UpdatableGlobalGui {
void updateGuiForAll();
}

View file

@ -0,0 +1,20 @@
package xyz.alexcrea.cuanvil.gui;
import com.github.stefvanschie.inventoryframework.adventuresupport.TextHolder;
import com.github.stefvanschie.inventoryframework.gui.type.ChestGui;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
public abstract class ValueUpdatableGui extends ChestGui {
public ValueUpdatableGui(int rows, @NotNull String title, @NotNull Plugin plugin) {
super(rows, title, plugin);
}
public ValueUpdatableGui(int rows, @NotNull TextHolder title, @NotNull Plugin plugin) {
super(rows, title, plugin);
}
public abstract void updateGuiValues();
}

View file

@ -1,19 +1,19 @@
package xyz.alexcrea.cuanvil.gui.config;
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
import com.github.stefvanschie.inventoryframework.gui.type.ChestGui;
import com.github.stefvanschie.inventoryframework.pane.PatternPane;
import com.github.stefvanschie.inventoryframework.pane.util.Pattern;
import io.delilaheve.CustomAnvil;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import xyz.alexcrea.cuanvil.gui.GuiGlobalItems;
import xyz.alexcrea.cuanvil.gui.MainConfigGui;
import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui;
import xyz.alexcrea.cuanvil.gui.config.settings.AbstractSettingGui;
import xyz.alexcrea.cuanvil.gui.config.settings.BoolSettingsGui;
import xyz.alexcrea.cuanvil.gui.config.settings.IntSettingsGui;
import xyz.alexcrea.cuanvil.gui.utils.GuiGlobalItems;
public class BasicConfigGui extends ChestGui {
public class BasicConfigGui extends ValueUpdatableGui {
public final static BasicConfigGui INSTANCE = new BasicConfigGui();
@ -26,18 +26,25 @@ public class BasicConfigGui extends ChestGui {
}
PatternPane pane;
private void init(){
Pattern pattern = new Pattern(
"000000000",
"012000000",
"B00000000"
);
PatternPane pane = new PatternPane(0, 0, 9, 3, pattern);
pane = new PatternPane(0, 0, 9, 3, pattern);
addPane(pane);
GuiGlobalItems.addBackItem(pane, MainConfigGui.INSTANCE);
GuiGlobalItems.addBackgroundItem(pane);
updateGuiValues();
}
@Override
public void updateGuiValues() {
// Update item with value
ItemStack setting1Item = new ItemStack(Material.STONE);
AbstractSettingGui.SettingGuiFactory factory1 = IntSettingsGui.factory( "Test GUI", this, "test", CustomAnvil.instance.getConfig(), 0,42,2,1);
GuiItem setting1 = GuiGlobalItems.openSettingGuiItem(setting1Item, factory1);
@ -46,6 +53,8 @@ public class BasicConfigGui extends ChestGui {
BoolSettingsGui.BoolSettingFactory factory2 = BoolSettingsGui.factory("Test Gui bool",this, "test2", CustomAnvil.instance.getConfig(), false);
GuiItem setting2 = GuiGlobalItems.boolSettingGuiItem(factory2);
pane.bindItem('2', setting2);
update();
}
}

View file

@ -3,13 +3,13 @@ package xyz.alexcrea.cuanvil.gui.config.settings;
import com.github.stefvanschie.inventoryframework.adventuresupport.StringHolder;
import com.github.stefvanschie.inventoryframework.adventuresupport.TextHolder;
import com.github.stefvanschie.inventoryframework.gui.type.ChestGui;
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;
import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui;
import xyz.alexcrea.cuanvil.gui.utils.GuiGlobalItems;
import java.util.Collections;
import java.util.List;
@ -18,17 +18,18 @@ public abstract class AbstractSettingGui extends ChestGui {
protected final static List<String> CLICK_LORE = Collections.singletonList("\u00A77Click Here to change the value");
public AbstractSettingGui(int rows, @NotNull TextHolder title, Gui parent) {
private PatternPane pane;
public AbstractSettingGui(int rows, @NotNull TextHolder title, ValueUpdatableGui parent) {
super(rows, title, CustomAnvil.instance);
initBase(parent);
}
public AbstractSettingGui(int rows, @NotNull String title, Gui parent) {
public AbstractSettingGui(int rows, @NotNull String title, ValueUpdatableGui parent) {
this(rows, StringHolder.of(title), parent);
}
private PatternPane pane;
private void initBase(Gui parent){
private void initBase(ValueUpdatableGui parent){
Pattern pattern = getGuiPattern();
pane = new PatternPane(0, 0, pattern.getLength(), pattern.getHeight(), pattern);
addPane(pane);

View file

@ -1,7 +1,6 @@
package xyz.alexcrea.cuanvil.gui.config.settings;
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
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;
@ -11,6 +10,7 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui;
import java.util.function.Consumer;
@ -79,7 +79,7 @@ public class BoolSettingsGui extends AbstractSettingGui{
}
public static BoolSettingFactory factory(@NotNull String title, Gui parent,
public static BoolSettingFactory factory(@NotNull String title, ValueUpdatableGui parent,
String configPath, ConfigurationSection section,
boolean defaultVal){
return new BoolSettingFactory(
@ -90,10 +90,10 @@ public class BoolSettingsGui extends AbstractSettingGui{
public static class BoolSettingFactory extends SettingGuiFactory{
@NotNull String title; Gui parent;
@NotNull String title; ValueUpdatableGui parent;
boolean defaultVal;
private BoolSettingFactory(@NotNull String title, Gui parent,
private BoolSettingFactory(@NotNull String title, ValueUpdatableGui parent,
String configPath, ConfigurationSection section,
boolean defaultVal){
super(configPath, section);

View file

@ -1,7 +1,6 @@
package xyz.alexcrea.cuanvil.gui.config.settings;
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
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;
@ -11,8 +10,9 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
import xyz.alexcrea.cuanvil.gui.GuiGlobalActions;
import xyz.alexcrea.cuanvil.gui.GuiGlobalItems;
import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui;
import xyz.alexcrea.cuanvil.gui.utils.GuiGlobalActions;
import xyz.alexcrea.cuanvil.gui.utils.GuiGlobalItems;
import java.util.function.Consumer;
@ -106,7 +106,7 @@ public class IntSettingsGui extends AbstractSettingGui{
}
public static SettingGuiFactory factory(@NotNull String title, Gui parent,
public static SettingGuiFactory factory(@NotNull String title, ValueUpdatableGui parent,
String configPath, ConfigurationSection section,
int min, int max, int defaultVal, int... steps){
return new IntSettingFactory(
@ -117,10 +117,10 @@ public class IntSettingsGui extends AbstractSettingGui{
public static class IntSettingFactory extends SettingGuiFactory{
@NotNull String title; Gui parent;
@NotNull String title; ValueUpdatableGui parent;
int min; int max; int defaultVal; int[] steps;
private IntSettingFactory(@NotNull String title, Gui parent,
private IntSettingFactory(@NotNull String title, ValueUpdatableGui parent,
String configPath, ConfigurationSection section,
int min, int max, int defaultVal, int... steps){
super(configPath, section);

View file

@ -1,8 +1,9 @@
package xyz.alexcrea.cuanvil.gui;
package xyz.alexcrea.cuanvil.gui.utils;
import com.github.stefvanschie.inventoryframework.gui.type.util.Gui;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.jetbrains.annotations.NotNull;
import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui;
import xyz.alexcrea.cuanvil.gui.config.settings.AbstractSettingGui;
import java.lang.reflect.Constructor;
@ -55,11 +56,13 @@ public class GuiGlobalActions {
public static @NotNull Consumer<InventoryClickEvent> saveSettingAction(
@NotNull AbstractSettingGui setting,
@NotNull Gui goal) {
@NotNull ValueUpdatableGui goal) {
return event -> {
event.setCancelled(true);
// Save setting
setting.onSave();
// Update gui for the one who have it open
goal.updateGuiValues();
// Then show
goal.show(event.getWhoClicked());
};

View file

@ -1,4 +1,4 @@
package xyz.alexcrea.cuanvil.gui;
package xyz.alexcrea.cuanvil.gui.utils;
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
import com.github.stefvanschie.inventoryframework.gui.type.util.Gui;
@ -8,6 +8,7 @@ import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui;
import xyz.alexcrea.cuanvil.gui.config.settings.AbstractSettingGui;
import xyz.alexcrea.cuanvil.gui.config.settings.BoolSettingsGui;
@ -60,7 +61,7 @@ public class GuiGlobalItems {
private static final Material DEFAULT_SAVE_ITEM = Material.LIME_TERRACOTTA;
public static GuiItem saveItem(
@NotNull AbstractSettingGui setting,
@NotNull Gui goal){
@NotNull ValueUpdatableGui goal){
ItemStack item = new ItemStack(DEFAULT_SAVE_ITEM);
ItemMeta meta = item.getItemMeta();