Mirror von
https://github.com/ViaVersion/ViaVersion.git
synchronisiert 2024-11-03 14:50:30 +01:00
Convert biome data to 1.15 format
Dieser Commit ist enthalten in:
Ursprung
ff7cb4bbbe
Commit
decb20d2d1
@ -17,6 +17,8 @@ public interface Chunk {
|
||||
|
||||
int[] getBiomeData();
|
||||
|
||||
void setBiomeData(int[] biomeData);
|
||||
|
||||
CompoundTag getHeightMap();
|
||||
|
||||
void setHeightMap(CompoundTag heightMap);
|
||||
|
@ -83,6 +83,26 @@ public class WorldPackets {
|
||||
Chunk chunk = wrapper.read(new Chunk1_14Type(clientWorld));
|
||||
wrapper.write(new Chunk1_15Type(clientWorld), chunk);
|
||||
|
||||
if (chunk.isGroundUp()) {
|
||||
int[] biomeData = chunk.getBiomeData();
|
||||
int[] newBiomeData = new int[1024];
|
||||
// Now in 4x4x4 areas (x, then z, then y)
|
||||
// Set the x/z data
|
||||
int i = 0;
|
||||
for (int z = 1; z <= 16; z += 4) {
|
||||
for (int x = 1; x <= 16; x += 4) {
|
||||
int biome = biomeData[(x * z) - 1];
|
||||
// Extend it on the y axis
|
||||
for (int y = 0; y < 1024; y += 16) {
|
||||
newBiomeData[i + y] = biome;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
chunk.setBiomeData(newBiomeData);
|
||||
}
|
||||
|
||||
for (int s = 0; s < 16; s++) {
|
||||
ChunkSection section = chunk.getSections()[s];
|
||||
if (section == null) continue;
|
||||
|
@ -31,6 +31,14 @@ public class Chunk1_15Type extends PartialType<Chunk, ClientWorld> {
|
||||
boolean groundUp = input.readBoolean();
|
||||
int primaryBitmask = Type.VAR_INT.read(input);
|
||||
CompoundTag heightMap = Type.NBT.read(input);
|
||||
|
||||
int[] biomeData = groundUp ? new int[1024] : null;
|
||||
if (groundUp) {
|
||||
for (int i = 0; i < 1024; i++) {
|
||||
biomeData[i] = input.readInt();
|
||||
}
|
||||
}
|
||||
|
||||
Type.VAR_INT.read(input);
|
||||
|
||||
BitSet usedSections = new BitSet(16);
|
||||
@ -42,15 +50,6 @@ public class Chunk1_15Type extends PartialType<Chunk, ClientWorld> {
|
||||
}
|
||||
}
|
||||
|
||||
int[] biomeData = groundUp ? new int[256] : null;
|
||||
if (groundUp) {
|
||||
//TODO Why 1024 ints?
|
||||
for (int i = 0; i < 1024; i++) {
|
||||
//biomeData[i] = input.readInt();
|
||||
input.readInt();
|
||||
}
|
||||
}
|
||||
|
||||
// Read sections
|
||||
for (int i = 0; i < 16; i++) {
|
||||
if (!usedSections.get(i)) continue; // Section not set
|
||||
@ -84,13 +83,9 @@ public class Chunk1_15Type extends PartialType<Chunk, ClientWorld> {
|
||||
|
||||
// Write biome data
|
||||
if (chunk.isBiomeData()) {
|
||||
//TODO Why 1024 ints?
|
||||
for (int i = 0; i < 1024; i++) {
|
||||
output.writeInt(0);
|
||||
for (int value : chunk.getBiomeData()) {
|
||||
output.writeInt(value);
|
||||
}
|
||||
/*for (int value : chunk.getBiomeData()) {
|
||||
output.writeInt(value & 0xFF); // This is a temporary workaround, we'll look into fixing this soon :)
|
||||
}*/
|
||||
}
|
||||
|
||||
ByteBuf buf = output.alloc().buffer();
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren