Upgrading to 1.6.0

1.6.0 is the largest set of file changes in the mod's history. Here is exactly what happens to your server, in order.

Overview

1.6.0 retires more owner files than any release before it: wallets, storefronts, bounty boards, NPC placements, conversations, ability overrides, and the offline reward spool all move to a new home. None of that requires a rewrite of your server. Most of it converts itself the moment the server starts; the rest is one command away, or a short, named list of files to re-author by hand. This page walks the whole thing in order.

Nothing is ever deleted

Every file 1.6.0 retires is either renamed in place with a .legacy suffix or moved into a timestamped backup/ copy, never erased, and the server always logs one line naming what happened and what replaced it. If something looks wrong after upgrading, the old file is still sitting right there to compare against.

Before you upgrade

  • Back up mods/mmoskilltree/, mods/ziggfreedcommon/, and your world save. The conversions below are safe and additive, but a backup costs you a minute and a bad upgrade costs you an evening.
  • Install the ZiggfreedCommon jar version 1.6.0 requires first. This mod currently pins ZiggfreedCommon-2.0.0.jar. Booting with an older or missing companion jar now fails up front, naming the version it needs, instead of a confusing class error partway through startup, so update it before you touch anything else.

First boot: what converts itself

Start the server once after dropping in the new jar, and read the log. These conversions need no action from you:

  • Bonus drops. luck-loot.json and (if present)mob-drops.json fold into the new bonus-drops.json, with every override you had carried across field by field and one startup line per row naming what it became. The jar's own bonus-drop rows now all live under one Mmo_naming convention (Mmo_Ore_Adamantite, Mmo_Vortex_Charm, Mmo_Trork_Kill, and so on); an override still keyed to an older row id is re-keyed onto the new id automatically at fold, with one startup INFO per row naming the move. See What happens when you upgrade.
  • Offline rewards. pending-quest-rewards.json drains into the new pending-rewards.json, filed by player UUID only. An entry that was keyed by a player's name instead of their UUID cannot be carried across, since a name is not an identity; it stays behind in the backup and the startup notice names it, so you can hand it out by hand.
  • Leaderboard cache and pending XP resets re-key to UUIDs. leaderboard-cache.json and pending-xp-resets.json both carry a legacy name-keyed entry across to the player's UUID the moment the server can resolve it. A leaderboard row nobody can resolve by name is dropped with one startup INFO naming the count and simply refills the next time that player logs in, since it is only a cache; a pending XP reset nobody can resolve is never delivered silently, so it is preserved in a timestamped backup/ copy with one notice instead. Both files, and pending-rewards.json and ZiggfreedCommon's placed-blocks.json, now write a {"version": 1, "players": {...}} envelope; a bare old-shape file with no version key still reads correctly as version 1.
  • Each player's quests and achievements. The first time a returning player connects after the upgrade, everything they had (active and completed quests, cooldowns, tracked pins, earned and claimed achievements, criterion progress, point milestones) is copied once onto the record the shared quest and achievement engines read, with one startup line per player naming the move. Nothing is asked of you.
  • Mob drop commands. mob-drop-commands.json converts in place to schema 4: a pool's delay field is dropped (its commands now run immediately, in the order written) and the dead requiredTier filter is removed outright. A file still carrying either gets one startup warning naming it.

Run /mmomigrate

/mmomigrate is the built-in upgrade helper: one plain-language report of every older-format file the mod found on your server, what it already converted for you at startup, what it can convert in place for you, and what still needs your hand, with the exact shape to write quoted for each.

  1. 1

    Run /mmomigrate for the report

    A scan-only pass listing every older-format file it found, what already converted itself, and what is left.
  2. 2

    Run /mmomigrate --action=owner --confirm=yes

    Applies every safe owner-file conversion it can make automatically, with a backup taken first for every file it touches.
  3. 3

    Run /mmomigrate --action=pack

    Scans your installed content packs and reports what they still carry in an older shape, without changing anything on disk.
  4. 4

    Convert a pack in the web Migration Converter

    Content packs are never rewritten in game. For a pack the scan flags, use the web Migration Converter to convert its files in your browser; they never leave your machine. See Migrating a content pack to 1.6.0 for the full pack-author checklist.
A typical session
/mmomigrate
/mmomigrate --action=owner --confirm=yes
/mmomigrate --action=pack

Every retired file, and what replaced it

This table is generated from the mod's own config reference, so it always matches what /mmomigrate actually reports. If a file below is sitting in your mods/mmoskilltree/ folder, it is no longer read; its replacement is where the same setting lives now.

