commit d6138616a4e5ec2fef84f75e1322892c570881af from: p2r3 date: Sat Aug 30 22:39:00 2025 UTC fix wrong relative coordinates when fetching terrain commit - ad1baee93728d7b078cd1c7488736516ff5fda35 commit + d6138616a4e5ec2fef84f75e1322892c570881af blob - 4c6bdfe3a4cfbea0b4ca1c23667a1afc02cafc77 blob + c6d2e122e029b88e816238347e668e451dcbbb7c --- src/worldgen.c +++ src/worldgen.c @@ -415,7 +415,7 @@ uint8_t buildChunkSection (int cx, int cy, int cz) { for (int j = 0; j < 16; j ++) { anchor_index = (j / CHUNK_SIZE) + (i / CHUNK_SIZE) * (16 / CHUNK_SIZE + 1); ChunkAnchor *anchor_ptr = chunk_anchors + anchor_index; - chunk_section_height[j][i] = getHeightAtFromAnchors(j % 8, i % 8, anchor_ptr); + chunk_section_height[j][i] = getHeightAtFromAnchors(j % CHUNK_SIZE, i % CHUNK_SIZE, anchor_ptr); } } @@ -425,6 +425,7 @@ uint8_t buildChunkSection (int cx, int cy, int cz) { // since all of the operations are on multiples of 8 int y = j / 256 + cy; int rz = j / 16 % 16; + int rz_mod = rz % CHUNK_SIZE; feature_index = (j % 16) / CHUNK_SIZE + (j / 16 % 16) / CHUNK_SIZE * (16 / CHUNK_SIZE); anchor_index = (j % 16) / CHUNK_SIZE + (j / 16 % 16) / CHUNK_SIZE * (16 / CHUNK_SIZE + 1); // The client expects "big-endian longs", which in our @@ -433,8 +434,14 @@ uint8_t buildChunkSection (int cx, int cy, int cz) { for (int offset = 7; offset >= 0; offset--) { int k = j + offset; int rx = k % 16; - uint8_t height = chunk_section_height[rx][rz]; - chunk_section[j + 7 - offset] = getTerrainAtFromCache(rx + cx, y, rz + cz, rx, rz, chunk_anchors[anchor_index], chunk_features[feature_index], height); + // Combine all of the cached data to retrieve the block + chunk_section[j + 7 - offset] = getTerrainAtFromCache( + rx + cx, y, rz + cz, + rx % CHUNK_SIZE, rz_mod, + chunk_anchors[anchor_index], + chunk_features[feature_index], + chunk_section_height[rx][rz] + ); } }