From cb8d8ebc7d5688d542fbb8378d7a32c111e78dcc Mon Sep 17 00:00:00 2001 From: rtm516 Date: Sat, 24 Oct 2020 20:01:27 +0100 Subject: [PATCH] Fix conversion of complex json descriptions --- pom.xml | 18 ++++++++++++++++++ .../api/converters/MetadataConverter.java | 10 ++++++++++ 2 files changed, 28 insertions(+) diff --git a/pom.xml b/pom.xml index a137ae0..ee80c4c 100644 --- a/pom.xml +++ b/pom.xml @@ -81,5 +81,23 @@ fastutil-int-object-maps 8.3.1 + + net.kyori + adventure-api + 4.1.1 + compile + + + net.kyori + adventure-text-serializer-gson + 4.1.1 + compile + + + net.kyori + adventure-text-serializer-legacy + 4.1.1 + compile + \ No newline at end of file diff --git a/src/main/java/org/geysermc/packconverter/api/converters/MetadataConverter.java b/src/main/java/org/geysermc/packconverter/api/converters/MetadataConverter.java index ba95cb0..9a9bd04 100644 --- a/src/main/java/org/geysermc/packconverter/api/converters/MetadataConverter.java +++ b/src/main/java/org/geysermc/packconverter/api/converters/MetadataConverter.java @@ -31,7 +31,11 @@ import com.fasterxml.jackson.core.util.DefaultPrettyPrinter; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectWriter; +import com.google.gson.JsonSyntaxException; import lombok.Getter; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.geysermc.packconverter.api.PackConverter; import org.geysermc.packconverter.api.utils.ResourcePackManifest; @@ -76,6 +80,12 @@ public class MetadataConverter extends AbstractConverter { int packFormat = packmeta.get("pack_format").asInt(); String packDesc = packmeta.get("description").asText(); + // Convert the description if needed to make sure its valid on bedrock + try { + Component description = GsonComponentSerializer.colorDownsamplingGson().deserialize(packmeta.get("description").toString()); + packDesc = LegacyComponentSerializer.legacySection().serialize(description); + } catch (JsonSyntaxException ignored) { } + if (packFormat != 4 && packFormat != 5 && packFormat != 6) { throw new AssertionError("Only supports pack_format 4 (v1.13 or v1.14) or 5 (v1.15 or v1.16) or 6 (>= v1.16.2)!"); }