Mustard Server Management
This document describes the established high-level workflow for maintaining the Mustard testing server. It intentionally omits unverified deployment automation and command sequences.
Document Scope
This document covers:
- The relationship between Git-maintained source and deployed copies.
- Restart-only maintenance, restart planning and test-change handling.
- The update-testing and validation workflow.
- The world-rebuild testing lifecycle.
- Deployment boundaries for datapacks, TreePacks, configuration, and compatibility artifacts.
Detailed source maintenance belongs in minecraft-projects. Pterodactyl environment and JVM settings remain in their dedicated documents.
Source and Deployment
Mustard project source is maintained in minecraft-projects. Server copies are deployment or runtime copies.
Make lasting changes in Git, review them, and deploy them separately. A direct server-side diagnostic correction must be reconciled back into Git rather than left as the only corrected copy.
Datapack, TreePack, configuration, script, and compatibility-JAR deployment is separate from source maintenance. A merged source change does not establish that deployment occurred.
Maintenance Cadence
Mustard has a lengthy startup, so routine mod, datapack, TreePack and configuration changes should be grouped into planned or bundled full restarts where practical. Test changes before treating them as permanent, and review the resulting startup and runtime evidence before accepting the deployed state.
This document does not define restart commands or unattended deployment automation.
Restart-Only Maintenance
Use a complete stop, reviewed file synchronization and restart for routine Mustard maintenance. The same policy applies to future heavily modded Minecraft servers, using each server's own maintained sources and deployment paths.
Do not use /reload for routine administration, deployment or general
troubleshooting. Minecraft reloads global server resources and datapacks;
successfully reloading one mod does not establish that every installed mod can
reload safely. Other listeners may mutate shared data concurrently, accumulate
entries, retain stale cached configuration or leave resources inconsistent.
Live /datapack enable and /datapack disable also trigger this global reload;
do not use them to bypass the offline pack-priority procedure.
Avoiding administrator reload commands does not stop mods or load functions from
invoking the same API. Tumbleweeds 1.1.0 has a confirmed first-world reload;
the independent source correction
is pending review, not a statement of deployment. Verify effective override
priority before the first new-world startup and inspect repeated resource/recipe
loading, not just a Reloading! chat message. Keep a new-world test isolated
until known automatic reload paths are corrected and acceptance passes.
For routine changes:
- Review the maintained Git source and the intended change before deployment.
- Stop Minecraft completely and confirm it has exited.
- Apply the reviewed changes to the appropriate persistent deployment sources:
server-datapacks/,server-treepacks/, server mod staging, or the documented configuration/deployment paths as appropriate. Git remains authoritative. - With Minecraft stopped, synchronize world-scoped datapacks and TreePack
overlays through the established
sync-mustard-world-assets.shworkflow. Resolve the active world throughlevel-name; preserve unrelated runtimetrees/resources. Keep the existing offlinelevel.datpriority workflow:mustard-fixesbeforemustard-rules, withmustard-ruleshighest. - Start Minecraft. Verify startup reaches
Done, required resources load, pack order is correct and the targeted behavior passes validation before accepting the deployed state or resuming a generation task.
For a brand-new world, use the fresh-world preparation below before its first startup. Verify the actual full-pack order afterward and use the offline fallback if dynamically registered packs appear above the Mustard packs. No live reload is required. This policy does not introduce automatic restarts or change schedules.
Deliberate reload testing is permitted only when specifically authorized for a reload investigation in an isolated, disposable environment. If an unexpected runtime reload occurs during acceptance testing, stop and restart with the reviewed files, then repeat the relevant checks; do not assume that issuing a second reload repairs state. Investigate any mod that requires or initiates a runtime reload separately before allowing that workflow in routine operation. Client-only resource-pack refresh and loading saved chunks are distinct from a global server resource reload; this policy does not claim they are equivalent.
Update Testing and Validation
The routine mod-maintenance workflow is documented in mod-management.md. It supports:
- Capturing a known-good pre-update baseline.
- Applying a separately reviewed update candidate.
- Comparing mod inventories, hashes, startup logs, and generated data.
- Repeating tests or targeted diagnostics when differences need investigation.
- Recording a final known-good result only after required validation succeeds.
Review startup completion, relevant errors and warnings, generated-resource differences, and targeted compatibility evidence. Reusable analysis and validation tools may be deployed into the update-test diagnostic toolbox; per-run workspaces remain operational output.
World Rebuild Lifecycle
Mustard is currently in a Creative-heavy Create and Aeronautics capability-testing phase. The intended switch to normal Survival gameplay is tied to a future world rebuild after that phase is sufficiently mature.
server-configuration.md is authoritative for the current and target game-mode state. chunky-pregeneration-guide.md documents pregeneration considerations for a new world.
Maintained Data Deployment
The source repository contains maintained datapacks and TreePack source. Deployment into the server and world, and generation of runtime tree data, are separate operations.
World-scoped Mustard datapacks are synchronized with
scripts/sync-mustard-world-assets.sh. The helper derives the server root from
its deployed location and reads level-name from server.properties; it does
not assume a world named world or require a host-wide /home/container alias.
Runtime TreePack synchronization remains an overlay: preserve unrelated content
in the shared trees/ directory.
Fresh-World Preparation
Use the reviewed helpers from
minecraft-projects PR #43,
squash-merged as f16b0a9. The
merged implementation documentation
is authoritative for source behavior, validation and limitations. Source merge
and deployment remain separate operations.
-
Stop Minecraft completely and confirm it has exited.
-
Prepare the reviewed persistent
server-datapacks/mustard-fixes,server-datapacks/mustard-rulesandserver-treepacks/mustard-tree-fixes/treesdeployment sources. Keep the sync and priority helpers together under the individual server'sscripts/. -
Confirm the target
level-nameis genuinely fresh: nolevel.dat,level.dat_old,data/scoreboard.dat, session state or regions. Only intended pre-seeded datapacks may exist; do not delete ambiguous world data to bypass the helper's refusal checks. -
From the server root, while Minecraft remains stopped, run:
scripts/sync-mustard-world-assets.sh -
Review the prepared initial selection. Starting from the existing
vanilladefault, the helper prepares:initial-enabled-packs=vanilla,mod_data,file/mustard-fixes,file/mustard-rulesOther explicitly selected packs retain their relationships and disabled settings; valid discovered file packs are included before the Mustard packs. Preserve
server.properties.mustard-initial-backup-*. The helper verifies and atomically replaces the initial-enabled assignment, without creating world NBT. Its read-only preflight and refusal checks protect existing/ambiguous state, unsafe paths and conflicting selections; see the source documentation for the complete checks. Unrelated runtime TreePack resources remain intact. -
Start Minecraft normally. Verify startup completion, actual resource loading, effective
mod_data < mustard-fixes < mustard-rulesorder and whether both Mustard packs are actually last, usingdatapack list enabledin the console. Follow the full-pack limitation below before accepting the world or starting pregeneration.
No preliminary Minecraft startup or synthetic level.dat is required to prepare
initial selection. This improvement does not guarantee final highest priority
over every dynamically registered mod pack. It also does not remove the need
for PR #42's effective Tumbleweeds override precedence on the very first load.
Full-Pack Priority Limitation and Offline Fallback
Owner-reported Mustard full-pack testing on October 18–19, 2026 demonstrated the
remaining limitation: the first startup enabled 34 datapacks, with additional
dynamically registered packs placed after mustard-fixes and mustard-rules.
After stopping Minecraft, running the existing offline priority helper and
restarting, both Mustard packs occupied the final two positions, with
mustard-rules highest.
| Observation | Initial Full-Pack Startup | After Offline Priority Correction and Restart |
|---|---|---|
| Recipes loaded | 42,334 | 42,476 |
| ERROR entries | 286 | 10 |
| Mustard pack priority | Dynamically registered packs followed the two Mustard packs | mustard-fixes then mustard-rules occupied the final two positions |
The corrected 42,476 recipes and 10 ERROR entries matched the October 10 baseline. These are recorded comparison results, not fixed acceptance counts for future changed modpacks. PR #43 fixes the initial-selection problem but does not yet fully resolve first-start priority across the complete Mustard pack.
For an already-generated world with incorrect effective order, stop Minecraft completely, ensure world assets are synchronized, and run from the server root:
python3 scripts/set-mustard-datapack-priority.py
Use no arguments for this existing-world fallback. It uses the Python standard
library, acquires the world's session lock, backs up level.dat, and puts
file/mustard-fixes followed by file/mustard-rules at the end of the enabled
selection while retaining other packs' relative order. No external nbtlib or
confirmation flag is required. Restart normally and verify the effective order,
startup completion and resource/error comparison again; do not use /reload or
live /datapack enable / /datapack disable as the correction.
Changing initial properties does not replace an existing world's saved selection. Offline priority repair applies to subsequent resource loads; it does not prove that first-load initialization side effects or already-generated content have been undone. Keep full pregeneration gated on the required full-pack acceptance.
Do not hand-edit a deployed datapack, TreePack output, configuration, script, or compatibility artifact and then treat that runtime copy as maintained source. Reproduce or reconcile the lasting change in Git.
Generated output must be reviewed before separately authorized deployment.
Related Documentation
| Document | Purpose |
|---|---|
| mod-management.md | Mod artifacts and routine update tooling |
| server-configuration.md | Current server settings and gameplay lifecycle |
| server-startup.md | JVM settings and startup characteristics |
| server-environment.md | Pterodactyl environment and storage |
| server-backup-strategy.md | Backup and recovery boundaries |
| chunky-pregeneration-guide.md | World pregeneration guidance |
| Mustard maintained source | Canonical project source and tooling |
Change History
2026-10-19
- Documented merged PR #43 fresh-world preparation before first startup, preserving safety checks, property backups and runtime TreePack overlays.
- Recorded the October 18–19 full-pack priority limitation and baseline recovery through stopped-world offline correction and restart; retained restart-only policy and Tumbleweeds first-load precedence requirements.
2026-10-18
- Established restart-only maintenance for Mustard and future heavily modded Minecraft servers, retained offline world-asset and pack-priority procedures, and confined deliberate reload tests to authorized disposable environments.
- Added the confirmed Tumbleweeds automatic first-world reload exception and linked its separate correction; retained restart-only policy and first-start priority verification.
2026-10-05
- Corrected the fresh-world datapack priority order so mustard-rules loads last and has highest priority over mustard-fixes.
- Updated the fresh-world procedure for the self-contained datapack-priority helper; no external nbtlib package or --confirm-server-stopped flag is required.
2026-10-01
- Documented level-name-aware world-datapack deployment and server-root portability for multi-server Wings hosts.
2026-09-25
- Added the source-first operational workflow, bundled-restart guidance, update-test and validation lifecycle, future-world-rebuild context, and deployed-copy reconciliation rules.