Notice to Server Owners

From DragonMineZ Wiki

Read this page before you start editing anything in config/dragonminez or in a world's dragonminez/ save folder on a live server. It covers what DragonMineZ backs up for you and what it doesn't, how updates treat your files, and what to keep in mind on a multiplayer server.

Back up before you touch anything

DMZ keeps a copy of the files it changes on its own:

  • Config files it upgrades after a DMZ update are moved to config/dragonminez/oldBackup/<same path> before the new file is written (see How to JSON).
  • Default quest, saga and side-quest files it upgrades are copied to <world>/dragonminez/oldBackup/<same path> first (see Reloading and Updating Changes).
  • Files it can't parse are never overwritten: DMZ runs on defaults for that session and leaves your file alone.

That safety net does not cover:

  • Your own edits between two DMZ versions. oldBackup/ only holds the version from right before an upgrade.
  • /dmzrestoreupdate, which deletes the world's wishes, sagas and quests folders (including your custom files) and regenerates the defaults.
  • Player data: playerdata_json/<uuid>.json when using JSON storage, your database when using DATABASE storage, and the vanilla player .dat files.
  • World saved data in <world>/data/ (Dragon Ball positions, parties, raids, world bosses and more).
Take your own backup Take your own filesystem or database backup before bulk-editing any of these, especially on a server with real player data.

Who these pages are for

The configuration and modding pages of this wiki are written for people who are comfortable editing JSON, running a development environment or building a Forge add-on. They intentionally don't cover lore or story explanations, or server hosting and administration outside of DMZ itself (ports, proxies and so on). For playing the mod, start from the Beginner's Guide.

Never trust client input for progression

If you are writing an add-on or a mixin against DMZ: stats, unlocks, permissions, quests and wishes are validated server-side by design. Don't build add-on features that trust a value reported by the client for anything related to progression; read the state from the server-side StatsCapability / StatsProvider instead of a client cache.

Config files are upgraded on DMZ updates

Every config file carries a configVersion. When you install a newer DMZ, outdated files are regenerated with the new defaults and your changed values are merged back in (values you never touched take the new defaults). This is expected behavior, not a bug: see How to JSON for exactly how the merge works, and compare with the copy in oldBackup/ if a value looks wrong after an update.

A file with a syntax error is not regenerated: DMZ uses the defaults for that file until you fix it and run /dmzreload. Every player sees a short report of broken files in chat on login (you can turn that off with developer.reportJsonProblemsInChat in General Server Config).

Custom and community content survives updates

  • Custom races keep all their values across updates; custom form files keep their content; extra raid and tournament files and the custom quests and sagas you author are loaded as they are.
  • DMZ's own default config and story files are upgraded when DMZ changes them, but the values you edited are kept. If you want a change to be completely independent from DMZ's defaults, fork it into your own custom race, form or saga instead of editing DMZ's files (see Custom Races, Custom Forms and Custom Quests).
  • Set autoUpdateQuests to false in General Server Config if you never want DMZ to touch the default quest files of a world once they exist.

Multiplayer and server-scale considerations

  • The server sends its config files to every player on join. After editing a config file, always run /dmzreload config: until you do, the server keeps the old values while newly joining players receive the edited file. The reload resends every file to every connected player, so expect a brief hitch on larger servers.
  • Quest, saga and dialogue edits only take effect for a world after /dmzreload story (or a restart).
  • Don't switch storage backends (NBT, JSON, DATABASE) with players online: do it with the server empty and take a backup first. The vanilla .dat player save is always written as well, so it remains a fallback if the database is unreachable.

Getting help