Skip to content

Commit b8e0b39

Browse files
authored
Add mapping for CHUNKS_BIOMES in 1.21.5->1.21.4 (#976)
1 parent 6ec175d commit b8e0b39

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

common/src/main/java/com/viaversion/viabackwards/protocol/v1_21_5to1_21_4/rewriter/BlockItemPacketRewriter1_21_5.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
4343
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
4444
import com.viaversion.viaversion.api.minecraft.chunks.Chunk1_18;
45+
import com.viaversion.viaversion.api.minecraft.chunks.DataPalette;
4546
import com.viaversion.viaversion.api.minecraft.chunks.Heightmap;
4647
import com.viaversion.viaversion.api.minecraft.data.StructuredDataContainer;
4748
import com.viaversion.viaversion.api.minecraft.data.StructuredDataKey;
@@ -62,6 +63,8 @@
6263
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
6364
import com.viaversion.viaversion.api.type.Type;
6465
import com.viaversion.viaversion.api.type.Types;
66+
import com.viaversion.viaversion.api.type.types.chunk.ChunkBiomesType1_19_4;
67+
import com.viaversion.viaversion.api.type.types.chunk.ChunkBiomesType1_21_5;
6568
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2;
6669
import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_21_5;
6770
import com.viaversion.viaversion.api.type.types.version.Types1_21_4;
@@ -128,6 +131,19 @@ public void registerPackets() {
128131
wrapper.write(newChunkType, mappedChunk);
129132
});
130133

134+
protocol.registerClientbound(ClientboundPackets1_21_5.CHUNKS_BIOMES, wrapper -> {
135+
final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user());
136+
final int globalPaletteBiomeBits = ceilLog2(tracker.biomesSent());
137+
final Type<DataPalette[]> biomesType = new ChunkBiomesType1_21_5(tracker.currentWorldSectionHeight(), globalPaletteBiomeBits);
138+
final Type<DataPalette[]> newBiomesType = new ChunkBiomesType1_19_4(tracker.currentWorldSectionHeight(), globalPaletteBiomeBits);
139+
140+
final int size = wrapper.passthrough(Types.VAR_INT);
141+
for (int i = 0; i < size; i++) {
142+
wrapper.passthrough(Types.CHUNK_POSITION);
143+
wrapper.passthroughAndMap(biomesType, newBiomesType);
144+
}
145+
});
146+
131147
protocol.registerClientbound(ClientboundPackets1_21_5.SET_CURSOR_ITEM, this::passthroughClientboundItem);
132148
registerSetPlayerInventory(ClientboundPackets1_21_5.SET_PLAYER_INVENTORY);
133149
registerCooldown1_21_2(ClientboundPackets1_21_5.COOLDOWN);

0 commit comments

Comments
 (0)