Merge branch 'StructureVerifier'

This commit is contained in:
ForestOfLight
2025-06-06 02:59:19 -07:00
Unverified
3 changed files with 26 additions and 3 deletions
@@ -3,7 +3,7 @@ import { StructureOutliner } from "../Render/StructureOutliner";
import { StructureVerifier } from "../Verifier/StructureVerifier";
import { Structure } from "../Structure/Structure";
import { InstanceOptions } from "./InstanceOptions";
import { TicksPerSecond } from "@minecraft/server";
import { world, system, TicksPerSecond } from "@minecraft/server";
import { InstanceNotPlacedError } from "../Errors/InstanceNotPlacedError";
import { StructureMaterials } from "../Materials/StructureMaterials";
import { VerificationRenderer } from "../Render/VerificationRenderer";
@@ -20,6 +20,7 @@ export class StructureInstance {
this.structure = new Structure(structureId);
this.options = new InstanceOptions(instanceName, structureId);
this.refreshBox();
this.subscribeToEvents();
}
delete() {
@@ -50,6 +51,10 @@ export class StructureInstance {
this.materials.refresh();
}
subscribeToEvents() {
this.disableInstanceWhenNoPlayersOnline();
}
getName() {
return this.options.instanceName;
}
@@ -240,6 +245,24 @@ export class StructureInstance {
this.setLayer(this.options.currentLayer - 1);
}
disableInstanceWhenNoPlayersOnline() {
// This prevents a memory leak when no players are online.
world.beforeEvents.playerLeave.subscribe(event => {
system.run(() => {
if (world.getAllPlayers().length === 0) {
this.disable();
this.shouldEnableOnJoin = true;
}
})
});
world.afterEvents.playerJoin.subscribe(event => {
if (this.shouldEnableOnJoin) {
this.enable();
this.shouldEnableOnJoin = false;
}
});
}
toGlobalCoords(structureLocation) {
return Vector.from(structureLocation).add(this.options.worldLocation);
}
@@ -98,6 +98,6 @@ export class VerificationRenderer {
shouldUseLargeStructureRendering() {
const bounds = this.instance.getActiveBounds();
return bounds.min.volume(bounds.max) > 300;
return this.instance.hasLayerSelected() || bounds.min.volume(bounds.max) > 300;
}
}
+1 -1
View File
@@ -11,7 +11,7 @@
---
Give yourself the tools to ease the survival building process with Construct: an addon designed to help you transfer your builds from creative to survival. Construct offers these convenient features and several more:
Give yourself the tools to ease the survival building process with Construct, an addon designed to help you transfer your builds from creative to survival. Construct offers these convenient features and several more:
- **Layered Building**: Build structures in layers.
- **Block Validation**: Highlights incorrect blocks.