From 30fb35f807cee52a1a9f1334e642cd7aa896acf4 Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Thu, 20 Mar 2025 20:40:36 +0100 Subject: [PATCH] feat: minimal custom type adapter for Identifiers - Needed for MC 1.21.5+ (The official Serializer was removed) --- .../java/eu/midnightdust/lib/config/MidnightConfig.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java b/common/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java index 8591097..a827883 100755 --- a/common/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java +++ b/common/src/main/java/eu/midnightdust/lib/config/MidnightConfig.java @@ -1,8 +1,8 @@ package eu.midnightdust.lib.config; import com.google.common.collect.Lists; -import com.google.gson.ExclusionStrategy; import com.google.gson.FieldAttributes; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.mojang.blaze3d.systems.RenderSystem; +import com.google.gson.*; import com.google.gson.stream.*; import eu.midnightdust.lib.util.PlatformFunctions; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; @@ -19,6 +19,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.awt.Color; +import java.io.IOException; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.lang.reflect.ParameterizedType; import java.nio.file.Files; import java.nio.file.Path; @@ -76,8 +77,10 @@ public abstract class MidnightConfig { private static final Gson gson = new GsonBuilder() .excludeFieldsWithModifiers(Modifier.TRANSIENT).excludeFieldsWithModifiers(Modifier.PRIVATE) .addSerializationExclusionStrategy(new HiddenAnnotationExclusionStrategy()) - .registerTypeAdapter(Identifier.class, new Identifier.Serializer()) - .setPrettyPrinting().create(); + .registerTypeAdapter(Identifier.class, new TypeAdapter() { + public void write(JsonWriter out, Identifier id) throws IOException { out.value(id.toString()); } + public Identifier read(JsonReader in) throws IOException { return Identifier.of(in.nextString()); } + }).setPrettyPrinting().create(); @SuppressWarnings("unused") // Utility for mod authors public static @Nullable Object getDefaultValue(String modid, String entry) {