From e046463f669ccff32c85294135c26641683092c5 Mon Sep 17 00:00:00 2001 From: Jaffe2718 Date: Mon, 14 Apr 2025 20:00:51 +0800 Subject: [PATCH] - rollback: boolean field (`CheckboxWidget` -> `ButtonWidget`) --- .../eu/midnightdust/lib/config/MidnightConfig.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/common/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java b/common/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java index 04b312e..1c27dc9 100755 --- a/common/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java +++ b/common/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java @@ -162,7 +162,10 @@ public abstract class MidnightConfig { else if (info.dataType == double.class) textField(info, Double::parseDouble, DECIMAL_ONLY, e.min(), e.max(), false); else if (info.dataType == String.class || info.dataType == Identifier.class) textField(info, String::length, null, Math.min(e.min(), 0), Math.max(e.max(), 1), true); else if (info.dataType == boolean.class) { - info.function = (CheckboxWidget.Callback) (ch, b) -> info.setValue(b); + Function func = value -> Text.translatable((Boolean) value ? "gui.yes" : "gui.no").formatted((Boolean) value ? Formatting.GREEN : Formatting.RED); + info.function = new AbstractMap.SimpleEntry>(button -> { + info.setValue(!(Boolean) info.value); button.setMessage(func.apply(info.value)); + }, func); } else if (info.dataType.isEnum()) { List values = Arrays.asList(field.getType().getEnumConstants()); Function func = value -> { @@ -355,11 +358,10 @@ public abstract class MidnightConfig { if (info.function != null) { ClickableWidget widget; Entry e = info.entry; - if (info.dataType == boolean.class) { - widget = CheckboxWidget.builder(Text.empty(), textRenderer).pos(width - 185, 0).callback((CheckboxWidget.Callback) info.function).checked((boolean) info.value).build(); - } else if (info.dataType.isEnum()) { + if (info.function instanceof Map.Entry) { var values = (Map.Entry>) info.function; - values.setValue(value -> Text.translatable(translationPrefix + "enum." + info.dataType.getSimpleName() + "." + info.value.toString())); + if (info.dataType.isEnum()) + values.setValue(value -> Text.translatable(translationPrefix + "enum." + info.dataType.getSimpleName() + "." + info.value.toString())); widget = ButtonWidget.builder(values.getValue().apply(info.value), values.getKey()).dimensions(width - 185, 0, 150, 20).tooltip(getTooltip(info, true)).build(); } else if (e.isSlider()) widget = new MidnightSliderWidget(width - 185, 0, 150, 20, Text.of(info.tempValue), (Double.parseDouble(info.tempValue) - e.min()) / (e.max() - e.min()), info);