Explorar o código

Added slider option to bounded int and long fields

Lortseam %!s(int64=4) %!d(string=hai) anos
pai
achega
4c55f2a868

+ 4 - 0
src/main/java/me/lortseam/completeconfig/api/ConfigEntry.java

@@ -29,6 +29,8 @@ public @interface ConfigEntry {
 
             int max() default java.lang.Integer.MAX_VALUE;
 
+            boolean slider() default true;
+
         }
 
         @Target(ElementType.FIELD)
@@ -39,6 +41,8 @@ public @interface ConfigEntry {
 
             long max() default java.lang.Long.MAX_VALUE;
 
+            boolean slider() default true;
+
         }
 
         @Target(ElementType.FIELD)

+ 4 - 4
src/main/java/me/lortseam/completeconfig/collection/EntryMap.java

@@ -88,25 +88,25 @@ public class EntryMap extends ConfigMap<Entry> {
                         throw new IllegalAnnotationTargetException("Cannot apply Integer bound to non Integer field " + field);
                     }
                     ConfigEntry.Bounded.Integer bounds = field.getDeclaredAnnotation(ConfigEntry.Bounded.Integer.class);
-                    entry.getExtras().setBounds(bounds.min(), bounds.max());
+                    entry.getExtras().setBounds(bounds.min(), bounds.max(), bounds.slider());
                 } else if (field.isAnnotationPresent(ConfigEntry.Bounded.Long.class)) {
                     if (field.getType() != long.class && field.getType() != Long.class) {
                         throw new IllegalAnnotationTargetException("Cannot apply Long bound to non Long field " + field);
                     }
                     ConfigEntry.Bounded.Long bounds = field.getDeclaredAnnotation(ConfigEntry.Bounded.Long.class);
-                    entry.getExtras().setBounds(bounds.min(), bounds.max());
+                    entry.getExtras().setBounds(bounds.min(), bounds.max(), bounds.slider());
                 } else if (field.isAnnotationPresent(ConfigEntry.Bounded.Float.class)) {
                     if (field.getType() != float.class && field.getType() != Float.class) {
                         throw new IllegalAnnotationTargetException("Cannot apply Float bound to non Float field " + field);
                     }
                     ConfigEntry.Bounded.Float bounds = field.getDeclaredAnnotation(ConfigEntry.Bounded.Float.class);
-                    entry.getExtras().setBounds(bounds.min(), bounds.max());
+                    entry.getExtras().setBounds(bounds.min(), bounds.max(), false);
                 } else if (field.isAnnotationPresent(ConfigEntry.Bounded.Double.class)) {
                     if (field.getType() != double.class && field.getType() != Double.class) {
                         throw new IllegalAnnotationTargetException("Cannot apply Double bound to non Double field " + field);
                     }
                     ConfigEntry.Bounded.Double bounds = field.getDeclaredAnnotation(ConfigEntry.Bounded.Double.class);
-                    entry.getExtras().setBounds(bounds.min(), bounds.max());
+                    entry.getExtras().setBounds(bounds.min(), bounds.max(), false);
                 }
                 clazzEntries.put(field.getName(), entry);
             });

+ 2 - 0
src/main/java/me/lortseam/completeconfig/entry/Bounds.java

@@ -11,5 +11,7 @@ public class Bounds<T> {
     private final T min;
     @Getter
     private final T max;
+    @Getter
+    private final boolean slider;
 
 }

+ 2 - 2
src/main/java/me/lortseam/completeconfig/entry/Extras.java

