From edebe64cf801ed08e16f7fb5c787f827d519f5ed Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Fri, 3 Dec 2021 13:33:52 +0100 Subject: [PATCH] Fix handling of invalid biomes in 1.17->1.18 --- .../protocol1_18to1_17_1/packets/WorldPackets.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/packets/WorldPackets.java index 3a9c2f67b..c56eea035 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/packets/WorldPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/packets/WorldPackets.java @@ -168,11 +168,13 @@ public final class WorldPackets { final int offset = i * ChunkSection.BIOME_SIZE; for (int biomeIndex = 0, biomeArrayIndex = offset; biomeIndex < ChunkSection.BIOME_SIZE; biomeIndex++, biomeArrayIndex++) { - biomePalette.setIdAt(biomeIndex, biomeData[biomeArrayIndex]); + // Also catch invalid biomes with id -1 + final int biome = biomeData[biomeArrayIndex]; + biomePalette.setIdAt(biomeIndex, biome != -1 ? biome : 0); } } - final Chunk chunk = new Chunk1_18(oldChunk.getX(), oldChunk.getZ(), oldChunk.getSections(), oldChunk.getHeightMap(), blockEntities); + final Chunk chunk = new Chunk1_18(oldChunk.getX(), oldChunk.getZ(), sections, oldChunk.getHeightMap(), blockEntities); wrapper.write(new Chunk1_18Type(tracker.currentWorldSectionHeight(), MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()), MathUtil.ceilLog2(tracker.biomesSent())), chunk);