浏览代码

Small gui registry restructuring

Lortseam 5 年之前
父节点
当前提交
3e9de407b7

+ 0 - 84
src/main/java/me/lortseam/completeconfig/CompleteConfig.java

@@ -1,17 +1,11 @@
 package me.lortseam.completeconfig;
 
-import com.google.common.base.CaseFormat;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import me.lortseam.completeconfig.entry.GuiProvider;
-import me.lortseam.completeconfig.entry.GuiRegistry;
-import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
-import net.minecraft.client.resource.language.I18n;
 
 import java.util.HashSet;
 import java.util.Optional;
 import java.util.Set;
-import java.util.function.Function;
 
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class CompleteConfig {
@@ -23,88 +17,10 @@ public final class CompleteConfig {
             throw new IllegalArgumentException("A manager with this mod ID is already registered");
         }
         ConfigManager manager = new ConfigManager(modID);
-        registerDefaultGuiProviders(manager.getGuiRegistry());
         managers.add(manager);
         return manager;
     }
 
-    private static void registerDefaultGuiProviders(GuiRegistry registry) {
-        registry.registerTypeProvider(Boolean.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
-                .create()
-                .startBooleanToggle(translationKey, value)
-                .setDefaultValue(defaultValue)
-                .setSaveConsumer(saveConsumer)
-                .build()
-        );
-        registry.registerTypeProvider(Integer.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
-                .create()
-                .startIntField(translationKey, value)
-                .setDefaultValue(defaultValue)
-                .setSaveConsumer(saveConsumer)
-                .build()
-        );
-        registry.registerBoundedTypeProvider(Integer.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
-                .create()
-                .startIntSlider(translationKey, value, extras.getBounds().getMin(), extras.getBounds().getMax())
-                .setDefaultValue(defaultValue)
-                .setSaveConsumer(saveConsumer)
-                .build()
-        );
-        registry.registerTypeProvider(Long.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
-                .create()
-                .startLongField(translationKey, value)
-                .setDefaultValue(defaultValue)
-                .setSaveConsumer(saveConsumer)
-                .build()
-        );
-        registry.registerBoundedTypeProvider(Long.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
-                .create()
-                .startLongSlider(translationKey, value, extras.getBounds().getMin(), extras.getBounds().getMax())
-                .setDefaultValue(defaultValue)
-                .setSaveConsumer(saveConsumer)
-                .build()
-        );
-        registry.registerTypeProvider(Float.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
-                .create()
-                .startFloatField(translationKey, value)
-                .setDefaultValue(defaultValue)
-                .setSaveConsumer(saveConsumer)
-                .build()
-        );
-        registry.registerBoundedTypeProvider(Float.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
-                .create()
-                .startFloatField(translationKey, value)
-                .setDefaultValue(defaultValue)
-                .setMin(extras.getBounds().getMin())
-                .setMax(extras.getBounds().getMax())
-                .setSaveConsumer(saveConsumer)
-                .build()
-        );
-        registry.registerTypeProvider(Double.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
-                .create()
-                .startDoubleField(translationKey, value)
-                .setDefaultValue(defaultValue)
-                .setSaveConsumer(saveConsumer)
-                .build()
-        );
-        registry.registerBoundedTypeProvider(Double.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
-                .create()
-                .startDoubleField(translationKey, value)
-                .setDefaultValue(defaultValue)
-                .setMin(extras.getBounds().getMin())
-                .setMax(extras.getBounds().getMax())
-                .setSaveConsumer(saveConsumer)
-                .build()
-        );
-        registry.registerProvider((field, type, extras) -> Enum.class.isAssignableFrom(type), (GuiProvider<? extends Enum>) (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
-                .create()
-                .startEnumSelector(translationKey, type, value)
-                .setDefaultValue(defaultValue)
-                .setEnumNameProvider(e -> I18n.translate(translationKey + "." + CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, e.name())))
-                .setSaveConsumer(saveConsumer)
-                .build());
-    }
-
     public static Optional<ConfigManager> getManager(String modID) {
         return managers.stream().filter(manager -> manager.getModID().equals(modID)).findAny();
     }

+ 1 - 0
src/main/java/me/lortseam/completeconfig/entry/GuiProviderPredicate.java

