Skip to content

Commit 9b65b59

Browse files
Push block entity custom name through component conversion in 1.20.3->.2 (#1035)
1 parent d324803 commit 9b65b59

File tree

1 file changed

+33
-2
lines changed

1 file changed

+33
-2
lines changed

common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_3to1_20_2/rewriter/BlockItemPacketRewriter1_20_3.java

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,30 @@
1717
*/
1818
package com.viaversion.viabackwards.protocol.v1_20_3to1_20_2.rewriter;
1919

20+
import com.viaversion.nbt.tag.CompoundTag;
21+
import com.viaversion.nbt.tag.StringTag;
2022
import com.viaversion.viabackwards.api.rewriters.BackwardsItemRewriter;
2123
import com.viaversion.viabackwards.protocol.v1_20_3to1_20_2.Protocol1_20_3To1_20_2;
24+
import com.viaversion.viaversion.api.Via;
25+
import com.viaversion.viaversion.api.connection.UserConnection;
2226
import com.viaversion.viaversion.api.data.ParticleMappings;
27+
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
2328
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
2429
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
2530
import com.viaversion.viaversion.api.type.Types;
2631
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2;
2732
import com.viaversion.viaversion.api.type.types.version.Types1_20_3;
33+
import com.viaversion.viaversion.libs.gson.JsonElement;
2834
import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ClientboundPacket1_20_3;
2935
import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ClientboundPackets1_20_3;
3036
import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.rewriter.RecipeRewriter1_20_3;
3137
import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundPacket1_20_2;
3238
import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundPackets1_20_2;
3339
import com.viaversion.viaversion.rewriter.BlockRewriter;
40+
import com.viaversion.viaversion.util.ComponentUtil;
41+
import com.viaversion.viaversion.util.SerializerVersion;
42+
import com.viaversion.viaversion.util.StringUtil;
43+
import java.util.logging.Level;
3444

3545
public final class BlockItemPacketRewriter1_20_3 extends BackwardsItemRewriter<ClientboundPacket1_20_3, ServerboundPacket1_20_2, Protocol1_20_3To1_20_2> {
3646

@@ -45,8 +55,8 @@ public void registerPackets() {
4555
blockRewriter.registerBlockUpdate(ClientboundPackets1_20_3.BLOCK_UPDATE);
4656
blockRewriter.registerSectionBlocksUpdate1_20(ClientboundPackets1_20_3.SECTION_BLOCKS_UPDATE);
4757
blockRewriter.registerLevelEvent(ClientboundPackets1_20_3.LEVEL_EVENT, 1010, 2001);
48-
blockRewriter.registerLevelChunk1_19(ClientboundPackets1_20_3.LEVEL_CHUNK_WITH_LIGHT, ChunkType1_20_2::new);
49-
blockRewriter.registerBlockEntityData(ClientboundPackets1_20_3.BLOCK_ENTITY_DATA);
58+
blockRewriter.registerLevelChunk1_19(ClientboundPackets1_20_3.LEVEL_CHUNK_WITH_LIGHT, ChunkType1_20_2::new, this::updateBlockEntity);
59+
blockRewriter.registerBlockEntityData(ClientboundPackets1_20_3.BLOCK_ENTITY_DATA, this::updateBlockEntity);
5060

5161
registerCooldown(ClientboundPackets1_20_3.COOLDOWN);
5262
registerSetContent1_17_1(ClientboundPackets1_20_3.CONTAINER_SET_CONTENT);
@@ -156,4 +166,25 @@ public void handleCraftingShaped(final PacketWrapper wrapper) {
156166
wrapper.read(Types.OPTIONAL_FLOAT); // Sound range
157167
});
158168
}
169+
170+
private void updateBlockEntity(final UserConnection connection, final BlockEntity blockEntity) {
171+
final CompoundTag tag = blockEntity.tag();
172+
if (tag == null) {
173+
return;
174+
}
175+
176+
final StringTag customName = tag.getStringTag("CustomName");
177+
if (customName == null) {
178+
return;
179+
}
180+
181+
try {
182+
final JsonElement updatedComponent = ComponentUtil.convertJson(customName.getValue(), SerializerVersion.V1_20_3, SerializerVersion.V1_19_4);
183+
customName.setValue(updatedComponent.toString());
184+
} catch (final Exception e) {
185+
if (!Via.getConfig().isSuppressTextComponentConversionWarnings()) {
186+
protocol.getLogger().log(Level.SEVERE, "Error during custom name conversion: " + StringUtil.forLogging(customName.getValue()), e);
187+
}
188+
}
189+
}
159190
}

0 commit comments

Comments
 (0)