mirror of
https://github.com/Minestom/Minestom.git
synced 2024-09-30 23:47:37 +02:00
Make LightData record
Signed-off-by: TheMode <themode@outlook.fr>
This commit is contained in:
parent
9e24aaab77
commit
9d26fa8137
@ -8,36 +8,15 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import java.util.BitSet;
|
import java.util.BitSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public final class LightData implements Writeable {
|
public record LightData(boolean trustEdges,
|
||||||
private final boolean trustEdges;
|
@NotNull BitSet skyMask, @NotNull BitSet blockMask,
|
||||||
private final BitSet skyMask;
|
@NotNull BitSet emptySkyMask, @NotNull BitSet emptyBlockMask,
|
||||||
private final BitSet blockMask;
|
@NotNull List<byte[]> skyLight, @NotNull List<byte[]> blockLight) implements Writeable {
|
||||||
private final BitSet emptySkyMask;
|
|
||||||
private final BitSet emptyBlockMask;
|
|
||||||
private final List<byte[]> skyLight;
|
|
||||||
private final List<byte[]> blockLight;
|
|
||||||
|
|
||||||
public LightData(boolean trustEdges,
|
|
||||||
BitSet skyMask, BitSet blockMask,
|
|
||||||
BitSet emptySkyMask, BitSet emptyBlockMask,
|
|
||||||
List<byte[]> skyLight, List<byte[]> blockLight) {
|
|
||||||
this.trustEdges = trustEdges;
|
|
||||||
this.skyMask = skyMask;
|
|
||||||
this.blockMask = blockMask;
|
|
||||||
this.emptySkyMask = emptySkyMask;
|
|
||||||
this.emptyBlockMask = emptyBlockMask;
|
|
||||||
this.skyLight = skyLight;
|
|
||||||
this.blockLight = blockLight;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LightData(BinaryReader reader) {
|
public LightData(BinaryReader reader) {
|
||||||
this.trustEdges = reader.readBoolean();
|
this(reader.readBoolean(),
|
||||||
this.skyMask = BitSet.valueOf(reader.readLongArray());
|
BitSet.valueOf(reader.readLongArray()), BitSet.valueOf(reader.readLongArray()),
|
||||||
this.blockMask = BitSet.valueOf(reader.readLongArray());
|
BitSet.valueOf(reader.readLongArray()), BitSet.valueOf(reader.readLongArray()),
|
||||||
this.emptySkyMask = BitSet.valueOf(reader.readLongArray());
|
reader.readVarIntList(r -> r.readBytes(r.readVarInt())), reader.readVarIntList(r -> r.readBytes(r.readVarInt())));
|
||||||
this.emptyBlockMask = BitSet.valueOf(reader.readLongArray());
|
|
||||||
this.skyLight = reader.readVarIntList(r -> r.readBytes(r.readVarInt()));
|
|
||||||
this.blockLight = reader.readVarIntList(r -> r.readBytes(r.readVarInt()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -50,16 +29,7 @@ public final class LightData implements Writeable {
|
|||||||
writer.writeLongArray(emptySkyMask.toLongArray());
|
writer.writeLongArray(emptySkyMask.toLongArray());
|
||||||
writer.writeLongArray(emptyBlockMask.toLongArray());
|
writer.writeLongArray(emptyBlockMask.toLongArray());
|
||||||
|
|
||||||
writer.writeVarInt(skyLight.size());
|
writer.writeVarIntList(skyLight, BinaryWriter::writeByteArray);
|
||||||
for (byte[] bytes : skyLight) {
|
writer.writeVarIntList(blockLight, BinaryWriter::writeByteArray);
|
||||||
writer.writeVarInt(2048); // Always 2048 length
|
|
||||||
writer.writeBytes(bytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
writer.writeVarInt(blockLight.size());
|
|
||||||
for (byte[] bytes : blockLight) {
|
|
||||||
writer.writeVarInt(2048); // Always 2048 length
|
|
||||||
writer.writeBytes(bytes);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -231,6 +231,15 @@ public class BinaryWriter extends OutputStream {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void writeByteArray(byte[] array) {
|
||||||
|
if (array == null) {
|
||||||
|
writeVarInt(0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
writeVarInt(array.length);
|
||||||
|
writeBytes(array);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Writes a byte array.
|
* Writes a byte array.
|
||||||
* <p>
|
* <p>
|
||||||
|
Loading…
Reference in New Issue
Block a user