2024-11-22 23:51:27 +00:00
|
|
|
import { IReader, IWriter } from "bufferstuff";
|
2024-11-17 08:26:35 +00:00
|
|
|
import Block from "../blocks/Block";
|
|
|
|
import TileEntityType from "../enums/TileEntityType";
|
|
|
|
import Vec3 from "../Vec3";
|
2024-11-22 23:51:27 +00:00
|
|
|
import TileEntityChest from "./TileEntityChest";
|
2024-11-17 08:26:35 +00:00
|
|
|
|
|
|
|
export default class TileEntity {
|
|
|
|
private readonly type: TileEntityType;
|
|
|
|
private readonly forBlockId: Block;
|
|
|
|
private readonly position: Vec3;
|
|
|
|
|
|
|
|
public constructor(type: TileEntityType, forBlockId: Block, position: Vec3) {
|
|
|
|
this.type = type;
|
|
|
|
this.forBlockId = forBlockId;
|
|
|
|
this.position = position;
|
|
|
|
}
|
2024-11-22 23:51:27 +00:00
|
|
|
|
|
|
|
public fromSave(reader:IReader) : TileEntity {
|
|
|
|
let tileEntity:TileEntity;
|
|
|
|
const type: TileEntityType = reader.readUByte();
|
|
|
|
const forBlock = Block.blocks[reader.readUByte()];
|
|
|
|
const position = new Vec3(reader.readUByte(), reader.readUByte(), reader.readUByte());
|
|
|
|
if (type === TileEntityType.Chest) {
|
|
|
|
tileEntity = new TileEntityChest(type, forBlock, position);
|
|
|
|
} else {
|
|
|
|
tileEntity = new TileEntity(type, forBlock, position);
|
|
|
|
}
|
|
|
|
|
|
|
|
return tileEntity;
|
|
|
|
}
|
|
|
|
|
|
|
|
public toSave(writer:IWriter) {
|
|
|
|
|
|
|
|
}
|
2024-11-17 08:26:35 +00:00
|
|
|
}
|