Content Packs
Extend MMO Skill Tree with a data-only Hytale asset pack - no Java required
Overview
Third parties can add or override MMO Skill Tree content - quests, achievements, conversations, placed NPCs, storefronts, contract boards, abilities, XP tuning and more - without writing any Java, by shipping a standard Hytale asset pack: a .zip (or folder) of JSON dropped into the server's mods directory. The engine discovers, loads, and merges your pack at server start.
Pack content lives in two trees, and which one a type belongs to is decided by who owns the engine that reads it:
Server/ZiggfreedCommon/- the shared library types: quests, achievements, achievement categories and point milestones, conversations, NPC placements and identities, currencies, storefronts, shelves, offers, boards, contracts, reward kinds, loot tables and feedback moments.Server/MMOSkillTree/- everything this mod owns on its own: abilities and ability improvements, custom skills, bonus drops, XP maps, mob-kill XP, item and action requirements, boost templates, command rewards, mastery tracks, power-level tuning.
One pack may ship both trees. See ZiggfreedCommon: shared engines & files for the owner's view of the shared half.
Who this is for
- Server owners who want to customize content beyond the admin dashboard, and keep those customizations in a portable pack they can move between servers.
- Content creators shipping quest packs, class packs, or total conversions on CurseForge.
- Translators contributing new languages (see Translation Packs).
What packs can add
Each links to its entry in the Content Type Reference:
- Quests and achievements in the shared format (
Server/ZiggfreedCommon/Questsand.../Achievements), plus achievement categories and point milestones as ordinary files. - Conversations - what a character says.
- NPC placements - one file per NPC under
Server/ZiggfreedCommon/NpcPlacements/, where they stand and what pressing F opens, managed live with/mmonpc list [--arg1=placements|structures|markers|channels] | enable | disable | reconcile. - Currencies, storefronts, shelves and offers and boards of contracts - library types, so a wallet or a shop authored for this mod works for any mod that reads the same library.
- Bonus drops - the extra a broken block or a killed mob hands over, one row per file.
- Custom skills (
Server/MMOSkillTree/CustomSkills) (Since 1.6.0) - Abilities and ability improvements (AbilityMods) (Since 1.6.0), plus gear stats on items via native
MMO_*stat modifiers - Reward kinds - a payout kind of your own, declared as a file with a parameter list and one command line, no Java.
- Shared loot tables - a named table anything can point at, and a way to enrich a table somebody else shipped.
- Feedback moments - what a quest completion or an achievement unlock says, as JSON.
- Mastery tracks, and power-level formula tuning (read by the optional MMO Mob Scaling companion mod).
- XP maps, mob-kill XP, item and action requirements, boost templates, command rewards
- Translations (native Hytale
.langfiles, not a custom type)
What packs cannot add
- Skill-tree nodes (including
SCHOOL_RESIST) - owner config only (skill-tree.jsonoverrides), even though the reward type and the damage schools it targets are otherwise pack-referenceable. - XP tokens - can be tweaked through config, but not created from pack data.
Abilities and custom skills moved off this list in 1.6.0
Server/MMOSkillTree/Abilities/ and Server/MMOSkillTree/CustomSkills/) - see Ability authoring and Custom Skills.Reference packs
Real, production packs you can learn from, each demonstrating a different slice of the system:
MMO Skill Bounty Pack
Contract boards and their bounties, plus storefronts, shelves, offers and wallets. The reference for boards and contracts and for shop authoring.
MMO Skill Quest Pack
Zone quests written from two generators, branching conversations, the NPC placements that carry them, and per-world rules.
MMO Skill Mastery Pack
30 mastery tracks, including seven damage-school tracks, plus its own currencies, mastery-point milestone rewards, quests and achievements, and the Mastery Trainer character it places in the Forgotten Temple. The reference for structured mastery tracks, Abstract bases and MasteryGenerators.
MMO Skill Taming Pack
A feature-gated integration pack: adds Taming XP maps, quests and achievements that stay hidden unless the companion mod is installed.
MMO Skill Stations Pack
Work-station content for the RPG Stations companion mod. It ships the Sawmill; the Anvil, the fish counter and the rest are queued for a later release. The station schema itself is documented with the RPG Stations mod, not here.
MMO Skill Capes Pack
A pure-cosmetic Hytale asset pack: ships the mastery cape items, a custom rarity, and per-locale names. No gameplay logic.
Sample Content Pack
A minimal working example: a manifest, three shared-schema quests (one inheriting from another through Parent), and a language file. The smallest complete pack.
Every pack above ships as a companion download alongside the mod on CurseForge - see Companion Mods & Content Packs for what each one needs installed and the install order.
In-repo examples for abilities and gear stats
AbilityMod that improves an existing ability (Ability authoring) and a gear-stat pack that ships items granting MMO_* stats and a tool with a fortune-style tag stat (Gear stats). Treat them as authoring references, not installable content packs.Quick start
Already shipping a pack? 1.6.0 changed several pack file shapes
Server/MMOSkillTree/LuckLoot became BonusDrops, dialogue SetFlag/Flag/NotFlag became Once and a declared Memories map, the no-op Talk action became MarkTalked, and named world selectors became an inline Where block. Walk your pack through Migrating a content pack to 1.6.0 - a checklist with the full before/after for every break - or run it through the web Migration Converter for a one-click pass.A content pack is a manifest plus JSON under one or both content trees:
MyMmoPack.zip
├── manifest.json
└── Server/
├── ZiggfreedCommon/
│ ├── Quests/MyStudio/Dragons/Dragon_Hunt.json
│ └── Achievements/MyStudio/Combat/First_Blood.json
└── MMOSkillTree/
├── Control/MyMmoPack.json (optional - per-type add/replace mode)
├── XpMaps/MyMmoPack.json
└── BonusDrops/Dragon_Hoard.jsonThe manifest
Only Name is required and IncludesAssetPack must be true. No Main class is needed - this is a data-only pack.
{
"Group": "YourStudio",
"Name": "MyMmoPack",
"Version": "1.0.0",
"ServerVersion": "*",
"IncludesAssetPack": true
}| Field | Type | Default | Description |
|---|---|---|---|
Name* | - | - | Unique pack name; also the key used in your Control file. |
IncludesAssetPack* | - | - | Must be true so Hytale loads the bundled assets. |
Group | - | optional | Your studio / namespace. |
Version | - | optional | Pack version string. |
ServerVersion | - | optional | "*" = any server version. |
Add your first quest
A shared-schema quest is one file, with no envelope and no Id field: the file is the quest, and its id is the filename, lower-cased. Put it in a namespace folder of your own so your files never sit beside somebody else's.
// Server/ZiggfreedCommon/Quests/MyStudio/Dragons/Dragon_Hunt.json
{
"Name": "Dragon_Hunt",
"Text": { "TitleKey": "quest.dragon_hunt.title",
"FlavorKey": "quest.dragon_hunt.flavor" },
"Listing": { "Category": "main", "SortOrder": 10 },
"Objectives": {
"slay": { "Kind": "KILL_ENTITY", "Target": "Trork", "MatchMode": "CONTAINS", "Amount": 5 }
},
"Rewards": {
"Claim": [
{ "Kind": "Mmo_Xp", "Params": { "Skill": "SWORDS", "Amount": "500" } }
]
}
}Rewards holds two lists. Auto lands the instant the quest settles; Claim - the default, used above - waits in the quest log until the player collects it. See the two buckets.
The older path still loads
Server/MMOSkillTree/Quests/<id>.json (and the matching Achievements/ folder) still loads through a compat reader, unchanged - see The older shape. Author anything new in the shared shape above.Install and verify
- Zip the folder so
manifest.jsonsits at the zip root - see Building the zip for the exact packaging rules, including the forward-slash entry-name caveat on Windows. - Drop the zip (or the unzipped folder) into your server's mods directory - the same place MMO Skill Tree itself lives.
- Start the server.
- Look for lines like these confirming the pack loaded:
[AssetPacks] Registered MMO content asset stores
[AssetPacks] Quest pack layer applied (1 entries, mode=add) - N quests effectiveExporting your server's own content as a pack
/mmopacks --action=export --name=<MyPack> writes your server's custom quests and achievements out as a loadable pack zip under packs/ - the fastest way to get a working starting point. Both arguments bind by name only, never positionally. The exporter emits the same shared Server/ZiggfreedCommon/ layout described above, so the result is ready to author further without conversion.Where to go next
- Content Types & Merging - every pack-extensible type, how merging works, the Control file, and feature gating.
- ZiggfreedCommon: shared engines & files - which engines the shared library owns, where its content lives, and the owner files under
mods/ziggfreedcommon/. - Shared Schemas - the one
Requiresgate, prices, reward kinds, and the objective shape every type reuses. - Quests & Bounties, Achievements, and Masteries - full field references.
- Dialogues & placed NPCs - conversations and the characters that carry them.
- Shops & Currencies - wallets, storefronts, shelves, offers, and the files that write a family of offers at once.
- Abilities and Gear stats - the ability and item-stat authoring surface.
- Template Extension - the
extends/paramsDSL the remaining raw-payload types still use. - Publishing & Translations - zip-building, translation packs, cosmetic packs, and security.