DUXPLIMA Documentation

Restarts and refunds

What happens to a build when the server stops, and what each kind of cancel pays back.

Progress is checkpointed every database.saveIntervalSeconds and on every state change. After a restart, unfinished builds come back paused, and their owner decides what happens next: the reason for the restart is unknowable, so nothing resumes on its own.

After a restart

When the owner is online, or as soon as they join, the chat offers two clickable choices:

ChoiceResult
ResumeThe build carries on from where it stopped
Cancel + refundThe build ends and pays back the unbuilt share of the price, with no penalty

Blocks the world lost in the crash (the database saves more often than the world) are put back first. Progress, and with it any refund, stays where it was: breaking an early block before a restart cannot turn a finished house into a near-full refund.

A build whose world is not loaded yet stays in the database and is retried on the next start.

Refunds by reason

ReasonRefund
Owner cancelseconomy.refund.onCancel: see below
Staff cancelsThe full price
Internal errorThe full price
Land lostThe unbuilt share, no penalty
Not resumed after a restartThe unbuilt share, no penalty
Materials never arrivedonCancel, as for an owner cancel

onCancel is FULL, NONE or PARTIAL. Partial pays the unbuilt share, capped at economy.refund.maxPercent of the price:

refund = price x min(1 - progress, maxPercent / 100)

A 1,000 build cancelled at 30% with the default 80 cap refunds 700. The same build cancelled at 10% refunds 800, not 900.

The job menu's cancel button shows the exact amount before you shift-click it.

When a refund cannot be paid

If the economy plugin refuses the deposit, or was removed after the build was paid for, the player is told the refund failed and to contact staff, the audit log records REFUND_FAILED, and the build history shows no refund. Nothing claims money that was never paid.

Other pauses

Pause reasonEnds when
Owner offlineThe owner joins again
World not loadedThe world loads; if the owner is offline, when they join
Out of materialsThe warehouse holds the item
Paused by handSomeone resumes it

Notes

  • database.crashRecovery: false refunds the unbuilt share of every unfinished build at startup instead of asking.
  • A build whose schematic file changed since it started is refunded rather than resumed, because its saved progress refers to the old file.
  • A blueprint whose request was still being processed when its holder logged off is handed back on their next join, even after a restart.

Related: Warehouse, Build history