Troubleshooting

Common issues and solutions

Not Gaining XP

Check Creative Mode

disableXpInCreative is true by default. If you're in creative mode, you won't gain XP.

Solution: Switch to survival mode, or disable the setting:

/mmoconfig creative --args=false

Check Permissions

If permissions are enabled, ensure you have mmoskilltree.skill.* or the specific skill permission.

Check if permissions are enabled:

/mmoadmin

Check Placed Block Tracking

You cannot gain XP, or quest and achievement progress, from blocks you placed yourself (anti-exploit feature). The ledger that remembers which blocks were player-placed is ZiggfreedCommon's runtime store, mods/ziggfreedcommon/placed-blocks.json; you don't edit it directly. XP and quest/achievement progress read the same ledger, so a place-then-break credits nothing anywhere.

The two knobs live in skill-config.json:

  • trackPlacedBlocks - turn tracking off entirely
  • placedItemExpireMinutes - how long a placed item (a crop, a fruit) stays remembered

A placed block is remembered until it is broken, whoever breaks it, and earns nobody credit.strictPlacedBlockCheck and placedBlockExpireMinutes retired in 1.6.1; a file still carrying either gets one boot notice and drops them on the next save.

Solutions:

  • Break blocks placed by other players or world generation
  • Building a mine, a farm or a quarry FOR your players? Give the builder mmoskilltree.placedblocks.exempt (OP and creative placements are exempt already): their placements are never recorded, so players who mine them earn normally
  • Disable tracking: set trackPlacedBlocks: false in skill-config.json

If you just upgraded from before 1.6.0, the old mods/mmoskilltree/placed-blocks.json was renamed to .legacy at first boot with one warning, and 1.6.1 retires the library's own mods/ziggfreedcommon/placed-blocks.json the same way: a placement is one bit on the chunk the block sits in, saved and loaded with it, so there is no file left to scan or grow. Blocks placed before either upgrade are forgotten once; everything placed afterwards is guarded as before.

"My abilities.json edits do nothing"

abilities.json (the old JSON-blob ability-override format) was retired. On first boot after upgrading, the mod moves the legacy file (never reads it) to a timestamped file under mods/mmoskilltree/backup/ and logs a startup warning.

Current ability configuration is split across two places:

  • ability-settings.json - server-wide ability toggle and dodge/counterattack timing
  • ability-overrides.json - per-ability owner tuning (partial overlays onto the folded ability, defaults < pack < owner)

