From 21c8f2815a7f84dadf6b813bd8bf2116d950e695 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sat, 6 Jan 2024 16:35:33 +1100 Subject: [PATCH] Decode ComponentStyle over network as appropriate --- .../md_5/bungee/protocol/DefinedPacket.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/DefinedPacket.java b/protocol/src/main/java/net/md_5/bungee/protocol/DefinedPacket.java index 994a5320..6cd9e6a4 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/DefinedPacket.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/DefinedPacket.java @@ -19,6 +19,7 @@ import java.util.UUID; import java.util.function.BiConsumer; import lombok.RequiredArgsConstructor; import net.md_5.bungee.api.chat.BaseComponent; +import net.md_5.bungee.api.chat.ComponentStyle; import net.md_5.bungee.chat.ComponentSerializer; import se.llbit.nbt.ErrorTag; import se.llbit.nbt.NamedTag; @@ -118,6 +119,14 @@ public abstract class DefinedPacket } } + public static ComponentStyle readComponentStyle(ByteBuf buf, int protocolVersion) + { + SpecificTag nbt = (SpecificTag) readTag( buf, protocolVersion ); + JsonElement json = TagUtil.toJson( nbt ); + + return ComponentSerializer.deserializeStyle( json ); + } + public static void writeEitherBaseComponent(Either message, ByteBuf buf, int protocolVersion) { if ( message.isLeft() ) @@ -145,6 +154,14 @@ public abstract class DefinedPacket } } + public static void writeComponentStyle(ComponentStyle style, ByteBuf buf, int protocolVersion) + { + JsonElement json = ComponentSerializer.toJson( style ); + SpecificTag nbt = TagUtil.fromJson( json ); + + writeTag( nbt, buf, protocolVersion ); + } + public static void writeArray(byte[] b, ByteBuf buf) { if ( b.length > Short.MAX_VALUE ) @@ -378,7 +395,7 @@ public abstract class DefinedPacket case BLANK: break; case STYLED: - writeBaseComponent( (BaseComponent) format.getValue(), buf, protocolVersion ); // TODO: style + writeComponentStyle( (ComponentStyle) format.getValue(), buf, protocolVersion ); break; case FIXED: writeBaseComponent( (BaseComponent) format.getValue(), buf, protocolVersion ); @@ -394,7 +411,7 @@ public abstract class DefinedPacket case 0: return new NumberFormat( NumberFormat.Type.BLANK, null ); case 1: - return new NumberFormat( NumberFormat.Type.STYLED, readBaseComponent( buf, protocolVersion ) ); // TODO: style + return new NumberFormat( NumberFormat.Type.STYLED, readComponentStyle( buf, protocolVersion ) ); case 2: return new NumberFormat( NumberFormat.Type.FIXED, readBaseComponent( buf, protocolVersion ) ); default: