From 1e7e76117f8e00a3d128f75e6b1eb16435e5b9fc Mon Sep 17 00:00:00 2001 From: Ryan Barlow <7389646+ryanbarlow97@users.noreply.github.com> Date: Thu, 15 Oct 2026 23:18:34 +0000 Subject: [PATCH 1/2] docs: explain durable vehicle construction and recovery --- projects/VFBuilders/README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/projects/VFBuilders/README.md b/projects/VFBuilders/README.md index 93a93ea..a19e863 100644 --- a/projects/VFBuilders/README.md +++ b/projects/VFBuilders/README.md @@ -67,6 +67,24 @@ both fields. Saves made before the character was recorded load with a null character. VFBuilders does not look up heirs. SimpleFactions treats a null character as "resolve the account's heir, or quarantine". +Accepted construction is saved immediately. Progress is checkpointed every 30 +seconds while a build is queued, and completion, cancellation and station removal +also save the queue. Interrupted shutdowns can add up to 30 seconds of repeated +building time. Snapshots replace the previous file atomically and do not remove +timer displays. If the initial save fails, construction is cancelled through the +normal material and registration-fee refund path. + +A queued project's optional `outputUuid` records the vehicle created during +completion. Recovery checks VehicleFramework's stored rows, including destroyed +vehicles, before spawning another output. The output must be saved before the +station clears its job. Keep a backup of `stations.json` before upgrading; before +downgrading, resolve any projects with `outputUuid` because older VFBuilders +versions ignore that field. Accepted-start and output-recovery messages identify +the station and build in the server log. This recovery protects saved jobs; it +does not reconstruct jobs that were never saved. Inventory, registration fees +and the station file are separate stores, so a process failure during their +handoff can still require staff reconciliation. + ### API for other plugins [`BeginVehicleConstructionEvent`](https://github.com/TF-Minecraft/VFBuilders/blob/main/src/main/java/net/tfminecraft/vfbuilders/events/BeginVehicleConstructionEvent.java), From e9e34e77e3223a4d8078ff8b0ecd3a0b21b929df Mon Sep 17 00:00:00 2001 From: Ryan Barlow <7389646+ryanbarlow97@users.noreply.github.com> Date: Thu, 15 Oct 2026 23:23:30 +0000 Subject: [PATCH 2/2] docs: clarify cancellation event snapshot fields --- projects/VFBuilders/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/VFBuilders/README.md b/projects/VFBuilders/README.md index a19e863..5974039 100644 --- a/projects/VFBuilders/README.md +++ b/projects/VFBuilders/README.md @@ -95,6 +95,9 @@ expose `UUID getConstructorCharacterId()`. The construct and cancel events also expose the account as `getConstructorUuid()`. The begin event carries the `Player`. +Cancellation listeners must read the blueprint and constructor from the event's +getters; the station's queued job has already been cleared durably. + [`ConstructionFreeze`](https://github.com/TF-Minecraft/VFBuilders/blob/main/src/main/java/net/tfminecraft/vfbuilders/api/ConstructionFreeze.java) providers are registered with Bukkit's `ServicesManager`. Each second, every station still counting down calls