Browse Source

GUI registry improvements

Lortseam 5 years ago
parent
commit
706ac6f446
2 changed files with 17 additions and 8 deletions
  1. 1 1
      gradle.properties
  2. 16 7
      src/main/java/me/lortseam/completeconfig/gui/GuiRegistry.java

+ 1 - 1
gradle.properties

@@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G
 	loader_version=0.8.2+build.194
 	loader_version=0.8.2+build.194
 
 
 # Mod Properties
 # Mod Properties
-	mod_version = 0.1.5
+	mod_version = 0.2.0
 	maven_group = com.gitlab.Lortseam
 	maven_group = com.gitlab.Lortseam
 	archives_base_name = completeconfig
 	archives_base_name = completeconfig
 
 

+ 16 - 7
src/main/java/me/lortseam/completeconfig/gui/GuiRegistry.java

@@ -6,8 +6,9 @@ import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
 import net.minecraft.client.resource.language.I18n;
 import net.minecraft.client.resource.language.I18n;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.ArrayUtils;
 
 
-import java.lang.reflect.Field;
+import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashMap;
+import java.util.LinkedList;
 import java.util.Map;
 import java.util.Map;
 
 
 public class GuiRegistry {
 public class GuiRegistry {
@@ -110,6 +111,14 @@ public class GuiRegistry {
                 .build(),
                 .build(),
                 double.class, Double.class
                 double.class, Double.class
         );
         );
+        registerProvider((GuiProvider<String>) (translationKey, field, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
+                .create()
+                .startStrField(translationKey, value)
+                .setDefaultValue(defaultValue)
+                .setSaveConsumer(saveConsumer)
+                .build(),
+                String.class
+        );
         registerProvider((GuiProvider<? extends Enum>) (translationKey, field, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
         registerProvider((GuiProvider<? extends Enum>) (translationKey, field, value, defaultValue, extras, saveConsumer) -> ConfigEntryBuilder
                 .create()
                 .create()
                 .startEnumSelector(translationKey, (Class<Enum>) field.getType(), value)
                 .startEnumSelector(translationKey, (Class<Enum>) field.getType(), value)
@@ -122,14 +131,14 @@ public class GuiRegistry {
     }
     }
 
 
     public <T> GuiProvider<T> getProvider(Entry<T> entry) {
     public <T> GuiProvider<T> getProvider(Entry<T> entry) {
-        GuiProvider<T> guiProvider = null;
-        for (Map.Entry<GuiProviderPredicate, GuiProvider> mapEntry : guiProviders.entrySet()) {
-            Field field = entry.getField();
-            if (mapEntry.getKey().test(field, entry.getExtras())) {
-                guiProvider = mapEntry.getValue();
+        Iterator<Map.Entry<GuiProviderPredicate, GuiProvider>> iter = new LinkedList<>(guiProviders.entrySet()).descendingIterator();
+        while (iter.hasNext()) {
+            Map.Entry<GuiProviderPredicate, GuiProvider> mapEntry = iter.next();
+            if (mapEntry.getKey().test(entry.getField(), entry.getExtras())) {
+                return mapEntry.getValue();
             }
             }
         }
         }
-        return guiProvider;
+        return null;
     }
     }
 
 
 }
 }