85 lines
2.1 KiB
JavaScript
85 lines
2.1 KiB
JavaScript
import { Vector } from "../lib/Vector";
|
|
|
|
export class InstanceOptions {
|
|
instanceName = void 0;
|
|
structureId = void 0;
|
|
isEnabled = false;
|
|
dimensionId = void 0;
|
|
worldLocation = new Vector();
|
|
currentLayer = 0;
|
|
verifier = {
|
|
isEnabled: true,
|
|
trackPlayerDistance: 5,
|
|
intervalOrLifetime: 10
|
|
};
|
|
|
|
constructor(instanceName, structureId) {
|
|
this.instanceName = instanceName;
|
|
this.structureId = structureId;
|
|
this.load();
|
|
}
|
|
|
|
save() {
|
|
world.setDynamicProperty(`instanceOptions:${this.instanceName}`, JSON.stringify(this));
|
|
}
|
|
|
|
load() {
|
|
try {
|
|
const options = JSON.parse(world.getDynamicProperty(`instanceOptions:${this.instanceName}`));
|
|
if (options)
|
|
Object.assign(this, options);
|
|
else
|
|
throw new Error("Options not found");
|
|
} catch {
|
|
this.save();
|
|
const options = JSON.parse(world.getDynamicProperty(`instanceOptions:${this.instanceName}`) || "{}");
|
|
Object.assign(this, options);
|
|
}
|
|
this.worldLocation = Vector.from(this.worldLocation);
|
|
}
|
|
|
|
clear() {
|
|
world.setDynamicProperty(`instanceOptions:${this.instanceName}`, void 0);
|
|
}
|
|
|
|
getDimension() {
|
|
return world.getDimension(this.options.dimensionId);
|
|
}
|
|
|
|
enable() {
|
|
this.isEnabled = true;
|
|
this.save();
|
|
}
|
|
|
|
disable() {
|
|
this.isEnabled = false;
|
|
this.save();
|
|
}
|
|
|
|
rename(newName) {
|
|
this.clear();
|
|
this.instanceName = newName;
|
|
this.save();
|
|
}
|
|
|
|
move(dimensionId, worldLocation) {
|
|
this.dimensionId = dimensionId;
|
|
this.worldLocation = Vector.from(worldLocation).floor();
|
|
this.save();
|
|
}
|
|
|
|
setLayer(layer) {
|
|
this.currentLayer = layer;
|
|
this.save();
|
|
}
|
|
|
|
setVerifierEnabled(enable) {
|
|
this.verifier.isEnabled = enable;
|
|
this.save();
|
|
}
|
|
|
|
setVerifierDistance(distance) {
|
|
this.verifier.trackPlayerDistance = distance;
|
|
this.save();
|
|
}
|
|
} |