diff --git a/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntField.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntField.java index 9945d01c..bb0a6718 100644 --- a/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntField.java +++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntField.java @@ -37,5 +37,5 @@ * The format used to display the integer. * This is the syntax used in {@link String#format(String, Object...)}. */ - String format() default "%.0f"; + String format() default "%d"; } diff --git a/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntSlider.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntSlider.java index 7fd22827..4c98c4cd 100644 --- a/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntSlider.java +++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/IntSlider.java @@ -27,9 +27,18 @@ */ int max(); + /** + * The step size of this slider. + *

+ * For example, if this is set to 1, the slider will + * increment/decrement by 1 when dragging, no less, no more and + * will always be a multiple of 1. + */ + int step(); + /** * The format used to display the integer. * This is the syntax used in {@link String#format(String, Object...)}. */ - int step(); + String format() default "%d"; } diff --git a/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongField.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongField.java index 01c3a7e7..ce99fcec 100644 --- a/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongField.java +++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongField.java @@ -37,5 +37,5 @@ * The format used to display the long. * This is the syntax used in {@link String#format(String, Object...)}. */ - String format() default "%.0f"; + String format() default "%d"; } diff --git a/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongSlider.java b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongSlider.java index 5563bd06..f65b8415 100644 --- a/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongSlider.java +++ b/src/main/java/dev/isxander/yacl3/config/v2/api/autogen/LongSlider.java @@ -28,8 +28,17 @@ long max(); /** - * The format used to display the integer. - * This is the syntax used in {@link String#format(String, Object...)}. + * The step size of this slider. + *

+ * For example, if this is set to 1, the slider will + * increment/decrement by 1 when dragging, no less, no more and + * will always be a multiple of 1. */ long step(); + + /** + * The format used to display the long. + * This is the syntax used in {@link String#format(String, Object...)}. + */ + String format() default "%d"; } diff --git a/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntFieldImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntFieldImpl.java index a3b759a1..3f77595a 100644 --- a/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntFieldImpl.java +++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntFieldImpl.java @@ -21,7 +21,7 @@ protected ControllerBuilder createController(IntField annotation, Confi key = getTranslationKey(field, "fmt"); if (Language.getInstance().has(key)) return Component.translatable(key, v); - return Component.literal(Integer.toString(v)); + return Component.literal(String.format(annotation.format(), v)); }) .range(annotation.min(), annotation.max()); } diff --git a/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntSliderImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntSliderImpl.java index b570b442..c82a984c 100644 --- a/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntSliderImpl.java +++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/IntSliderImpl.java @@ -21,7 +21,7 @@ protected ControllerBuilder createController(IntSlider annotation, Conf key = getTranslationKey(field, "fmt"); if (Language.getInstance().has(key)) return Component.translatable(key, v); - return Component.literal(Integer.toString(v)); + return Component.literal(String.format(annotation.format(), v)); }) .range(annotation.min(), annotation.max()) .step(annotation.step()); diff --git a/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongFieldImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongFieldImpl.java index 5da7d203..987e383c 100644 --- a/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongFieldImpl.java +++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongFieldImpl.java @@ -21,7 +21,7 @@ protected ControllerBuilder createController(LongField annotation, ConfigF key = getTranslationKey(field, "fmt"); if (Language.getInstance().has(key)) return Component.translatable(key, v); - return Component.literal(Long.toString(v)); + return Component.literal(String.format(annotation.format(), v)); }) .range(annotation.min(), annotation.max()); } diff --git a/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongSliderImpl.java b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongSliderImpl.java index 95c52547..43d86df9 100644 --- a/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongSliderImpl.java +++ b/src/main/java/dev/isxander/yacl3/config/v2/impl/autogen/LongSliderImpl.java @@ -21,7 +21,7 @@ protected ControllerBuilder createController(LongSlider annotation, Config key = getTranslationKey(field, "fmt"); if (Language.getInstance().has(key)) return Component.translatable(key, v); - return Component.literal(Long.toString(v)); + return Component.literal(String.format(annotation.format(), v)); }) .range(annotation.min(), annotation.max()) .step(annotation.step()); diff --git a/src/testmod/java/dev/isxander/yacl3/test/AutogenConfigTest.java b/src/testmod/java/dev/isxander/yacl3/test/AutogenConfigTest.java index b49938fb..e75c8a7c 100644 --- a/src/testmod/java/dev/isxander/yacl3/test/AutogenConfigTest.java +++ b/src/testmod/java/dev/isxander/yacl3/test/AutogenConfigTest.java @@ -32,7 +32,7 @@ public class AutogenConfigTest { .build(); @AutoGen(category = "test", group = "master_test") - @MasterTickBox({ "testTickBox", "testBoolean", "testInt", "testDouble", "testFloat", "testLong", "testIntField", "testDoubleField", "testFloatField", "testLongField", "testEnum", "testColor", "testString", "testDropdown", "testItem" }) + @MasterTickBox({ "testTickBox", "testBoolean", "testInt", "testDouble", "testFloat", "testLong", "testLongFormatted", "testIntField", "testDoubleField", "testFloatField", "testLongField", "testEnum", "testColor", "testString", "testDropdown", "testItem" }) @SerialEntry(comment = "This option disables all the other options in this group") public boolean masterOption = true; @@ -64,6 +64,10 @@ public class AutogenConfigTest { @LongSlider(min = 0, max = 10, step = 2) @SerialEntry public long testLong = 0; + @AutoGen(category = "test", group = "master_test") + @LongSlider(min = 0, max = 1000, step = 10, format = "%dms") + @SerialEntry public long testLongFormatted = 500; + @AutoGen(category = "test", group = "master_test") @IntField(min = 0, max = 10) @SerialEntry public int testIntField = 0;