From 9b7f628f4ff52f275b8e046022096791d10ef40a Mon Sep 17 00:00:00 2001 From: alexcrea Date: Fri, 1 Mar 2024 22:08:54 +0100 Subject: [PATCH] add return to default value item for boolean & int setting gui --- .../cuanvil/gui/config/BasicConfigGui.java | 6 ++-- .../gui/config/settings/BoolSettingsGui.java | 31 +++++++++++++++++-- .../gui/config/settings/IntSettingsGui.java | 31 +++++++++++++++++-- 3 files changed, 61 insertions(+), 7 deletions(-) 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 e5a07d4..5b973f3 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/BasicConfigGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/BasicConfigGui.java @@ -68,13 +68,13 @@ public class BasicConfigGui extends ValueUpdatableGui { this.repairCostFactory = IntSettingsGui.factory("\u00A78Repair Cost Limit", this, ConfigOptions.LIMIT_REPAIR_VALUE, ConfigHolder.DEFAULT_CONFIG, range.getFirst(),range.getLast(), ConfigOptions.DEFAULT_LIMIT_REPAIR_VALUE, - 1, 5, 10, 50, 100); + 1, 5, 10); // rename cost not needed ItemStack item = new ItemStack(Material.BARRIER); ItemMeta meta = item.getItemMeta(); - meta.setDisplayName("\u00A7cRepair Cost Limit"); + meta.setDisplayName("\u00A7cRepair Cost Value"); meta.setLore(Collections.singletonList("\u00A77Please, enable repair cost limit for this variable to be editable.")); item.setItemMeta(meta); this.notNeededLimitValueItem = new GuiItem(item, GuiGlobalActions.stayInPlace, CustomAnvil.instance); @@ -88,7 +88,7 @@ public class BasicConfigGui extends ValueUpdatableGui { this.itemRepairCost = IntSettingsGui.factory("\u00A78Item repair cost", this, ConfigOptions.ITEM_REPAIR_COST, ConfigHolder.DEFAULT_CONFIG, range.getFirst(),range.getLast(), ConfigOptions.DEFAULT_ITEM_REPAIR_COST, - 1, 5, 10); + 1, 5, 10, 50, 100); // unit repair cost this.unitRepairCost = IntSettingsGui.factory("\u00A78Unit repair cost", this, 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 d50ba63..d524b78 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 @@ -11,7 +11,9 @@ import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; import xyz.alexcrea.cuanvil.config.ConfigHolder; import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui; +import xyz.alexcrea.cuanvil.gui.utils.GuiGlobalItems; +import java.util.Collections; import java.util.function.Consumer; public class BoolSettingsGui extends AbstractSettingGui{ @@ -26,6 +28,7 @@ public class BoolSettingsGui extends AbstractSettingGui{ this.before = now; this.now = now; + prepareReturnToDefault(); updateValueDisplay(); } @@ -34,10 +37,25 @@ public class BoolSettingsGui extends AbstractSettingGui{ public Pattern getGuiPattern() { return new Pattern( "000000000", - "00-0v0+00", - "BD000000S" + "D0-0v0+00", + "B0000000S" ); } + GuiItem returnToDefault; + protected void prepareReturnToDefault(){ + ItemStack item = new ItemStack(Material.COMMAND_BLOCK); + ItemMeta meta = item.getItemMeta(); + + meta.setDisplayName("\u00A7eReset to default value"); + meta.setLore(Collections.singletonList("\u00A77Default value is: "+holder.defaultVal)); + item.setItemMeta(meta); + returnToDefault = new GuiItem(item, event -> { + event.setCancelled(true); + now = holder.defaultVal; + updateValueDisplay(); + update(); + }, CustomAnvil.instance); + } protected void updateValueDisplay(){ @@ -63,6 +81,15 @@ public class BoolSettingsGui extends AbstractSettingGui{ pane.bindItem('v', resultItem); + // reset to default + GuiItem returnToDefault; + if(now != holder.defaultVal){ + returnToDefault = this.returnToDefault; + }else{ + returnToDefault = GuiGlobalItems.backgroundItem(); + } + pane.bindItem('D', returnToDefault); + } protected Consumer inverseNowConsumer(){ 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 a0080ea..c723ed1 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 @@ -33,6 +33,7 @@ public class IntSettingsGui extends AbstractSettingGui{ this.now = now; this.step = holder.steps[0]; + prepareReturnToDefault(); updateValueDisplay(); initStepsValue(); } @@ -42,11 +43,27 @@ public class IntSettingsGui extends AbstractSettingGui{ public Pattern getGuiPattern() { return new Pattern( "abcdefghi", - "00-0v0+00", - "BD000000S" + "D0-0v0+00", + "B0000000S" ); } + GuiItem returnToDefault; + protected void prepareReturnToDefault(){ + ItemStack item = new ItemStack(Material.COMMAND_BLOCK); + ItemMeta meta = item.getItemMeta(); + + meta.setDisplayName("\u00A7eReset to default value"); + meta.setLore(Collections.singletonList("\u00A77Default value is: "+holder.defaultVal)); + item.setItemMeta(meta); + returnToDefault = new GuiItem(item, event -> { + event.setCancelled(true); + now = holder.defaultVal; + updateValueDisplay(); + update(); + }, CustomAnvil.instance); + } + protected void updateValueDisplay(){ PatternPane pane = getPane(); @@ -93,6 +110,16 @@ public class IntSettingsGui extends AbstractSettingGui{ pane.bindItem('v', resultItem); + // reset to default + GuiItem returnToDefault; + if(now != holder.defaultVal){ + returnToDefault = this.returnToDefault; + }else{ + returnToDefault = GuiGlobalItems.backgroundItem(); + } + pane.bindItem('D', returnToDefault); + + } protected Consumer updateNowConsumer(int planned){