1
0
mirror of https://github.com/p2r3/bareiron.git synced 2025-10-01 23:25:09 +02:00

fix network overhead in worldgen

This commit is contained in:
p2r3
2025-08-14 06:49:48 +03:00
parent 1d76a0d96e
commit 106e3e9ba2
3 changed files with 24 additions and 9 deletions

View File

@@ -308,15 +308,8 @@ int sc_chunkDataAndUpdateLight (int client_fd, int _x, int _z) {
writeByte(client_fd, 8); // bits per entry
writeVarInt(client_fd, 256);
for (int j = 0; j < 256; j ++) writeVarInt(client_fd, block_palette[j]);
for (int j = 0; j < 4096; j += 8) {
for (int k = j + 7; k >= j; k --) {
writeByte(client_fd, getBlockAt(
k % 16 + x,
k / 256 + y,
k / 16 % 16 + z
));
}
}
buildChunkSection(x, y, z);
send(client_fd, chunk_section, 4096, 0);
// biome data
writeByte(client_fd, 0); // bits per entry
writeByte(client_fd, W_plains); // palette

View File

@@ -141,3 +141,22 @@ skip_tree:
return B_air;
}
uint8_t chunk_section[4096];
void buildChunkSection (int cx, int cy, int cz) {
for (int j = 0; j < 4096; j += 8) {
int y = j / 256 + cy;
int z = j / 16 % 16 + cz;
for (int offset = 7; offset >= 0; offset--) {
int k = j + offset;
int x = k % 16 + cx;
chunk_section[j + 7 - offset] = getBlockAt(x, y, z);
}
}
}

View File

@@ -9,4 +9,7 @@ uint32_t getChunkHash (short x, short z);
int getHeightAt (int rx, int rz, int _x, int _z, uint32_t chunk_hash);
uint8_t getBlockAt (int x, int y, int z);
extern uint8_t chunk_section[4096];
void buildChunkSection (int x, int y, int z);
#endif