aboutsummaryrefslogtreecommitdiff
path: root/common/src/main/java/dev/isxander/yacl3/config
diff options
context:
space:
mode:
authorisxander <xander@isxander.dev>2023-11-22 17:00:22 +0000
committerisxander <xander@isxander.dev>2023-11-22 17:00:22 +0000
commitc8ab29d1d6111ba581b0f0bcb0a6d0c852161edb (patch)
treeff7b25f06aef45bdb93e6f4743e20a6b2c78ee0c /common/src/main/java/dev/isxander/yacl3/config
parent4cdfa58b27d790786cbb2f17aa8f4635ea9d5a2d (diff)
downloadYetAnotherConfigLib-c8ab29d1d6111ba581b0f0bcb0a6d0c852161edb.tar.gz
YetAnotherConfigLib-c8ab29d1d6111ba581b0f0bcb0a6d0c852161edb.tar.bz2
YetAnotherConfigLib-c8ab29d1d6111ba581b0f0bcb0a6d0c852161edb.zip
Update to 1.20.3-pre2, temp disable forge projects
Diffstat (limited to 'common/src/main/java/dev/isxander/yacl3/config')
-rw-r--r--common/src/main/java/dev/isxander/yacl3/config/GsonConfigInstance.java9
-rw-r--r--common/src/main/java/dev/isxander/yacl3/config/v2/impl/serializer/GsonConfigSerializer.java18
2 files changed, 21 insertions, 6 deletions
diff --git a/common/src/main/java/dev/isxander/yacl3/config/GsonConfigInstance.java b/common/src/main/java/dev/isxander/yacl3/config/GsonConfigInstance.java
index deff6d7..4e7c931 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/GsonConfigInstance.java
+++ b/common/src/main/java/dev/isxander/yacl3/config/GsonConfigInstance.java
@@ -1,6 +1,7 @@
package dev.isxander.yacl3.config;
import com.google.gson.*;
+import dev.isxander.yacl3.config.v2.impl.serializer.GsonConfigSerializer;
import dev.isxander.yacl3.gui.utils.ItemRegistryHelper;
import dev.isxander.yacl3.impl.utils.YACLConstants;
import net.minecraft.core.registries.BuiltInRegistries;
@@ -66,8 +67,8 @@ public class GsonConfigInstance<T> extends ConfigInstance<T> {
this.path = path;
this.gson = builder
.setExclusionStrategies(new ConfigExclusionStrategy())
- .registerTypeHierarchyAdapter(Component.class, new Component.Serializer())
- .registerTypeHierarchyAdapter(Style.class, new Style.Serializer())
+ .registerTypeHierarchyAdapter(Component.class, new Component.SerializerAdapter())
+ .registerTypeHierarchyAdapter(Style.class, new GsonConfigSerializer.StyleTypeAdapter())
.registerTypeHierarchyAdapter(Color.class, new ColorTypeAdapter())
.registerTypeHierarchyAdapter(Item.class, new ItemTypeAdapter())
.serializeNulls()
@@ -161,8 +162,8 @@ public class GsonConfigInstance<T> extends ConfigInstance<T> {
private UnaryOperator<GsonBuilder> gsonBuilder = builder -> builder
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.serializeNulls()
- .registerTypeHierarchyAdapter(Component.class, new Component.Serializer())
- .registerTypeHierarchyAdapter(Style.class, new Style.Serializer())
+ .registerTypeHierarchyAdapter(Component.class, new Component.SerializerAdapter())
+ .registerTypeHierarchyAdapter(Style.class, new GsonConfigSerializer.StyleTypeAdapter())
.registerTypeHierarchyAdapter(Color.class, new ColorTypeAdapter())
.registerTypeHierarchyAdapter(Item.class, new ItemTypeAdapter());
diff --git a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/serializer/GsonConfigSerializer.java b/common/src/main/java/dev/isxander/yacl3/config/v2/impl/serializer/GsonConfigSerializer.java
index a60bcb1..1edd28a 100644
--- a/common/src/main/java/dev/isxander/yacl3/config/v2/impl/serializer/GsonConfigSerializer.java
+++ b/common/src/main/java/dev/isxander/yacl3/config/v2/impl/serializer/GsonConfigSerializer.java
@@ -1,12 +1,14 @@
package dev.isxander.yacl3.config.v2.impl.serializer;
import com.google.gson.*;
+import com.mojang.serialization.JsonOps;
import dev.isxander.yacl3.config.GsonConfigInstance;
import dev.isxander.yacl3.config.v2.api.*;
import dev.isxander.yacl3.config.v2.api.serializer.GsonConfigSerializerBuilder;
import dev.isxander.yacl3.gui.utils.ItemRegistryHelper;
import dev.isxander.yacl3.impl.utils.YACLConstants;
import dev.isxander.yacl3.platform.YACLPlatform;
+import net.minecraft.commands.ParserUtils;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.Style;
@@ -173,6 +175,18 @@ public class GsonConfigSerializer<T> extends ConfigSerializer<T> {
config.load();
}
+ public static class StyleTypeAdapter implements JsonSerializer<Style>, JsonDeserializer<Style> {
+ @Override
+ public Style deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
+ return Style.Serializer.CODEC.parse(JsonOps.INSTANCE, json).result().orElse(Style.EMPTY);
+ }
+
+ @Override
+ public JsonElement serialize(Style src, Type typeOfSrc, JsonSerializationContext context) {
+ return Style.Serializer.CODEC.encodeStart(JsonOps.INSTANCE, src).result().orElse(JsonNull.INSTANCE);
+ }
+ }
+
public static class ColorTypeAdapter implements JsonSerializer<Color>, JsonDeserializer<Color> {
@Override
public Color deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
@@ -205,8 +219,8 @@ public class GsonConfigSerializer<T> extends ConfigSerializer<T> {
private UnaryOperator<GsonBuilder> gsonBuilder = builder -> builder
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.serializeNulls()
- .registerTypeHierarchyAdapter(Component.class, new Component.Serializer())
- .registerTypeHierarchyAdapter(Style.class, new Style.Serializer())
+ .registerTypeHierarchyAdapter(Component.class, new Component.SerializerAdapter())
+ .registerTypeHierarchyAdapter(Style.class, new StyleTypeAdapter())
.registerTypeHierarchyAdapter(Color.class, new ColorTypeAdapter())
.registerTypeHierarchyAdapter(Item.class, new ItemTypeAdapter())
.setPrettyPrinting();