From 38775d0f26788e4e4b28b8ce418166ca326c4f76 Mon Sep 17 00:00:00 2001 From: Lord_Cambion Date: Tue, 7 Apr 2026 20:45:44 +0200 Subject: [PATCH] fix: world crash with particular seeds --- Minecraft.World/BiomeInitLayer.cpp | 8 ++++---- Minecraft.World/RareBiomeLayer.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Minecraft.World/BiomeInitLayer.cpp b/Minecraft.World/BiomeInitLayer.cpp index f813f890..ed4cdca7 100644 --- a/Minecraft.World/BiomeInitLayer.cpp +++ b/Minecraft.World/BiomeInitLayer.cpp @@ -119,9 +119,9 @@ intArray BiomeInitLayer::getArea(int xo, int yo, int w, int h) // RareBiomeLayer sets k = plains->id + 128 when it picks a rare slot. - // plains->id = 1, so a rare plains = 129. We extract the high bit flag. - int rareBit = (k & 0xFF00) >> 8; // Java: (k & 3840) >> 8 - k = k & ~0xFF00; + // plains->id = 1, so a rare plains = 129. We extract the high bits flag. + int rareBit = (k & 3840) >> 8; // Java: (k & 0xF00) >> 8 + k = k & ~3840; if (k == 0 || k == Biome::ocean->id || k == Biome::deepOcean->id || @@ -160,7 +160,7 @@ intArray BiomeInitLayer::getArea(int xo, int yo, int w, int h) result[x + y * w] = icyBiomes[nextRandom(icyBiomes.length)]->id; } // Rare variant from RareBiomeLayer - else if (k == Biome::plains->id + 256) + else if (k == Biome::plains->id + 128) { result[x + y * w] = Biome::sunflowersPlains->id; } diff --git a/Minecraft.World/RareBiomeLayer.cpp b/Minecraft.World/RareBiomeLayer.cpp index 1872601c..f7499d5b 100644 --- a/Minecraft.World/RareBiomeLayer.cpp +++ b/Minecraft.World/RareBiomeLayer.cpp @@ -24,7 +24,7 @@ intArray RareBiomeLayer::getArea(int xo, int yo, int w, int h) { if (k == Biome::plains->id) { - aint1[j + i * w] = Biome::plains->id + 256; + aint1[j + i * w] = Biome::plains->id + 128; } else {