Use adventure serializer when serializing an adventure component in a codec (#8967)

This commit is contained in:
Jake Potrebic 2023-03-14 13:27:18 -07:00 committed by GitHub
parent 9dccea73fb
commit bacf389fc3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 57 additions and 2 deletions

View file

@ -8,10 +8,10 @@ Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
diff --git a/src/main/java/io/papermc/paper/adventure/AdventureComponent.java b/src/main/java/io/papermc/paper/adventure/AdventureComponent.java
new file mode 100644
index 0000000000000000000000000000000000000000..07cd02c6f9df00844b808218be2afd793c24b69a
index 0000000000000000000000000000000000000000..3246049fd557951d971ef40112a411c12aec205c
--- /dev/null
+++ b/src/main/java/io/papermc/paper/adventure/AdventureComponent.java
@@ -0,0 +1,86 @@
@@ -0,0 +1,90 @@
+package io.papermc.paper.adventure;
+
+import com.google.gson.JsonElement;
@ -91,6 +91,10 @@ index 0000000000000000000000000000000000000000..07cd02c6f9df00844b808218be2afd79
+ return this.deepConverted().getVisualOrderText();
+ }
+
+ public Component adventure$component() {
+ return this.adventure;
+ }
+
+ public static class Serializer implements JsonSerializer<AdventureComponent> {
+ @Override
+ public JsonElement serialize(final AdventureComponent src, final Type type, final JsonSerializationContext context) {
@ -2565,6 +2569,22 @@ index 6529064505dc3de875be1764f88897736b85975d..d19d1f1595a226ce0472be5e2efafbc0
return message.hasSignature() && !message.hasExpiredServer(Instant.now());
}
diff --git a/src/main/java/net/minecraft/util/ExtraCodecs.java b/src/main/java/net/minecraft/util/ExtraCodecs.java
index 128353b6cad685689403bd1757cc9cc7cc1091d1..b08a2a6d0f19322ced405ab51d98124f9cb2887c 100644
--- a/src/main/java/net/minecraft/util/ExtraCodecs.java
+++ b/src/main/java/net/minecraft/util/ExtraCodecs.java
@@ -68,6 +68,11 @@ public class ExtraCodecs {
}
}, (text) -> {
try {
+ // Paper start
+ if (text instanceof io.papermc.paper.adventure.AdventureComponent adventureComponent) {
+ return DataResult.success(net.kyori.adventure.text.serializer.gson.GsonComponentSerializer.gson().serializeToTree(adventureComponent.adventure$component()));
+ }
+ // Paper end
return DataResult.success(Component.Serializer.toJsonTree(text));
} catch (IllegalArgumentException var2) {
return DataResult.error(var2::getMessage);
diff --git a/src/main/java/net/minecraft/world/BossEvent.java b/src/main/java/net/minecraft/world/BossEvent.java
index 4c62df5a3781ec9df4a5c5f1b528649e6e8a62d1..affd1b8c7589ba59330dc0b6fc803cce4ee57397 100644
--- a/src/main/java/net/minecraft/world/BossEvent.java