@@ -12,11 +12,11 @@ public class Extras<T> {
     @Getter
     private Bounds<T> bounds;
 
-    public <N extends Number> void setBounds(N min, N max) {
+    public <N extends Number> void setBounds(N min, N max, boolean slider) {
         if (!ClassUtils.isAssignable(entry.getType(), min.getClass()) || !ClassUtils.isAssignable(entry.getType(), max.getClass())) {
             throw new IllegalArgumentException();
         }
-        bounds = new Bounds<>((T) min, (T) max);
+        bounds = new Bounds<>((T) min, (T) max, slider);
     }
 
 }

+ 28 - 6
src/main/java/me/lortseam/completeconfig/gui/GuiRegistry.java

@@ -36,8 +36,8 @@ public class GuiRegistry {
         registerProvider(provider, (field, extras) -> true, types);
     }
 
-    public void registerBoundedProvider(GuiProvider<?> provider, Class... types) {
-        registerProvider(provider, (field, extras) -> extras.getBounds() != null, types);
+    public void registerBoundedProvider(GuiProvider<?> provider, boolean slider, Class... types) {
+        registerProvider(provider, (field, extras) -> extras.getBounds() != null && extras.getBounds().isSlider() == slider, types);
     }
 
     public <T> void registerGenericProvider(GuiProvider<T> provider, Class<?> type, Class... genericTypes) {
@@ -69,6 +69,17 @@ public class GuiRegistry {
                 .build(),
                 int.class, Integer.class
         );
+        registerBoundedProvider((GuiProvider<Integer>) (text, field, value, defaultValue, tooltip, extras, saveConsumer) -> ConfigEntryBuilder
+                .create()
+                .startIntField(text, value)
+                .setDefaultValue(defaultValue)
+                .setMin(extras.getBounds().getMin())
+                .setMax(extras.getBounds().getMax())
+                .setTooltip(tooltip)
+                .setSaveConsumer(saveConsumer)
+                .build(),
+                false, int.class, Integer.class
+        );
         registerBoundedProvider((GuiProvider<Integer>) (text, field, value, defaultValue, tooltip, extras, saveConsumer) -> ConfigEntryBuilder
                 .create()
                 .startIntSlider(text, value, extras.getBounds().getMin(), extras.getBounds().getMax())
@@ -76,7 +87,7 @@ public class GuiRegistry {
                 .setTooltip(tooltip)
                 .setSaveConsumer(saveConsumer)
                 .build(),
-                int.class, Integer.class
+                true, int.class, Integer.class
         );
         registerProvider((GuiProvider<Long>) (text, field, value, defaultValue, tooltip, extras, saveConsumer) -> ConfigEntryBuilder
                 .create()
@@ -87,6 +98,17 @@ public class GuiRegistry {
                 .build(),
                 long.class, Long.class
         );
+        registerBoundedProvider((GuiProvider<Long>) (text, field, value, defaultValue, tooltip, extras, saveConsumer) -> ConfigEntryBuilder
+                .create()
+                .startLongField(text, value)
+                .setDefaultValue(defaultValue)
+                .setMin(extras.getBounds().getMin())
+                .setMax(extras.getBounds().getMax())
+                .setTooltip(tooltip)
+                .setSaveConsumer(saveConsumer)
+                .build(),
+                false, long.class, Long.class
+        );
         registerBoundedProvider((GuiProvider<Long>) (text, field, value, defaultValue, tooltip, extras, saveConsumer) -> ConfigEntryBuilder
                 .create()
                 .startLongSlider(text, value, extras.getBounds().getMin(), extras.getBounds().getMax())
@@ -94,7 +116,7 @@ public class GuiRegistry {
                 .setTooltip(tooltip)
                 .setSaveConsumer(saveConsumer)
                 .build(),
-                long.class, Long.class
+                true, long.class, Long.class
         );
         registerProvider((GuiProvider<Float>) (text, field, value, defaultValue, tooltip, extras, saveConsumer) -> ConfigEntryBuilder
                 .create()
@@ -114,7 +136,7 @@ public class GuiRegistry {
                 .setTooltip(tooltip)
                 .setSaveConsumer(saveConsumer)
                 .build(),
-                float.class, Float.class
+                false, float.class, Float.class
         );
         registerProvider((GuiProvider<Double>) (text, field, value, defaultValue, tooltip, extras, saveConsumer) -> ConfigEntryBuilder
                 .create()
@@ -134,7 +156,7 @@ public class GuiRegistry {
                 .setTooltip(tooltip)
                 .setSaveConsumer(saveConsumer)
                 .build(),
-                double.class, Double.class
+                false, double.class, Double.class
         );
         registerProvider((GuiProvider<String>) (text, field, value, defaultValue, tooltip, extras, saveConsumer) -> ConfigEntryBuilder
                 .create()