diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBlockEntityDataTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBlockEntityDataTranslator.java index 145cea805..a26bba618 100644 --- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBlockEntityDataTranslator.java +++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBlockEntityDataTranslator.java @@ -34,6 +34,7 @@ import org.geysermc.geyser.network.GameProtocol; import org.geysermc.geyser.session.GeyserSession; import org.geysermc.geyser.translator.protocol.PacketTranslator; import org.geysermc.geyser.translator.protocol.Translator; +import org.geysermc.geyser.translator.text.MessageTranslator; import org.geysermc.geyser.util.SignUtils; @Translator(packet = BlockEntityDataPacket.class) @@ -52,6 +53,7 @@ public class BedrockBlockEntityDataTranslator extends PacketTranslator<BlockEnti } else { text = tag.getString("Text"); } + text = MessageTranslator.convertToPlainText(text); // Note: as of 1.18.30, only one packet is sent from Bedrock when the sign is finished. // Previous versions did not have this behavior. StringBuilder newMessage = new StringBuilder(); diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBookEditTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBookEditTranslator.java index 597f45b0e..1d5c5828c 100644 --- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBookEditTranslator.java +++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBookEditTranslator.java @@ -36,6 +36,7 @@ import org.geysermc.geyser.inventory.GeyserItemStack; import org.geysermc.geyser.session.GeyserSession; import org.geysermc.geyser.translator.protocol.PacketTranslator; import org.geysermc.geyser.translator.protocol.Translator; +import org.geysermc.geyser.translator.text.MessageTranslator; import java.nio.charset.StandardCharsets; import java.util.ArrayList; @@ -68,19 +69,19 @@ public class BedrockBookEditTranslator extends PacketTranslator<BookEditPacket> for (int i = pages.size(); i < page; i++) { pages.add(i, new StringTag("", "")); } - pages.add(page, new StringTag("", packet.getText())); + pages.add(page, new StringTag("", MessageTranslator.convertToPlainText(packet.getText()))); break; } // Called whenever a page is modified case REPLACE_PAGE: { if (page < pages.size()) { - pages.set(page, new StringTag("", packet.getText())); + pages.set(page, new StringTag("", MessageTranslator.convertToPlainText(packet.getText()))); } else { // Add empty pages in between for (int i = pages.size(); i < page; i++) { pages.add(i, new StringTag("", "")); } - pages.add(page, new StringTag("", packet.getText())); + pages.add(page, new StringTag("", MessageTranslator.convertToPlainText(packet.getText()))); } break; } @@ -98,8 +99,8 @@ public class BedrockBookEditTranslator extends PacketTranslator<BookEditPacket> break; } case SIGN_BOOK: { - tag.put(new StringTag("author", packet.getAuthor())); - tag.put(new StringTag("title", packet.getTitle())); + tag.put(new StringTag("author", MessageTranslator.convertToPlainText(packet.getAuthor()))); + tag.put(new StringTag("title", MessageTranslator.convertToPlainText(packet.getTitle()))); break; } default: @@ -127,12 +128,11 @@ public class BedrockBookEditTranslator extends PacketTranslator<BookEditPacket> String title; if (packet.getAction() == BookEditPacket.Action.SIGN_BOOK) { // Add title to packet so the server knows we're signing - if (packet.getTitle().getBytes(StandardCharsets.UTF_8).length > MAXIMUM_TITLE_LENGTH) { + title = MessageTranslator.convertToPlainText(packet.getTitle()); + if (title.getBytes(StandardCharsets.UTF_8).length > MAXIMUM_TITLE_LENGTH) { session.getGeyser().getLogger().warning("Book title larger than server allows!"); return; } - - title = packet.getTitle(); } else { title = null; }