diff options
author | isXander <xandersmith2008@gmail.com> | 2023-12-05 21:00:23 +0000 |
---|---|---|
committer | isXander <xandersmith2008@gmail.com> | 2023-12-05 21:00:23 +0000 |
commit | 7c8661265e7116be46467b4f37f1bbcb31569ecc (patch) | |
tree | 22f81288373e530de5371ffa49589bfc1834da1b /common/src/main/java/dev/isxander/yacl3/config | |
parent | 5c2201d85a727e1d68ab64b1abdc3fd8518c816b (diff) | |
parent | 996252cf5fd6d5afad7eb3fc91fd6285af5b4ee5 (diff) | |
download | YetAnotherConfigLib-7c8661265e7116be46467b4f37f1bbcb31569ecc.tar.gz YetAnotherConfigLib-7c8661265e7116be46467b4f37f1bbcb31569ecc.tar.bz2 YetAnotherConfigLib-7c8661265e7116be46467b4f37f1bbcb31569ecc.zip |
Merge branch 'update/1.20.3' into 1.20.x/dev
# Conflicts:
# common/src/main/java/dev/isxander/yacl3/config/v2/impl/serializer/GsonConfigSerializer.java
Diffstat (limited to 'common/src/main/java/dev/isxander/yacl3/config')
-rw-r--r-- | common/src/main/java/dev/isxander/yacl3/config/GsonConfigInstance.java | 9 | ||||
-rw-r--r-- | common/src/main/java/dev/isxander/yacl3/config/v2/impl/serializer/GsonConfigSerializer.java | 19 |
2 files changed, 22 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 49f2a47..d38fb73 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,11 +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 +176,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 +220,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(); |