wip: Construct API

This commit is contained in:
ForestOfLight
2026-05-29 23:27:11 +02:00
Unverified
parent f750710732
commit 2b90020e37
25 changed files with 454 additions and 29 deletions
@@ -20,4 +20,21 @@ export class Builder {
isFlexibleInstanceMoving() {
return this.flexibleInstanceMovement !== void 0;
}
asPacket() {
return {
playerId: this.playerId,
easyPlace: this.isOptionEnabled('easyPlace'),
fastEasyPlace: this.isOptionEnabled('fastEasyPlace'),
materialGrabber: this.isOptionEnabled('materialGrabber'),
materialInstanceName: this.materialInstanceName
};
}
setOptions(builderOptions) {
this.setOption('easyPlace', builderOptions.easyPlace);
this.setOption('fastEasyPlace', builderOptions.fastEasyPlace);
this.setOption('materialGrabber', builderOptions.materialGrabber);
this.materialInstanceName = builderOptions.materialInstanceName;
}
}
+13 -6
View File
@@ -1,29 +1,36 @@
import { world } from "@minecraft/server";
import { Builder } from "./Builder";
import { BuilderNotFoundError } from "../Errors/BuilderNotFoundError";
export class Builders {
static builders = {};
static add(playerId) {
if (this.builders[playerId])
if (Builders.builders[playerId])
return;
this.builders[playerId] = new Builder(playerId);
Builders.builders[playerId] = new Builder(playerId);
}
static remove(playerId) {
delete this.builders[playerId];
delete Builders.builders[playerId];
}
static get(id) {
return this.builders[id];
const builder = Builders.builders[id];
if (builder === void 0)
throw new BuilderNotFoundError(id);
}
static onJoin(playerId) {
this.add(playerId);
Builders.add(playerId);
}
static onLeave(playerId) {
this.remove(playerId);
Builders.remove(playerId);
}
static getIds() {
return Object.keys(Builders.builders);
}
}