@@ -5,6 +5,7 @@ import java.lang.reflect.Field;
 @FunctionalInterface
 public interface GuiProviderPredicate<T> {
 
+    //TODO: Also provide object of field (T)
     boolean test(Field field, Class<T> type, Extras<T> extras);
 
 }

+ 86 - 0
src/main/java/me/lortseam/completeconfig/entry/GuiRegistry.java

@@ -1,5 +1,10 @@
 package me.lortseam.completeconfig.entry;
 
+import com.google.common.base.CaseFormat;
+import me.lortseam.completeconfig.api.ConfigEntry;
+import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
+import net.minecraft.client.resource.language.I18n;
+
 import java.lang.reflect.Field;
 import java.util.LinkedHashMap;
 import java.util.Map;
@@ -8,6 +13,10 @@ public class GuiRegistry {
 
     private final LinkedHashMap<GuiProviderPredicate, GuiProvider> guiProviders = new LinkedHashMap<>();
 
+    public GuiRegistry() {
+        registerDefaultProviders();
+    }
+
     public void registerProvider(GuiProviderPredicate predicate, GuiProvider provider) {
         guiProviders.put(predicate, provider);
     }
@@ -20,6 +29,83 @@ public class GuiRegistry {
         registerProvider((field, fieldType, extras) -> fieldType == type && extras.getBounds() != null, provider);
     }
 
+    private void registerDefaultProviders() {
+        registerTypeProvider(Boolean.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
+                .create()
+                .startBooleanToggle(translationKey, value)
+                .setDefaultValue(defaultValue)
+                .setSaveConsumer(saveConsumer)
+                .build()
+        );
+        registerTypeProvider(Integer.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
+                .create()
+                .startIntField(translationKey, value)
+                .setDefaultValue(defaultValue)
+                .setSaveConsumer(saveConsumer)
+                .build()
+        );
+        registerBoundedTypeProvider(Integer.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
+                .create()
+                .startIntSlider(translationKey, value, extras.getBounds().getMin(), extras.getBounds().getMax())
+                .setDefaultValue(defaultValue)
+                .setSaveConsumer(saveConsumer)
+                .build()
+        );
+        registerTypeProvider(Long.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
+                .create()
+                .startLongField(translationKey, value)
+                .setDefaultValue(defaultValue)
+                .setSaveConsumer(saveConsumer)
+                .build()
+        );
+        registerBoundedTypeProvider(Long.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
+                .create()
+                .startLongSlider(translationKey, value, extras.getBounds().getMin(), extras.getBounds().getMax())
+                .setDefaultValue(defaultValue)
+                .setSaveConsumer(saveConsumer)
+                .build()
+        );
+        registerTypeProvider(Float.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
+                .create()
+                .startFloatField(translationKey, value)
+                .setDefaultValue(defaultValue)
+                .setSaveConsumer(saveConsumer)
+                .build()
+        );
+        registerBoundedTypeProvider(Float.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
+                .create()
+                .startFloatField(translationKey, value)
+                .setDefaultValue(defaultValue)
+                .setMin(extras.getBounds().getMin())
+                .setMax(extras.getBounds().getMax())
+                .setSaveConsumer(saveConsumer)
+                .build()
+        );
+        registerTypeProvider(Double.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
+                .create()
+                .startDoubleField(translationKey, value)
+                .setDefaultValue(defaultValue)
+                .setSaveConsumer(saveConsumer)
+                .build()
+        );
+        registerBoundedTypeProvider(Double.TYPE, (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
+                .create()
+                .startDoubleField(translationKey, value)
+                .setDefaultValue(defaultValue)
+                .setMin(extras.getBounds().getMin())
+                .setMax(extras.getBounds().getMax())
+                .setSaveConsumer(saveConsumer)
+                .build()
+        );
+        registerProvider((field, type, extras) -> Enum.class.isAssignableFrom(type), (GuiProvider<? extends Enum>) (translationKey, type, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
+                .create()
+                .startEnumSelector(translationKey, type, value)
+                .setDefaultValue(defaultValue)
+                .setEnumNameProvider(e -> I18n.translate(translationKey + "." + CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, e.name())))
+                .setSaveConsumer(saveConsumer)
+                .build());
+    }
+
     public <T> GuiProvider<T> getProvider(Entry<T> entry) {
         GuiProvider<T> guiProvider = null;
         for (Map.Entry<GuiProviderPredicate, GuiProvider> mapEntry : guiProviders.entrySet()) {