Full ability bodies live as pack-authorable Server/MMOSkillTree/Abilities/*.json assets. After editing ability-overrides.json, run /mmoability reload to re-fold and re-validate live.

Shared Library (ZiggfreedCommon) Issues

A shop, board, or currency name shows as a raw key like board.grade.hard

A shelf or band name resolves in four rungs: what the content itself authors, then a board.grade.* / shop.category.* key any installed mod or pack ships in its own .lang file, then the shared library's neutral default in ziggfreedcommon.commerce.lang, then the raw name printed as-is. Seeing the raw key means no rung answered: the band or shelf is one nobody has named yet.

Solutions:

  • Simplest: author the board's Grades text or the storefront's Categories text directly on the asset, and no key is needed at all
  • Or write the key in your own mod or pack's .lang file - the filename becomes its namespace, and the library asks each installed mod before falling back to its own default, so board.grade.hard in mmoskilltree.lang resolves
  • Or override the library's own wording by shipping ziggfreedcommon.commerce.lang

My old bounty-board.json / token-shop.json / currencies.json / spawn-hub.json / quest-givers.json changes stopped applying

These owner files were retired in 1.6.0. Each one was renamed to .legacy at first boot with a single startup warning; none of them are read anymore.

The replacements are shared-library assets under Server/ZiggfreedCommon/, with your edits now belonging in the corresponding owner file under mods/ziggfreedcommon/:

  • boards.json, shops.json, shop-pools.json, currencies.json, npc-placements.json

Run /mmomigrate for a plain-language report of what moved and what still needs your hand.

A pack installs but its shop or board is empty

A content pack that still ships the old Server/MMOSkillTree/{Currencies,Shops,ShopPools, ShopEntries,ShopTemplates,BountyBoards} folders is loading into stubs that only report, never populate the live shop or board. The boot log names every such file and whichServer/ZiggfreedCommon/ folder to move it to. Run the pack through the web Migration Converter to convert it automatically.

My plugin no longer compiles against the achievement listener

The achievement listener registry was removed in 1.6.0, not deprecated; a plugin that listened for achievements needs a small change to subscribe to ZiggfreedCommon's native events instead. Full before-and-after: Native events.

The server refuses to start, naming a ZiggfreedCommon version

The required companion jar is older than this mod needs. UpdateZiggfreedCommon.jar in your server's mods folder to the version the startup message names; it loads before MMO Skill Tree does, so a stale copy fails the boot up front with a plain message instead of a cryptic class error mid-load.

Pressing use on a station block does nothing

Work stations need both the standalone RPG Stations companion mod and the MMO Skill Stations Pack content pack installed alongside MMO Skill Tree. Without either one, MMO Skill Tree shows nothing station-related at all - the block itself does not error, it simply has nothing to hand the press off to. See Work Stations.

An NPC is missing, or standing in the wrong place

Run /mmonpc list in that world: it names every placement that targets the world, whether it is actually standing, and the reason for anything that isn't. /mmonpc enable puts a disabled placement back, and /mmonpc reconcile forces a fresh sweep, everywhere or in one world. /mmonpc list --arg1=structures lists the structure-marker sightings a placement can anchor to, /mmonpc list --arg1=markers scans for the marker entities actually live right now (the two disagreeing tells you which side an anchoring problem is on; a marker only exists while its chunk is loaded), and /mmonpc list --arg1=channels shows which mod claimed each press-F destination, which tells a typo apart from a missing mod.

I just upgraded from 1.5.x and something stopped applying

1.6.0 retires a batch of owner files outright (see the sections above and Upgrading to 1.6.0 for the full list). Run /mmomigrate for one plain-language report of everything on your server that still speaks a retired format, then /mmomigrate --action=owner --confirm=yes to convert what can be converted safely (it backs up first). Content packs are never rewritten in game; run those through the web Migration Converter instead.

Content Pack Not Loading

Content packs are discovered at server start only. If a pack's content doesn't appear:

  • Confirm the pack zip (or unzipped folder) is in the server's mods directory and its manifest has "IncludesAssetPack": true
  • Restart the server - dropping a new zipped pack in while the server is running does not load it
  • An unzipped pack's file monitor auto-refreshes on save for live edits during development, but a brand-new pack still needs one restart to register
  • Check the server log at startup for pack load / validation errors
  • Run /mmoconfig validate to surface content audit findings across all domains

Safe Live-Reload Paths

Never use /plugin reload on this mod

/plugin reload MMOSkillTree (or /plugin reload Ziggfreed:MMOSkillTree) is unsafe and crashes the running world. It re-registers the mod's ECS component types at new indices, which the running world cannot recover from. On a Hytale Update 6 (0.6.x) server it reaches even further: plugin unloading cascades through dependents, so unloading ZiggfreedCommon takes MMO Skill Tree and every other mod depending on it down with it, and a /plugin reload of the MMO now touches more than the one jar you named. For what a restart or a crash actually costs you, see Server Operations.

Use one of these instead, depending on what you changed:

  • /mmoconfig reload - reloads override configs
  • Wallets, storefronts, and boards are shared-library assets; they reload with the asset stores, alongside their mods/ziggfreedcommon/ owner files (no separate reload command needed)
  • /mmoquestadmin reload - re-reads the MMO's own owner quest files and pack layers; /zigprogress reload folds and republishes the shared quest and achievement assets
  • /mmoability reload - re-folds the ability catalog from current pack state plus a fresh ability-overrides.json read, and re-validates
  • The pack file-monitor (unzipped packs only) auto-refreshes on save
  • A full restart for jar-bundled content, or a brand-new zipped pack drop

Config Changes Not Saving

  • Use /mmoconfig reload to reload from file
  • Check file permissions on the config directory
  • Ensure valid JSON syntax in config files

Commands Blocked

If commands say "no permission":

  • If permissions are enabled, you need mmoskilltree.command.* permissions
  • Admin commands require OP or mmoskilltree.admin permission

LuckPerms: OP Not Working

If you're using LuckPerms and "Enable Permissions" is OFF in /mmoadmin, you need the wildcard permission to act as OP:

/lp user <player> permission set * true

Alternatively, turn "Enable Permissions" ON and grant mmoskilltree.admin instead.

Rewards Not Appearing

  • Skill tree rewards require manual claiming via /skilltree
  • Item rewards require manual claiming via /xp → Rewards tab
  • Check if you meet the level requirement

Wrong Stat Bonuses After Update

Run /mmoconfig reload - stats are auto-recalculated on config version changes.

If issues persist, players can reset their skill tree and reclaim rewards.

Language Issues

Missing Translations

The mod's own text falls back to English, key by key, so you will never see a raw key from its own UI. Content-authored text is different on purpose: a conversation line, a shop or board name (see above), or a custom skill name from a pack shows its raw key when nothing has translated it, so a missing translation can be found and fixed instead of silently swallowed - or, before 1.6.0, dropping the player to the loading screen. See Localization.

Getting Help

  • Discord: Join Server
  • Issues: Report bugs on CurseForge or Discord
  • Config Questions: Use /mmoconfig diff to see your changes

Backing up and restoring configuration and player data is covered once, on Server Operations: Backup & Recovery.

Fixed in Earlier Releases

Update to the latest version if you still see any of these:

  • A crash on multi-world servers when opening a leaderboard, from dungeons, temples, and other world instances
  • An "Entity contains component type" crash when multiple XP events fired in the same tick
  • An "Assert not in thread" error from accessing player data across world threads (leaderboard)