Lortseam hace 4 años
padre
commit
3de621ddd5

+ 9 - 9
src/main/java/me/lortseam/completeconfig/data/Entry.java

@@ -63,7 +63,8 @@ public class Entry<T> {
     private T defaultValue;
     @Setter(AccessLevel.PACKAGE)
     private String customTranslationKey;
-    private String[] tooltipTranslationKeys;
+    @Setter(AccessLevel.PACKAGE)
+    private String[] customTooltipKeys;
     @Getter
     private final Extras<T> extras = new Extras<>(this);
     private final List<Listener> listeners = new ArrayList<>();
@@ -151,15 +152,14 @@ public class Entry<T> {
         return new TranslatableText(getTranslationKey());
     }
 
-    void setCustomTooltipTranslationKeys(String[] tooltipTranslationKeys) {
-        this.tooltipTranslationKeys = tooltipTranslationKeys;
-    }
-
     public Optional<Text[]> getTooltip() {
-        if (tooltipTranslationKeys == null) {
+        String[] keys = null;
+        if (customTooltipKeys != null) {
+            keys = customTooltipKeys;
+        } else {
             String defaultTooltipTranslationKey = getTranslationKey() + ".tooltip";
             if (I18n.hasTranslation(defaultTooltipTranslationKey)) {
-                tooltipTranslationKeys = new String[] {defaultTooltipTranslationKey};
+                keys = new String[] {defaultTooltipTranslationKey};
             } else {
                 List<String> defaultTooltipTranslationKeys = new ArrayList<>();
                 for(int i = 0;; i++) {
@@ -168,14 +168,14 @@ public class Entry<T> {
                         defaultTooltipTranslationKeys.add(key);
                     } else {
                         if (!defaultTooltipTranslationKeys.isEmpty()) {
-                            tooltipTranslationKeys = defaultTooltipTranslationKeys.toArray(new String[0]);
+                            keys = defaultTooltipTranslationKeys.toArray(new String[0]);
                         }
                         break;
                     }
                 }
             }
         }
-        return tooltipTranslationKeys != null ? Optional.of(Arrays.stream(tooltipTranslationKeys).map(TranslatableText::new).toArray(Text[]::new)) : Optional.empty();
+        return keys != null ? Optional.of(Arrays.stream(keys).map(TranslatableText::new).toArray(Text[]::new)) : Optional.empty();
     }
 
     <N extends Number> void setBounds(N min, N max, boolean slider) {

+ 1 - 1
src/main/java/me/lortseam/completeconfig/gui/cloth/ClothGuiBuilder.java

@@ -55,7 +55,7 @@ public class ClothGuiBuilder implements GuiBuilder {
         for (Entry entry : collection.getEntries().values()) {
             collectionGui.add(((Optional<GuiProvider>) registry.getProvider(entry)).orElseGet(() -> {
                 throw new UnsupportedOperationException("Could not find gui provider for field " + entry.getField());
-            }).build(entry.getText(), entry.getField(), entry.getValue(), entry.getDefaultValue(), entry.getTooltip(), entry.getExtras(), entry::setValue, entry.requiresRestart()));
+            }).build(entry));
         }
         for (Collection c : collection.getCollections().values()) {
             SubCategoryBuilder subBuilder = ConfigEntryBuilder.create().startSubCategory(c.getText());

+ 2 - 7
src/main/java/me/lortseam/completeconfig/gui/cloth/GuiProvider.java

@@ -1,19 +1,14 @@
 package me.lortseam.completeconfig.gui.cloth;
 
-import me.lortseam.completeconfig.data.Extras;
+import me.lortseam.completeconfig.data.Entry;
 import me.shedaniel.clothconfig2.api.AbstractConfigListEntry;
 import net.fabricmc.api.EnvType;
 import net.fabricmc.api.Environment;
-import net.minecraft.text.Text;
-
-import java.lang.reflect.Field;
-import java.util.Optional;
-import java.util.function.Consumer;
 
 @Environment(EnvType.CLIENT)
 @FunctionalInterface
 public interface GuiProvider<T> {
 
-    AbstractConfigListEntry<T> build(Text text, Field field, T value, T defaultValue, Optional<Text[]> tooltip, Extras<T> extras, Consumer<T> saveConsumer, boolean requiresRestart);
+    AbstractConfigListEntry<T> build(Entry<T> entry);
 
 }

+ 132 - 132
src/main/java/me/lortseam/completeconfig/gui/cloth/GuiRegistry.java

@@ -71,173 +71,173 @@ public class GuiRegistry {
     }
 
     private void registerDefaultProviders() {
-       registerProvider((GuiProvider<Boolean>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
+       registerProvider((GuiProvider<Boolean>) entry -> build(
                builder -> builder
-                       .startBooleanToggle(text, value)
-                       .setDefaultValue(defaultValue)
-                       .setTooltip(tooltip)
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+                       .startBooleanToggle(entry.getText(), entry.getValue())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setTooltip(entry.getTooltip())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), boolean.class, Boolean.class);
-       registerProvider((GuiProvider<Integer>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
+       registerProvider((GuiProvider<Integer>) entry -> build(
                builder -> builder
-                       .startIntField(text, value)
-                       .setDefaultValue(defaultValue)
-                       .setTooltip(tooltip)
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+                       .startIntField(entry.getText(), entry.getValue())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setTooltip(entry.getTooltip())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), int.class, Integer.class);
-       registerBoundedProvider((GuiProvider<Integer>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
-               builder -> builder
-                       .startIntField(text, value)
-                       .setDefaultValue(defaultValue)
-                       .setMin(extras.getBounds().getMin())
-                       .setMax(extras.getBounds().getMax())
-                       .setTooltip(tooltip)
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+       registerBoundedProvider((GuiProvider<Integer>) entry -> build(
+               builder -> builder
+                       .startIntField(entry.getText(), entry.getValue())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setMin(entry.getExtras().getBounds().getMin())
+                       .setMax(entry.getExtras().getBounds().getMax())
+                       .setTooltip(entry.getTooltip())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), false, int.class, Integer.class);
-       registerBoundedProvider((GuiProvider<Integer>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
+       registerBoundedProvider((GuiProvider<Integer>) entry -> build(
                builder -> builder
-                       .startIntSlider(text, value, extras.getBounds().getMin(), extras.getBounds().getMax())
-                       .setDefaultValue(defaultValue)
-                       .setTooltip(tooltip)
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+                       .startIntSlider(entry.getText(), entry.getValue(), entry.getExtras().getBounds().getMin(), entry.getExtras().getBounds().getMax())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setTooltip(entry.getTooltip())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), true, int.class, Integer.class);
-       registerProvider((GuiProvider<Long>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
+       registerProvider((GuiProvider<Long>) entry -> build(
                builder -> builder
-                       .startLongField(text, value)
-                       .setDefaultValue(defaultValue)
-                       .setTooltip(tooltip)
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+                       .startLongField(entry.getText(), entry.getValue())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setTooltip(entry.getTooltip())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), long.class, Long.class);
-       registerBoundedProvider((GuiProvider<Long>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
-               builder -> builder
-                       .startLongField(text, value)
-                       .setDefaultValue(defaultValue)
-                       .setMin(extras.getBounds().getMin())
-                       .setMax(extras.getBounds().getMax())
-                       .setTooltip(tooltip)
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+       registerBoundedProvider((GuiProvider<Long>) entry -> build(
+               builder -> builder
+                       .startLongField(entry.getText(), entry.getValue())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setMin(entry.getExtras().getBounds().getMin())
+                       .setMax(entry.getExtras().getBounds().getMax())
+                       .setTooltip(entry.getTooltip())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), false, long.class, Long.class);
-       registerBoundedProvider((GuiProvider<Long>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
+       registerBoundedProvider((GuiProvider<Long>) entry -> build(
                builder -> builder
-                       .startLongSlider(text, value, extras.getBounds().getMin(), extras.getBounds().getMax())
-                       .setDefaultValue(defaultValue)
-                       .setTooltip(tooltip)
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+                       .startLongSlider(entry.getText(), entry.getValue(), entry.getExtras().getBounds().getMin(), entry.getExtras().getBounds().getMax())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setTooltip(entry.getTooltip())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), true, long.class, Long.class);
-       registerProvider((GuiProvider<Float>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
+       registerProvider((GuiProvider<Float>) entry -> build(
                builder -> builder
-                       .startFloatField(text, value)
-                       .setDefaultValue(defaultValue)
-                       .setTooltip(tooltip)
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+                       .startFloatField(entry.getText(), entry.getValue())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setTooltip(entry.getTooltip())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), float.class, Float.class);
-       registerBoundedProvider((GuiProvider<Float>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
-               builder -> builder
-                       .startFloatField(text, value)
-                       .setDefaultValue(defaultValue)
-                       .setMin(extras.getBounds().getMin())
-                       .setMax(extras.getBounds().getMax())
-                       .setTooltip(tooltip)
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+       registerBoundedProvider((GuiProvider<Float>) entry -> build(
+               builder -> builder
+                       .startFloatField(entry.getText(), entry.getValue())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setMin(entry.getExtras().getBounds().getMin())
+                       .setMax(entry.getExtras().getBounds().getMax())
+                       .setTooltip(entry.getTooltip())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), false, float.class, Float.class);
-       registerProvider((GuiProvider<Double>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
+       registerProvider((GuiProvider<Double>) entry -> build(
                builder -> builder
-                       .startDoubleField(text, value)
-                       .setDefaultValue(defaultValue)
-                       .setTooltip(tooltip)
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+                       .startDoubleField(entry.getText(), entry.getValue())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setTooltip(entry.getTooltip())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), double.class, Double.class);
-       registerBoundedProvider((GuiProvider<Double>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
-               builder -> builder
-                       .startDoubleField(text, value)
-                       .setDefaultValue(defaultValue)
-                       .setMin(extras.getBounds().getMin())
-                       .setMax(extras.getBounds().getMax())
-                       .setTooltip(tooltip)
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+       registerBoundedProvider((GuiProvider<Double>) entry -> build(
+               builder -> builder
+                       .startDoubleField(entry.getText(), entry.getValue())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setMin(entry.getExtras().getBounds().getMin())
+                       .setMax(entry.getExtras().getBounds().getMax())
+                       .setTooltip(entry.getTooltip())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), false, double.class, Double.class);
-       registerProvider((GuiProvider<String>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
+       registerProvider((GuiProvider<String>) entry -> build(
                builder -> builder
-                       .startStrField(text, value)
-                       .setDefaultValue(defaultValue)
-                       .setTooltip(tooltip)
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+                       .startStrField(entry.getText(), entry.getValue())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setTooltip(entry.getTooltip())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), String.class);
-       registerEnumProvider((GuiProvider<? extends Enum<?>>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
-               builder -> builder
-                       .startEnumSelector(text, (Class<Enum<?>>) field.getType(), value)
-                       .setDefaultValue(defaultValue)
-                       .setTooltip(tooltip)
-                       .setEnumNameProvider(extras.getEnumOptions().getNameProvider())
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+       registerEnumProvider((GuiProvider<? extends Enum<?>>) entry -> build(
+               builder -> builder
+                       .startEnumSelector(entry.getText(), (Class<Enum<?>>) entry.getField().getType(), entry.getValue())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setTooltip(entry.getTooltip())
+                       .setEnumNameProvider(entry.getExtras().getEnumOptions().getNameProvider())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), EnumOptions.DisplayType.BUTTON);
-       registerEnumProvider((GuiProvider<? extends Enum>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> {
-           List<Enum> enumValues = Arrays.asList(((Class<? extends Enum>) field.getType()).getEnumConstants());
+       registerEnumProvider((GuiProvider<? extends Enum>) entry -> {
+           List<Enum> enumValues = Arrays.asList(((Class<? extends Enum>) entry.getField().getType()).getEnumConstants());
            return build(
                    builder -> builder
-                           .startDropdownMenu(text, DropdownMenuBuilder.TopCellElementBuilder.of(
-                                   value,
-                                   enumTranslation -> enumValues.stream().filter(enumValue -> extras.getEnumOptions().getNameProvider().apply(enumValue).getString().equals(enumTranslation)).collect(MoreCollectors.toOptional()).orElse(null),
-                                   extras.getEnumOptions().getNameProvider()
-                           ), DropdownMenuBuilder.CellCreatorBuilder.of(extras.getEnumOptions().getNameProvider()))
+                           .startDropdownMenu(entry.getText(), DropdownMenuBuilder.TopCellElementBuilder.of(
+                                   entry.getValue(),
+                                   enumTranslation -> enumValues.stream().filter(enumValue -> entry.getExtras().getEnumOptions().getNameProvider().apply(enumValue).getString().equals(enumTranslation)).collect(MoreCollectors.toOptional()).orElse(null),
+                                   entry.getExtras().getEnumOptions().getNameProvider()
+                           ), DropdownMenuBuilder.CellCreatorBuilder.of(entry.getExtras().getEnumOptions().getNameProvider()))
                            .setSelections(enumValues)
-                           .setDefaultValue(defaultValue)
-                           .setSaveConsumer(saveConsumer),
-                   requiresRestart
+                           .setDefaultValue(entry.getDefaultValue())
+                           .setSaveConsumer(entry::setValue),
+                   entry.requiresRestart()
            );
        }, EnumOptions.DisplayType.DROPDOWN);
-       registerGenericProvider((GuiProvider<List<Integer>>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
+       registerGenericProvider((GuiProvider<List<Integer>>) entry -> build(
                builder -> builder
-                       .startIntList(text, value)
-                       .setDefaultValue(defaultValue)
-                       .setTooltip(tooltip)
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+                       .startIntList(entry.getText(), entry.getValue())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setTooltip(entry.getTooltip())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), List.class, Integer.class);
-       registerGenericProvider((GuiProvider<List<Long>>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
+       registerGenericProvider((GuiProvider<List<Long>>) entry -> build(
                builder -> builder
-                       .startLongList(text, value)
-                       .setDefaultValue(defaultValue)
-                       .setTooltip(tooltip)
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+                       .startLongList(entry.getText(), entry.getValue())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setTooltip(entry.getTooltip())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), List.class, Long.class);
-       registerGenericProvider((GuiProvider<List<Float>>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
+       registerGenericProvider((GuiProvider<List<Float>>) entry -> build(
                builder -> builder
-                       .startFloatList(text, value)
-                       .setDefaultValue(defaultValue)
-                       .setTooltip(tooltip)
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+                       .startFloatList(entry.getText(), entry.getValue())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setTooltip(entry.getTooltip())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), List.class, Float.class);
-       registerGenericProvider((GuiProvider<List<Double>>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
+       registerGenericProvider((GuiProvider<List<Double>>) entry -> build(
                builder -> builder
-                       .startDoubleList(text, value)
-                       .setDefaultValue(defaultValue)
-                       .setTooltip(tooltip)
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+                       .startDoubleList(entry.getText(), entry.getValue())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setTooltip(entry.getTooltip())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), List.class, Double.class);
-       registerGenericProvider((GuiProvider<List<String>>) (text, field, value, defaultValue, tooltip, extras, saveConsumer, requiresRestart) -> build(
+       registerGenericProvider((GuiProvider<List<String>>) entry -> build(
                builder -> builder
-                       .startStrList(text, value)
-                       .setDefaultValue(defaultValue)
-                       .setTooltip(tooltip)
-                       .setSaveConsumer(saveConsumer),
-               requiresRestart
+                       .startStrList(entry.getText(), entry.getValue())
+                       .setDefaultValue(entry.getDefaultValue())
+                       .setTooltip(entry.getTooltip())
+                       .setSaveConsumer(entry::setValue),
+               entry.requiresRestart()
        ), List.class, String.class);
     }