|
42 | 42 | import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
|
43 | 43 | import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
|
44 | 44 | import com.viaversion.viaversion.api.minecraft.chunks.Chunk1_18;
|
| 45 | +import com.viaversion.viaversion.api.minecraft.chunks.DataPalette; |
45 | 46 | import com.viaversion.viaversion.api.minecraft.chunks.Heightmap;
|
46 | 47 | import com.viaversion.viaversion.api.minecraft.data.StructuredDataContainer;
|
47 | 48 | import com.viaversion.viaversion.api.minecraft.data.StructuredDataKey;
|
|
62 | 63 | import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
63 | 64 | import com.viaversion.viaversion.api.type.Type;
|
64 | 65 | 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; |
65 | 68 | import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2;
|
66 | 69 | import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_21_5;
|
67 | 70 | import com.viaversion.viaversion.api.type.types.version.Types1_21_4;
|
@@ -128,6 +131,19 @@ public void registerPackets() {
|
128 | 131 | wrapper.write(newChunkType, mappedChunk);
|
129 | 132 | });
|
130 | 133 |
|
| 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 | + |
131 | 147 | protocol.registerClientbound(ClientboundPackets1_21_5.SET_CURSOR_ITEM, this::passthroughClientboundItem);
|
132 | 148 | registerSetPlayerInventory(ClientboundPackets1_21_5.SET_PLAYER_INVENTORY);
|
133 | 149 | registerCooldown1_21_2(ClientboundPackets1_21_5.COOLDOWN);
|
|
0 commit comments