Skip to content

Commit d273b06

Browse files
authored
Fix text components in signs not being rewritten in 1.21.9→1.21.7 (#1147)
1 parent 4f561ba commit d273b06

File tree

1 file changed

+32
-2
lines changed

1 file changed

+32
-2
lines changed

common/src/main/java/com/viaversion/viabackwards/protocol/v1_21_9to1_21_7/rewriter/BlockItemPacketRewriter1_21_9.java

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,15 @@
1818
package com.viaversion.viabackwards.protocol.v1_21_9to1_21_7.rewriter;
1919

2020
import com.viaversion.nbt.tag.CompoundTag;
21+
import com.viaversion.nbt.tag.ListTag;
2122
import com.viaversion.viabackwards.api.rewriters.BackwardsStructuredItemRewriter;
2223
import com.viaversion.viabackwards.protocol.v1_21_9to1_21_7.Protocol1_21_9To1_21_7;
2324
import com.viaversion.viabackwards.protocol.v1_21_9to1_21_7.storage.DimensionScaleStorage;
2425
import com.viaversion.viaversion.api.connection.UserConnection;
2526
import com.viaversion.viaversion.api.data.entity.EntityTracker;
2627
import com.viaversion.viaversion.api.minecraft.ResolvableProfile;
28+
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
29+
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
2730
import com.viaversion.viaversion.api.minecraft.data.StructuredDataContainer;
2831
import com.viaversion.viaversion.api.minecraft.data.StructuredDataKey;
2932
import com.viaversion.viaversion.api.minecraft.item.Item;
@@ -42,6 +45,8 @@
4245
import static com.viaversion.viaversion.protocols.v1_21_7to1_21_9.rewriter.BlockItemPacketRewriter1_21_9.upgradeData;
4346

4447
public final class BlockItemPacketRewriter1_21_9 extends BackwardsStructuredItemRewriter<ClientboundPacket1_21_9, ServerboundPacket1_21_6, Protocol1_21_9To1_21_7> {
48+
private static final int SIGN_BOCK_ENTITY_ID = 7;
49+
private static final int HANGING_SIGN_BOCK_ENTITY_ID = 8;
4550

4651
public BlockItemPacketRewriter1_21_9(final Protocol1_21_9To1_21_7 protocol) {
4752
super(protocol);
@@ -54,8 +59,8 @@ public void registerPackets() {
5459
blockRewriter.registerBlockUpdate(ClientboundPackets1_21_9.BLOCK_UPDATE);
5560
blockRewriter.registerSectionBlocksUpdate1_20(ClientboundPackets1_21_9.SECTION_BLOCKS_UPDATE);
5661
blockRewriter.registerLevelEvent1_21(ClientboundPackets1_21_9.LEVEL_EVENT, 2001);
57-
blockRewriter.registerLevelChunk1_19(ClientboundPackets1_21_9.LEVEL_CHUNK_WITH_LIGHT, ChunkType1_21_5::new);
58-
blockRewriter.registerBlockEntityData(ClientboundPackets1_21_9.BLOCK_ENTITY_DATA);
62+
blockRewriter.registerLevelChunk1_19(ClientboundPackets1_21_9.LEVEL_CHUNK_WITH_LIGHT, ChunkType1_21_5::new, this::handleBlockEntity);
63+
blockRewriter.registerBlockEntityData(ClientboundPackets1_21_9.BLOCK_ENTITY_DATA, this::handleBlockEntity);
5964

6065
registerSetCursorItem(ClientboundPackets1_21_9.SET_CURSOR_ITEM);
6166
registerSetPlayerInventory(ClientboundPackets1_21_9.SET_PLAYER_INVENTORY);
@@ -131,6 +136,31 @@ protected void restoreBackupData(final Item item, final StructuredDataContainer
131136
}
132137
}
133138

139+
private void handleBlockEntity(final UserConnection connection, final BlockEntity blockEntity) {
140+
final CompoundTag tag = blockEntity.tag();
141+
if (tag == null) {
142+
return;
143+
}
144+
145+
if (blockEntity.typeId() == SIGN_BOCK_ENTITY_ID || blockEntity.typeId() == HANGING_SIGN_BOCK_ENTITY_ID) {
146+
updateSignMessages(connection, tag.getCompoundTag("front_text"));
147+
updateSignMessages(connection, tag.getCompoundTag("back_text"));
148+
}
149+
}
150+
151+
private void updateSignMessages(final UserConnection connection, final CompoundTag tag) {
152+
if (tag == null) {
153+
return;
154+
}
155+
156+
final ListTag<?> messages = tag.getListTag("messages");
157+
protocol.getComponentRewriter().processTag(connection, messages);
158+
final ListTag<?> filteredMessages = tag.getListTag("filtered_messages");
159+
if (filteredMessages != null) {
160+
protocol.getComponentRewriter().processTag(connection, filteredMessages);
161+
}
162+
}
163+
134164
private void updateBorderCenter(final PacketWrapper wrapper) {
135165
double centerX = wrapper.read(Types.DOUBLE);
136166
double centerZ = wrapper.read(Types.DOUBLE);

0 commit comments

Comments
 (0)