From 98f29ec5c30d23999fce37d7daf7aba8f10f25d3 Mon Sep 17 00:00:00 2001 From: isXander Date: Wed, 16 Aug 2023 12:56:15 +0100 Subject: Add @OverrideName and @OverrideFormat --- .../dev/isxander/yacl3/gui/controllers/BooleanController.java | 11 ++++++++--- .../yacl3/gui/controllers/cycling/CyclingListController.java | 11 ++++++++--- .../yacl3/gui/controllers/cycling/EnumController.java | 5 +++++ .../yacl3/gui/controllers/slider/DoubleSliderController.java | 11 ++++++++--- .../yacl3/gui/controllers/slider/FloatSliderController.java | 11 ++++++++--- .../yacl3/gui/controllers/slider/IntegerSliderController.java | 11 ++++++++--- .../yacl3/gui/controllers/slider/LongSliderController.java | 11 ++++++++--- .../gui/controllers/string/number/DoubleFieldController.java | 5 +++++ .../gui/controllers/string/number/FloatFieldController.java | 5 +++++ .../gui/controllers/string/number/IntegerFieldController.java | 5 +++++ .../gui/controllers/string/number/LongFieldController.java | 5 +++++ .../gui/controllers/string/number/NumberFieldController.java | 7 ++++--- 12 files changed, 77 insertions(+), 21 deletions(-) (limited to 'common/src/main/java/dev/isxander/yacl3/gui/controllers') diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/BooleanController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/BooleanController.java index 9f21755..6d2c2b3 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/BooleanController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/BooleanController.java @@ -3,6 +3,7 @@ package dev.isxander.yacl3.gui.controllers; import com.mojang.blaze3d.platform.InputConstants; import dev.isxander.yacl3.api.Controller; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import dev.isxander.yacl3.api.utils.Dimension; import dev.isxander.yacl3.gui.AbstractWidget; import dev.isxander.yacl3.gui.YACLScreen; @@ -34,7 +35,7 @@ public class BooleanController implements Controller { : CommonComponents.GUI_NO; private final Option option; - private final Function valueFormatter; + private final ValueFormatter valueFormatter; private final boolean coloured; /** @@ -67,10 +68,14 @@ public class BooleanController implements Controller { */ public BooleanController(Option option, Function valueFormatter, boolean coloured) { this.option = option; - this.valueFormatter = valueFormatter; + this.valueFormatter = valueFormatter::apply; this.coloured = coloured; } + public static BooleanController createInternal(Option option, ValueFormatter formatter, boolean coloured) { + return new BooleanController(option, formatter::format, coloured); + } + /** * {@inheritDoc} */ @@ -84,7 +89,7 @@ public class BooleanController implements Controller { */ @Override public Component formatValue() { - return valueFormatter.apply(option().pendingValue()); + return valueFormatter.format(option().pendingValue()); } /** diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingListController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingListController.java index 44fa765..28bc623 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingListController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/CyclingListController.java @@ -2,6 +2,7 @@ package dev.isxander.yacl3.gui.controllers.cycling; import com.google.common.collect.ImmutableList; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import net.minecraft.network.chat.Component; import java.util.function.Function; @@ -12,7 +13,7 @@ import java.util.function.Function; */ public class CyclingListController implements ICyclingController { private final Option option; - private final Function valueFormatter; + private final ValueFormatter valueFormatter; private final ImmutableList values; /** @@ -33,10 +34,14 @@ public class CyclingListController implements ICyclingController { */ public CyclingListController(Option option, Iterable values, Function valueFormatter) { this.option = option; - this.valueFormatter = valueFormatter; + this.valueFormatter = valueFormatter::apply; this.values = ImmutableList.copyOf(values); } + public static CyclingListController createInternal(Option option, Iterable values, ValueFormatter formatter) { + return new CyclingListController<>(option, values, formatter::format); + } + /** * {@inheritDoc} */ @@ -50,7 +55,7 @@ public class CyclingListController implements ICyclingController { */ @Override public Component formatValue() { - return valueFormatter.apply(option().pendingValue()); + return valueFormatter.format(option().pendingValue()); } /** diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/EnumController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/EnumController.java index d2df8f8..5a6a912 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/EnumController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/cycling/EnumController.java @@ -2,6 +2,7 @@ package dev.isxander.yacl3.gui.controllers.cycling; import dev.isxander.yacl3.api.NameableEnum; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import net.minecraft.network.chat.Component; import net.minecraft.util.OptionEnum; @@ -40,4 +41,8 @@ public class EnumController> extends CyclingListController public EnumController(Option option, Function valueFormatter, T[] availableValues) { super(option, Arrays.asList(availableValues), valueFormatter); } + + public static > EnumController createInternal(Option option, ValueFormatter formatter, T[] values) { + return new EnumController<>(option, formatter::format, values); + } } diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/DoubleSliderController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/DoubleSliderController.java index d2c0e2e..89308a8 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/DoubleSliderController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/DoubleSliderController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.slider; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import net.minecraft.network.chat.Component; import org.apache.commons.lang3.Validate; @@ -19,7 +20,7 @@ public class DoubleSliderController implements ISliderController { private final double min, max, interval; - private final Function valueFormatter; + private final ValueFormatter valueFormatter; /** * Constructs a {@link ISliderController} for doubles @@ -52,7 +53,11 @@ public class DoubleSliderController implements ISliderController { this.min = min; this.max = max; this.interval = interval; - this.valueFormatter = valueFormatter; + this.valueFormatter = valueFormatter::apply; + } + + public static DoubleSliderController createInternal(Option option, double min, double max, double interval, ValueFormatter formatter) { + return new DoubleSliderController(option, min, max, interval, formatter::format); } /** @@ -68,7 +73,7 @@ public class DoubleSliderController implements ISliderController { */ @Override public Component formatValue() { - return valueFormatter.apply(option().pendingValue()); + return valueFormatter.format(option().pendingValue()); } /** diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/FloatSliderController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/FloatSliderController.java index f9fa574..79246dd 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/FloatSliderController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/FloatSliderController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.slider; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import net.minecraft.network.chat.Component; import org.apache.commons.lang3.Validate; @@ -19,7 +20,7 @@ public class FloatSliderController implements ISliderController { private final float min, max, interval; - private final Function valueFormatter; + private final ValueFormatter valueFormatter; /** * Constructs a {@link ISliderController} for floats @@ -52,7 +53,11 @@ public class FloatSliderController implements ISliderController { this.min = min; this.max = max; this.interval = interval; - this.valueFormatter = valueFormatter; + this.valueFormatter = valueFormatter::apply; + } + + public static FloatSliderController createInternal(Option option, float min, float max, float interval, ValueFormatter formatter) { + return new FloatSliderController(option, min, max, interval, formatter::format); } /** @@ -68,7 +73,7 @@ public class FloatSliderController implements ISliderController { */ @Override public Component formatValue() { - return valueFormatter.apply(option().pendingValue()); + return valueFormatter.format(option().pendingValue()); } /** diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/IntegerSliderController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/IntegerSliderController.java index ea658ad..bcb551d 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/IntegerSliderController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/IntegerSliderController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.slider; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import net.minecraft.network.chat.Component; import org.apache.commons.lang3.Validate; @@ -16,7 +17,7 @@ public class IntegerSliderController implements ISliderController { private final int min, max, interval; - private final Function valueFormatter; + private final ValueFormatter valueFormatter; /** * Constructs a {@link ISliderController} for integers @@ -49,7 +50,11 @@ public class IntegerSliderController implements ISliderController { this.min = min; this.max = max; this.interval = interval; - this.valueFormatter = valueFormatter; + this.valueFormatter = valueFormatter::apply; + } + + public static IntegerSliderController createInternal(Option option, int min, int max, int interval, ValueFormatter formatter) { + return new IntegerSliderController(option, min, max, interval, formatter::format); } /** @@ -65,7 +70,7 @@ public class IntegerSliderController implements ISliderController { */ @Override public Component formatValue() { - return valueFormatter.apply(option().pendingValue()); + return valueFormatter.format(option().pendingValue()); } /** diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/LongSliderController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/LongSliderController.java index 336f064..105bd46 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/LongSliderController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/slider/LongSliderController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.slider; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import net.minecraft.network.chat.Component; import org.apache.commons.lang3.Validate; @@ -16,7 +17,7 @@ public class LongSliderController implements ISliderController { private final long min, max, interval; - private final Function valueFormatter; + private final ValueFormatter valueFormatter; /** * Constructs a {@link ISliderController} for longs @@ -49,7 +50,11 @@ public class LongSliderController implements ISliderController { this.min = min; this.max = max; this.interval = interval; - this.valueFormatter = valueFormatter; + this.valueFormatter = valueFormatter::apply; + } + + public static LongSliderController createInternal(Option option, long min, long max, long interval, ValueFormatter formatter) { + return new LongSliderController(option, min, max, interval, formatter::format); } /** @@ -65,7 +70,7 @@ public class LongSliderController implements ISliderController { */ @Override public Component formatValue() { - return valueFormatter.apply(option().pendingValue()); + return valueFormatter.format(option().pendingValue()); } /** diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/DoubleFieldController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/DoubleFieldController.java index 3f70a12..8445839 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/DoubleFieldController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/DoubleFieldController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.string.number; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import dev.isxander.yacl3.gui.controllers.slider.DoubleSliderController; import net.minecraft.network.chat.Component; @@ -62,6 +63,10 @@ public class DoubleFieldController extends NumberFieldController { this(option, -Double.MAX_VALUE, Double.MAX_VALUE, DoubleSliderController.DEFAULT_FORMATTER); } + public static DoubleFieldController createInternal(Option option, double min, double max, ValueFormatter formatter) { + return new DoubleFieldController(option, min, max, formatter::format); + } + /** * {@inheritDoc} */ diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/FloatFieldController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/FloatFieldController.java index 57737f7..78281c8 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/FloatFieldController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/FloatFieldController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.string.number; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import dev.isxander.yacl3.gui.controllers.slider.FloatSliderController; import net.minecraft.network.chat.Component; @@ -62,6 +63,10 @@ public class FloatFieldController extends NumberFieldController { this(option, -Float.MAX_VALUE, Float.MAX_VALUE, FloatSliderController.DEFAULT_FORMATTER); } + public static FloatFieldController createInternal(Option option, float min, float max, ValueFormatter formatter) { + return new FloatFieldController(option, min, max, formatter::format); + } + /** * {@inheritDoc} */ diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/IntegerFieldController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/IntegerFieldController.java index 445e984..476da9c 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/IntegerFieldController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/IntegerFieldController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.string.number; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import dev.isxander.yacl3.gui.controllers.slider.IntegerSliderController; import net.minecraft.network.chat.Component; @@ -62,6 +63,10 @@ public class IntegerFieldController extends NumberFieldController { this(option, -Integer.MAX_VALUE, Integer.MAX_VALUE, IntegerSliderController.DEFAULT_FORMATTER); } + public static IntegerFieldController createInternal(Option option, int min, int max, ValueFormatter formatter) { + return new IntegerFieldController(option, min, max, formatter::format); + } + @Override public boolean isInputValid(String input) { return input.matches("(?:-?\\d+|)"); diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/LongFieldController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/LongFieldController.java index fe2ef2c..d6f4f19 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/LongFieldController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/LongFieldController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.string.number; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import dev.isxander.yacl3.gui.controllers.slider.LongSliderController; import net.minecraft.network.chat.Component; @@ -62,6 +63,10 @@ public class LongFieldController extends NumberFieldController { this(option, -Long.MAX_VALUE, Long.MAX_VALUE, LongSliderController.DEFAULT_FORMATTER); } + public static LongFieldController createInternal(Option option, long min, long max, ValueFormatter formatter) { + return new LongFieldController(option, min, max, formatter::format); + } + @Override public boolean isInputValid(String input) { return input.matches("(?:-?\\d+|)"); diff --git a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/NumberFieldController.java b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/NumberFieldController.java index f484aad..b164ea3 100644 --- a/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/NumberFieldController.java +++ b/common/src/main/java/dev/isxander/yacl3/gui/controllers/string/number/NumberFieldController.java @@ -1,6 +1,7 @@ package dev.isxander.yacl3.gui.controllers.string.number; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ValueFormatter; import dev.isxander.yacl3.api.utils.Dimension; import dev.isxander.yacl3.gui.AbstractWidget; import dev.isxander.yacl3.gui.YACLScreen; @@ -20,11 +21,11 @@ import java.util.function.Function; */ public abstract class NumberFieldController implements ISliderController, IStringController { private final Option option; - private final Function displayFormatter; + private final ValueFormatter displayFormatter; public NumberFieldController(Option option, Function displayFormatter) { this.option = option; - this.displayFormatter = displayFormatter; + this.displayFormatter = displayFormatter::apply; } @Override @@ -50,7 +51,7 @@ public abstract class NumberFieldController implements ISlider @Override public Component formatValue() { - return displayFormatter.apply(option().pendingValue()); + return displayFormatter.format(option().pendingValue()); } @Override -- cgit