Ver Fonte

Remove GUI extensions

Lortseam há 4 anos atrás
pai
commit
c6d1822ae7

+ 0 - 14
src/main/java/me/lortseam/completeconfig/extensions/CompleteConfigExtension.java

@@ -1,9 +1,6 @@
 package me.lortseam.completeconfig.extensions;
 
 import me.lortseam.completeconfig.data.entry.Transformation;
-import me.lortseam.completeconfig.gui.cloth.GuiRegistry;
-import net.fabricmc.api.EnvType;
-import net.fabricmc.api.Environment;
 import org.spongepowered.configurate.serialize.TypeSerializerCollection;
 
 import java.util.Collection;
@@ -18,15 +15,4 @@ public interface CompleteConfigExtension {
         return null;
     }
 
-    @Environment(EnvType.CLIENT)
-    default Gui gui() {
-        return null;
-    }
-
-    interface Gui {
-
-        void registerProviders(GuiRegistry registry);
-
-    }
-
 }

+ 7 - 8
src/main/java/me/lortseam/completeconfig/extensions/clothbasicmath/ClothBasicMathExtension.java

@@ -1,23 +1,27 @@
 package me.lortseam.completeconfig.extensions.clothbasicmath;
 
 import com.google.common.collect.ImmutableList;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
 import me.lortseam.completeconfig.data.ColorEntry;
 import me.lortseam.completeconfig.data.entry.Transformation;
 import me.lortseam.completeconfig.extensions.CompleteConfigExtension;
 import me.shedaniel.math.Color;
+import net.fabricmc.loader.api.FabricLoader;
 import org.spongepowered.configurate.serialize.TypeSerializerCollection;
 
 import java.util.Collection;
 
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class ClothBasicMathExtension implements CompleteConfigExtension {
 
     private static final TypeSerializerCollection SERIALIZERS = TypeSerializerCollection.builder()
             .registerExact(ColorSerializer.INSTANCE)
             .build();
 
+    private ClothBasicMathExtension() {
+        if (FabricLoader.getInstance().isModLoaded("cloth-config2")) {
+            GuiProviders.register();
+        }
+    }
+
     @Override
     public TypeSerializerCollection getTypeSerializers() {
         return SERIALIZERS;
@@ -30,9 +34,4 @@ public final class ClothBasicMathExtension implements CompleteConfigExtension {
         );
     }
 
-    @Override
-    public Gui gui() {
-        return ClothBasicMathGuiExtension.INSTANCE;
-    }
-
 }

+ 4 - 11
src/main/java/me/lortseam/completeconfig/extensions/clothbasicmath/ClothBasicMathGuiExtension.java → src/main/java/me/lortseam/completeconfig/extensions/clothbasicmath/GuiProviders.java

@@ -1,20 +1,13 @@
 package me.lortseam.completeconfig.extensions.clothbasicmath;
 
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
 import me.lortseam.completeconfig.data.ColorEntry;
-import me.lortseam.completeconfig.extensions.CompleteConfigExtension;
 import me.lortseam.completeconfig.gui.cloth.GuiRegistry;
 import me.shedaniel.math.Color;
 
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-final class ClothBasicMathGuiExtension implements CompleteConfigExtension.Gui {
+final class GuiProviders {
 
-    static final ClothBasicMathGuiExtension INSTANCE = new ClothBasicMathGuiExtension();
-
-    @Override
-    public void registerProviders(GuiRegistry registry) {
-        registry.registerColorProvider((ColorEntry<Color> entry) -> GuiRegistry.build(
+    static void register() {
+        GuiRegistry.addGlobalProviders(registry -> registry.registerColorProvider((ColorEntry<Color> entry) -> GuiRegistry.build(
                 builder -> builder
                         .startColorField(entry.getText(), entry.getValue())
                         .setAlphaMode(entry.isAlphaMode())
@@ -22,7 +15,7 @@ final class ClothBasicMathGuiExtension implements CompleteConfigExtension.Gui {
                         .setTooltip(entry.getTooltip())
                         .setSaveConsumer2(entry::setValue),
                 entry.requiresRestart()
-        ), true, Color.class);
+        ), true, Color.class));
     }
 
 }

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

@@ -24,6 +24,7 @@ import java.util.function.Supplier;
 public class ClothConfigScreenBuilder implements ConfigScreenBuilder {
 
     private final Supplier<ConfigBuilder> supplier;
+    private final GuiRegistry registry = new GuiRegistry();
 
     public ClothConfigScreenBuilder(Supplier<ConfigBuilder> supplier) {
         this.supplier = supplier;
@@ -56,7 +57,7 @@ public class ClothConfigScreenBuilder implements ConfigScreenBuilder {
     }
 
     private AbstractConfigListEntry<?> buildEntry(Entry<?> entry) {
-        return GuiRegistry.getInstance().getProvider(entry).orElseThrow(() -> {
+        return registry.getProvider(entry).orElseThrow(() -> {
             return new UnsupportedOperationException("Could not find GUI provider for field " + entry.getField());
         }).build(entry);
     }

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

@@ -2,14 +2,10 @@ package me.lortseam.completeconfig.gui.cloth;
 
 import com.google.common.collect.MoreCollectors;
 import com.google.common.reflect.TypeToken;
-import lombok.AccessLevel;
-import lombok.Getter;
-import me.lortseam.completeconfig.CompleteConfig;
 import me.lortseam.completeconfig.data.BoundedEntry;
 import me.lortseam.completeconfig.data.ColorEntry;
 import me.lortseam.completeconfig.data.Entry;
 import me.lortseam.completeconfig.data.EnumEntry;
-import me.lortseam.completeconfig.extensions.CompleteConfigExtension;
 import me.shedaniel.clothconfig2.api.AbstractConfigListEntry;
 import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
 import me.shedaniel.clothconfig2.impl.builders.DropdownMenuBuilder;
@@ -20,15 +16,22 @@ import net.minecraft.text.TextColor;
 import org.apache.commons.lang3.ArrayUtils;
 
 import java.lang.reflect.Type;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.function.Predicate;
 
 @Environment(EnvType.CLIENT)
 public final class GuiRegistry {
 
-    @Getter(AccessLevel.PACKAGE)
-    private static final GuiRegistry instance = new GuiRegistry();
+    private static final List<Consumer<GuiRegistry>> globalProviders = new ArrayList<>();
+
+    public static void addGlobalProviders(Consumer<GuiRegistry> providersRegistration) {
+        globalProviders.add(providersRegistration);
+    }
 
     public static <T, A extends AbstractConfigListEntry> A build(Function<ConfigEntryBuilder, FieldBuilder<T, A>> builder, boolean requiresRestart) {
         FieldBuilder<T, A> fieldBuilder = builder.apply(ConfigEntryBuilder.create());
@@ -38,11 +41,11 @@ public final class GuiRegistry {
 
     private final List<GuiProviderRegistration> registrations = new ArrayList<>();
 
-    private GuiRegistry() {
+    GuiRegistry() {
         registerDefaultProviders();
-        CompleteConfig.getExtensions().stream().map(CompleteConfigExtension::gui).filter(Objects::nonNull).forEach(guiExtension -> {
-            guiExtension.registerProviders(this);
-        });
+        for (Consumer<GuiRegistry> providersRegistration : globalProviders) {
+            providersRegistration.accept(this);
+        }
     }
 
     public void registerProvider(GuiProvider<?> provider, Predicate<Entry<?>> predicate, Type... types) {