add return to default value item for boolean & int setting gui

This commit is contained in:
alexcrea 2024-03-01 22:08:54 +01:00
parent 610e171154
commit 9b7f628f4f
3 changed files with 61 additions and 7 deletions

View file

@ -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,

View file

@ -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<InventoryClickEvent> inverseNowConsumer(){

View file

@ -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<InventoryClickEvent> updateNowConsumer(int planned){