Fix chunk loading
This commit is contained in:
parent
b474d35775
commit
f8a52dfc98
2 changed files with 13 additions and 2 deletions
|
@ -13,6 +13,15 @@ export class Reader {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public readUint8Array(bytes:number) {
|
||||||
|
const croppedBuffer = this.readBuffer(bytes);
|
||||||
|
const newArray = new Uint8Array(croppedBuffer.length);
|
||||||
|
for (let i = 0; i < croppedBuffer.length; i++) {
|
||||||
|
newArray[i] = croppedBuffer[i];
|
||||||
|
}
|
||||||
|
return newArray;
|
||||||
|
}
|
||||||
|
|
||||||
public readByte() {
|
public readByte() {
|
||||||
const value = this.buffer.readInt8(this.offset);
|
const value = this.buffer.readInt8(this.offset);
|
||||||
this.offset++;
|
this.offset++;
|
||||||
|
|
|
@ -96,7 +96,9 @@ export class WorldSaveManager {
|
||||||
chunkFileWriter.writeUByte(128); // Chunk Y
|
chunkFileWriter.writeUByte(128); // Chunk Y
|
||||||
chunkFileWriter.writeUByte(16); // Chunk Z
|
chunkFileWriter.writeUByte(16); // Chunk Z
|
||||||
|
|
||||||
const chunkData = new Writer().writeBuffer(Buffer.from(chunk.getData())).writeBuffer(chunk.getMetadataBuffer()).toBuffer();
|
const chunkData = new Writer()
|
||||||
|
.writeBuffer(Buffer.from(chunk.getData()))
|
||||||
|
.writeBuffer(chunk.getMetadataBuffer()).toBuffer();
|
||||||
|
|
||||||
if (saveType === SaveCompressionType.NONE) {
|
if (saveType === SaveCompressionType.NONE) {
|
||||||
chunkFileWriter.writeInt(chunkData.length); // Data length
|
chunkFileWriter.writeInt(chunkData.length); // Data length
|
||||||
|
@ -159,7 +161,7 @@ export class WorldSaveManager {
|
||||||
const contentLength = chunkFileReader.readInt();
|
const contentLength = chunkFileReader.readInt();
|
||||||
if (saveCompressionType === SaveCompressionType.NONE) {
|
if (saveCompressionType === SaveCompressionType.NONE) {
|
||||||
const chunkData = new Reader(chunkFileReader.readBuffer(contentLength));
|
const chunkData = new Reader(chunkFileReader.readBuffer(contentLength));
|
||||||
const chunk = new Chunk(world, x, z, chunkData.readBuffer(totalByteSize).buffer, chunkData.readBuffer(totalByteSize / 2).buffer);
|
const chunk = new Chunk(world, x, z, chunkData.readUint8Array(totalByteSize), chunkData.readUint8Array(totalByteSize / 2));
|
||||||
resolve(chunk);
|
resolve(chunk);
|
||||||
} else if (saveCompressionType === SaveCompressionType.DEFLATE) {
|
} else if (saveCompressionType === SaveCompressionType.DEFLATE) {
|
||||||
inflate(chunkFileReader.readBuffer(contentLength), (err, data) => {
|
inflate(chunkFileReader.readBuffer(contentLength), (err, data) => {
|
||||||
|
|
Loading…
Reference in a new issue