From 8d1dca1334f548b473135f6ae0c4a7d301d1fc58 Mon Sep 17 00:00:00 2001 From: BoomEaro <21033866+BoomEaro@users.noreply.github.com> Date: Thu, 9 Jun 2022 15:15:50 +0300 Subject: [PATCH] Fix chat packet --- .../limbo/connection/PacketSnapshots.java | 2 +- .../packets/play/PacketChatMessage.java | 17 +- src/main/resources/dimension/codec_1_19.snbt | 171 ++++++++++++++++++ 3 files changed, 183 insertions(+), 7 deletions(-) diff --git a/src/main/java/ru/nanit/limbo/connection/PacketSnapshots.java b/src/main/java/ru/nanit/limbo/connection/PacketSnapshots.java index 62e1937..1715f60 100644 --- a/src/main/java/ru/nanit/limbo/connection/PacketSnapshots.java +++ b/src/main/java/ru/nanit/limbo/connection/PacketSnapshots.java @@ -126,7 +126,7 @@ public final class PacketSnapshots { if (server.getConfig().isUseJoinMessage()) { PacketChatMessage joinMessage = new PacketChatMessage(); joinMessage.setJsonData(server.getConfig().getJoinMessage()); - joinMessage.setPosition(PacketChatMessage.Position.CHAT); + joinMessage.setPosition(PacketChatMessage.PositionLegacy.SYSTEM_MESSAGE); joinMessage.setSender(UUID.randomUUID()); PACKET_JOIN_MESSAGE = PacketSnapshot.of(joinMessage); } diff --git a/src/main/java/ru/nanit/limbo/protocol/packets/play/PacketChatMessage.java b/src/main/java/ru/nanit/limbo/protocol/packets/play/PacketChatMessage.java index ce1756e..8655e99 100644 --- a/src/main/java/ru/nanit/limbo/protocol/packets/play/PacketChatMessage.java +++ b/src/main/java/ru/nanit/limbo/protocol/packets/play/PacketChatMessage.java @@ -26,14 +26,14 @@ import java.util.UUID; public class PacketChatMessage implements PacketOut { private String jsonData; - private Position position; + private PositionLegacy position; private UUID sender; public void setJsonData(String jsonData) { this.jsonData = jsonData; } - public void setPosition(Position position) { + public void setPosition(PositionLegacy position) { this.position = position; } @@ -44,13 +44,18 @@ public class PacketChatMessage implements PacketOut { @Override public void encode(ByteMessage msg, Version version) { msg.writeString(jsonData); - msg.writeByte(position.index); + if (version.moreOrEqual(Version.V1_19)) { + msg.writeVarInt(position.index); + } + else { + msg.writeByte(position.index); + } - if (version.moreOrEqual(Version.V1_16)) + if (version.moreOrEqual(Version.V1_16) && version.less(Version.V1_19)) msg.writeUuid(sender); } - public enum Position { + public enum PositionLegacy { CHAT(0), SYSTEM_MESSAGE(1), @@ -58,7 +63,7 @@ public class PacketChatMessage implements PacketOut { private final int index; - Position(int index) { + PositionLegacy(int index) { this.index = index; } diff --git a/src/main/resources/dimension/codec_1_19.snbt b/src/main/resources/dimension/codec_1_19.snbt index 30d01ce..9e05af7 100644 --- a/src/main/resources/dimension/codec_1_19.snbt +++ b/src/main/resources/dimension/codec_1_19.snbt @@ -1,4 +1,175 @@ { + "minecraft:chat_type": { + type: "minecraft:chat_type", + value: [ + { + name: "minecraft:chat", + id: 0, + element: { + chat: { + decoration: { + style: {}, + translation_key: "chat.type.text", + parameters: [ + "sender", + "content", + ], + }, + }, + narration: { + priority: "chat", + decoration: { + style: {}, + translation_key: "chat.type.text.narrate", + parameters: [ + "sender", + "content", + ], + }, + }, + }, + }, + { + name: "minecraft:system", + id: 1, + element: { + chat: {}, + narration: { + priority: "system", + }, + }, + }, + { + name: "minecraft:game_info", + id: 2, + element: { + overlay: {}, + }, + }, + { + name: "minecraft:say_command", + id: 3, + element: { + chat: { + decoration: { + style: {}, + translation_key: "chat.type.announcement", + parameters: [ + "sender", + "content", + ], + }, + }, + narration: { + priority: "chat", + decoration: { + style: {}, + translation_key: "chat.type.text.narrate", + parameters: [ + "sender", + "content", + ], + }, + }, + }, + }, + { + name: "minecraft:msg_command", + id: 4, + element: { + chat: { + decoration: { + style: { + color: "gray", + italic: 1, + }, + translation_key: "commands.message.display.incoming", + parameters: [ + "sender", + "content", + ], + }, + }, + narration: { + priority: "chat", + decoration: { + style: {}, + translation_key: "chat.type.text.narrate", + parameters: [ + "sender", + "content", + ], + }, + }, + }, + }, + { + name: "minecraft:team_msg_command", + id: 5, + element: { + chat: { + decoration: { + style: {}, + translation_key: "chat.type.team.text", + parameters: [ + "team_name", + "sender", + "content", + ], + }, + }, + narration: { + priority: "chat", + decoration: { + style: {}, + translation_key: "chat.type.text.narrate", + parameters: [ + "sender", + "content", + ], + }, + }, + }, + }, + { + name: "minecraft:emote_command", + id: 6, + element: { + chat: { + decoration: { + style: {}, + translation_key: "chat.type.emote", + parameters: [ + "sender", + "content", + ], + }, + }, + narration: { + priority: "chat", + decoration: { + style: {}, + translation_key: "chat.type.emote", + parameters: [ + "sender", + "content", + ], + }, + }, + }, + }, + { + name: "minecraft:tellraw_command", + id: 7, + element: { + chat: {}, + narration: { + priority: "chat", + }, + }, + }, + ] + }, "minecraft:dimension_type": { type: "minecraft:dimension_type", value: [