|
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