Bladeren bron

Improve serializers

Lortseam 4 jaren geleden
bovenliggende
commit
512c001f6d

+ 27 - 0
lib/src/main/java/me/lortseam/completeconfig/io/ClientSerializers.java

@@ -0,0 +1,27 @@
+package me.lortseam.completeconfig.io;
+
+import lombok.experimental.UtilityClass;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
+import net.minecraft.text.TextColor;
+import org.spongepowered.configurate.serialize.CoercionFailedException;
+import org.spongepowered.configurate.serialize.ScalarSerializer;
+import org.spongepowered.configurate.serialize.TypeSerializer;
+import org.spongepowered.configurate.serialize.TypeSerializerCollection;
+
+@UtilityClass
+final class ClientSerializers {
+
+    private static final ScalarSerializer<TextColor> TEXT_COLOR = TypeSerializer.of(TextColor.class, (v, pass) -> v.getRgb(), v -> {
+        if (v instanceof Integer) {
+            return TextColor.fromRgb((Integer) v);
+        }
+        throw new CoercionFailedException(v, TextColor.class.getSimpleName());
+    });
+
+    @Environment(EnvType.CLIENT)
+    final static TypeSerializerCollection COLLECTION = TypeSerializerCollection.builder()
+            .registerExact(TEXT_COLOR)
+            .build();
+
+}

+ 1 - 1
lib/src/main/java/me/lortseam/completeconfig/io/ConfigSource.java

@@ -32,7 +32,7 @@ public final class ConfigSource {
         TypeSerializerCollection.Builder builder = TypeSerializerCollection.builder();
         switch (FabricLoader.getInstance().getEnvironmentType()) {
             case CLIENT:
-                builder.registerExact(TextColorSerializer.INSTANCE);
+                builder.registerAll(ClientSerializers.COLLECTION);
                 break;
         }
         GLOBAL_TYPE_SERIALIZERS = builder.build();

+ 0 - 32
lib/src/main/java/me/lortseam/completeconfig/io/TextColorSerializer.java

@@ -1,32 +0,0 @@
-package me.lortseam.completeconfig.io;
-
-import net.minecraft.text.TextColor;
-import org.spongepowered.configurate.serialize.CoercionFailedException;
-import org.spongepowered.configurate.serialize.ScalarSerializer;
-import org.spongepowered.configurate.serialize.SerializationException;
-
-import java.lang.reflect.Type;
-import java.util.function.Predicate;
-
-final class TextColorSerializer extends ScalarSerializer<TextColor> {
-
-    static final TextColorSerializer INSTANCE = new TextColorSerializer();
-
-    private TextColorSerializer() {
-        super(TextColor.class);
-    }
-
-    @Override
-    public TextColor deserialize(Type type, Object obj) throws SerializationException {
-        if (obj instanceof Integer) {
-            return TextColor.fromRgb((Integer) obj);
-        }
-        throw new CoercionFailedException(type, obj, TextColor.class.getSimpleName());
-    }
-
-    @Override
-    protected Object serialize(TextColor item, Predicate<Class<?>> typeSupported) {
-        return item.getRgb();
-    }
-
-}