FileReplaced by
mods/mmoskilltree/currencies.jsonmods/ziggfreedcommon/currencies.json
mods/mmoskilltree/bounty-board.jsonmods/ziggfreedcommon/boards.json
mods/mmoskilltree/token-shop.jsonmods/ziggfreedcommon/shops.json plus shop-pools.json
mods/mmoskilltree/elite-mobs.jsonthe optional MMO Mob Scaling companion mod
mods/mmoskilltree/abilities.jsonability-overrides.json, or a content-pack ability asset
mods/mmoskilltree/spawn-hub.jsonServer/ZiggfreedCommon/NpcPlacements/ (content) + mods/ziggfreedcommon/npc-placements.json (owner switch)
mods/mmoskilltree/quest-givers.jsonServer/ZiggfreedCommon/NpcPlacements/ (content) + mods/ziggfreedcommon/npc-placements.json (owner switch)
mods/mmoskilltree/spawn-hub-placements.jsonServer/ZiggfreedCommon/NpcPlacements/ (content) + mods/ziggfreedcommon/npc-placements.json (owner switch)
mods/mmoskilltree/luck-loot.jsonbonus-drops.json
mods/mmoskilltree/mob-drops.jsonbonus-drops.json
mods/mmoskilltree/placed-blocks.jsonmods/ziggfreedcommon/placed-blocks.json
mods/mmoskilltree/dialogues.jsonmods/ziggfreedcommon/dialogues.json
mods/mmoskilltree/pending-quest-rewards.jsonpending-rewards.json
mods/mmoskilltree/quests/_defaults/default-quests.jsonServer/ZiggfreedCommon/Quests/MMOSkillTree/ (jar-shipped, readable, still overridable by id)
mods/mmoskilltree/achievements/_defaults/default-achievements.jsonServer/ZiggfreedCommon/Achievements/MMOSkillTree/ (jar-shipped, readable, still overridable by id)
mods/mmoskilltree/achievements/_defaults/default-point-milestones.jsonServer/ZiggfreedCommon/AchievementMilestones/MMOSkillTree/ (jar-shipped, readable, still overridable by id)

More retirements worth knowing about

  • The achievement announcementCommand leaf. How an unlocked achievement's server-wide banner is drawn is authored once, for every achievement, in the Achievement_Unlocked notice file. An achievement file still carrying announcementCommand gets one startup warning naming the replacement and the leaf is otherwise ignored. See Feedback moments.
  • The three _defaults/ echo files (quests/_defaults/default-quests.json, achievements/_defaults/default-achievements.json, achievements/_defaults/default-point-milestones.json) rename themselves to .legacy and are never read again. They exist in the table above too; this is just a reminder not to hand-edit them if you spot them on disk after the upgrade.
  • An old-format mastery.json (or classes.json). The file itself is still the live owner overlay - but a copy still carrying the pre-1.6.0 track format (the lower-case target/nodes grammar, or the retired extends/params DSL) is moved to a timestamped backup/ copy on first start with one notice, and nothing is carried across. The web Migration Converter rewrites the old file into the schema-v3 overlay (v2 for classes) so your tuning stays live; see the owner overlay.
  • The flat world-rule spellings. A world-rules.json rule still naming its worlds with the retired flat Match string matches no world at all until it is rewritten as a Where block, and one still authoring its gameplay knobs flat at the top level (the 1.5.x shape) keeps working with one startup warning per rule naming the nested Rules group. /mmomigrate --action=owner --confirm=yes makes both moves for you, backup first; see Per-World Rules.
  • A player database still holding legacy quest/achievement rows. This only applies if you run the optional shared-database player-data backend. Schema 2 replaces the old QUESTS and ACHIEVEMENTS domains with the one shared PROGRESS domain; a database that still holds player_data rows filed under either retired domain refuses to start, naming how many rows it found, rather than start over data it can no longer place correctly. Export or delete those rows by hand before upgrading such a server. dbDownPolicy still governs what happens if the database itself is unreachable at boot in the meantime; see Database backend operations.

If you author or install content packs

Every break above is a server-owner file. A content pack has its own, smaller list of breaks (a folder that moved, an action that was renamed, a selector that changed shape), none of which /mmomigrate --action=owner can touch, since packs are never rewritten in game. Read Migrating a content pack to 1.6.0 for the full checklist, or run /mmomigrate --action=pack to see whether any of your installed packs are affected at all.

If you maintain another plugin

One integration point was removed outright rather than deprecated: the old way another plugin registered to hear about achievement moments. If another plugin on your server used it, that plugin will not compile against 1.6.0 unmodified. See Native events for the replacement events and the full before-and-after recipe.

After the upgrade

  • Run /mmoconfig validate to audit everything the mod knows how to check: quests, achievements, abilities, masteries, placements, and more, in one pass.
  • Read the startup log once, in full. Every conversion, fold, and retirement above logs exactly one line naming what it did, so a slow read of one server start tells you everything that changed on your disk.