MMOSkillTree-1.6.0.jar
What's new
A full rework of how abilities work under the hood, damage schools and stat-composable gear, and a brand-new interactive work stations system with its own companion mod. Every one of the roster's 63 active abilities and 34 triggered passives is now a content-pack-authorable asset instead of hardcoded Java, server owners get a lightweight ability-overrides.json for quick tuning without a full pack, and /mmoability reload pushes an edit live without a restart. Every ability also got a matching sound-and-particle pass - camera shake on the heaviest hits, particles at every impact and tick, and a fresh void-purple makeover for Vanish and Shadowstep. Damage now carries a school: Physical for a plain weapon strike, Fire and Ice as before, plus six more - Lightning, Water, Arcane, Void, Poison, and Life - and your gear can grant bonus damage, defense, and more directly, no content pack required. Press use on a new station block and a standalone companion mod pulls you into a hands-on work loop, starting with the Sawmill for Woodcutting and Crafting XP. Placed NPCs are rebuilt as content too: one file per NPC covering where it stands, which worlds it appears in, and what pressing use on it opens - so the Adventurer's Guide can also be waiting for you inside the Forgotten Temple, with a greeting you only hear the first time. Quests and achievements move onto a shared content format underneath, which is mostly invisible while you play and a large step up for anyone writing content: a reward can be a real item, a loot roll, or a piece of gear that arrives already enhanced, and a step can watch any number the game tracks.
New abilities and combat
- New: 15 new abilities, including your first deployables and summon. Twelve new abilities join the trees: Skyward Leap, Backflip Disengage and Tempest Vault for Acrobatics, Bull Rush and Ground Slam for Blunt, Tempest for Axes, Vortex Lunge for Swords, Javelin Toss for Polearms, and Hookshot Arrow, Explosive Shot, Arcane Lash and Vortex Pull for Archery and Magic - most of them built straight off native Hytale combat moves. Tempest crackles with the new Lightning school, Explosive Shot looses a real arrow whose Fire blast detonates wherever it lands (on a wall, on the ground, or on a clean miss, not only on a direct hit), and Hookshot Arrow's hook yanks its target across real distance, landing with the punch a grapple should have. Archery's new Sentry Turret and Magic's new Flame Totem plant a fighting structure that attacks nearby enemies on your behalf for a while, and Archery's new Summon Wolf calls a temporary wolf ally to hunt hostile mobs (it never targets a player). Kills and XP from any of the three credit you, and so does everything else a kill counts for: quests, achievements, statistics and bonus drops alike.
- New: Frost Stream, a Staves ability. Channel a beam of ice at whatever you're aiming at: it damages and slows for as long as you hold the beam on target, the slow refreshing while you keep the stream on them instead of piling up, and fading out shortly after you let go.
- New: Void Slam, a Staves ability. Leap into a void-charged slam that deals void damage, knocks nearby enemies into the air, and leaves a lingering field of void damage behind where you land.
- New: Guard Stance and Parry Riposte, two Defense abilities on the game's own block and parry hold. Guard Stance readies your stance and shrugs off the stagger of your own blocked hits for a short time; Parry Riposte opens a tight parry window where a well-timed block staggers the attacker and lets you strike back for free.
- New: 8 abilities return to the skill trees, fully rebuilt on the new asset system with their own cast VFX and SFX: Blood Pact (a life-draining rend of everyone in arm's reach), Challenging Shout (roar to pull every nearby mob's aggro onto you), Forest Warden (plant your axe and draw a deep, lingering heal from the earth), Iron Bulwark (brace your shield and knit your wounds closed), Prospector's Focus (steady yourself and empower your and nearby allies' next strikes), Smoke Bomb (vanish in smoke for a two-hit opener), Soul Drain (a draining beam of dark magic), and Wind Dancer (a perfect dodge chains into a devastating riposte).
- New: some enemies can cast abilities too. The same ability catalog players use can be cast by mobs, complete with the real cast sound and visual effects, and one enemy-only ability, Draconic Arcana, ships as its demonstration caster. This changes nothing on its own; it's the groundwork the standalone MMO Mob Scaling companion mod uses to give certain enemies their own signature moves.
- New: damage schools. Every hit now carries one of nine damage schools: Physical (every plain weapon strike), Fire and Ice (already familiar from typed weapons and spells), plus Lightning, Water, Arcane, Void, Poison, and Life. Each school has its own colour, its own bonus-damage and resistance channels for gear and mastery, and its own tooltip line. A pass across the whole ability roster puts frost spells on Ice, arcane spells on Arcane, Tide Caller on Water, and Riftblade on Void, so ability tooltips show the right damage type on every damage, damage-over-time, and zone line. Fire-immune monsters still shrug off fire spells exactly like before, and typed damage still interacts with typed armor the way it always has.
- Improved: more abilities carry a real element. Pyromaniac deals Fire; Wind Dancer and Concussive Reverb crackle as Lightning; the dagger shadow kit (Assassinate, Mark of Death, Shadow Dance, Shadow Pounce, Smoke Bomb) deals Void; the draining pair, Blood Pact and Vampiric Strike, deals Life; and Poison, Thorn Patch and Paralyzing Dart are Poison-school abilities. Plain weapon strikes stay physical. Elemental gear bonuses and resistances now matter for all of them.
- New: school resistance, on the skill tree and on your gear. A skill tree node can grant permanent resistance to any of the nine damage schools, stacking across every node you claim, surviving a relog or a trip through a portal, and removed if you respec. Whatever grants you resistance to a school (a tree node, a weapon or tool's stats, an enhancement roll, a mastery node) adds up on one stat, and the mod keeps a matching resistance on you that the game applies beside your worn armour; armour pieces can carry native per-school resistance directly.
- New: mastery nodes can grant damage or resistance for a whole damage school. A pack's mastery node can now say "+5% Fire damage" or "+4% Void resistance" instead of naming one weapon skill or one ability; the free MMO Skill Mastery Pack ships seven school tracks built on it.
How abilities feel and read
- New: every ability looks and sounds like what it does. Every ability in the roster carries a full set of cast sounds, impact and hit particles, and (on the heaviest hits) camera shake; capstone auras and zones that used to fire silently now show something, and damage-over-time stacks (burns, bleeds, chills) render consistently across every ability that applies them. Landing an empowered strike (Vampiric Strike, Wind Dancer's riposte, Paralyzing Dart, Smoke Bomb's opener, and Assassinate) plays its own consume sound, Smoke Bomb visibly throws its bomb instead of just puffing away, a buff plays a distinct wind-down cue when it expires, bleeding and marked targets are visibly tinted so you can spot them in a fight, buff auras glow on whoever is carrying them, and your own mining buff shows a first-person shimmer only you can see. Vanish and Shadowstep get a matching void-purple makeover: both dissolve you into the same void shroud, Shadowstep adds real invulnerability for the instant of the blink - you cannot be hit mid-teleport - plus a departure burst and a distinct arrival flash and sound at your landing spot, and Vanish's stealth gets a matching void sound. Dozens of smaller touches like these landed across the roster in the same pass.
- New: armed abilities and triggered passives show their own status icon. While a next-hit buff or a triggered passive is active on you, a named icon for it sits alongside your other active effects, the same way a potion's Well Fed or Sickness effect does. More than 30 abilities got a dedicated icon and name for this, and every ability in the roster carries its own unique icon, so two abilities are never mistaken for each other at a glance.
- Improved: Flame Stream pours a real cone of fire. Flame Stream now channels through the game's own crystal flame staff stream, so the spray you see matches the spray that burns, while its damage, your gear and mastery bonuses, and its XP all stay MMO-side exactly as before.
- New: the slam family lands with weight. Concussive Dive, Molten Slam, Rending Slam, and Crippling Slam join Ground Slam in the trees, sharing its weapon-trail arc and impact burst, so every slam telegraphs its wind-up and lands with a matching crack of dust and sound. Molten Slam's pool burns with real Fire damage, Rending Slam's bleed ticks four times (credited to you and awarding XP like any other hit), and Crippling Slam's slow covers exactly the ring its impact draws on the ground, so what you see is what gets slowed.
- Improved: ability tooltips describe what the ability actually does, and look sharp doing it. A tooltip composes itself from the ability's real effect chain (damage, cooldown, cost, on-hit effects, and so on) instead of one hand-written description string, so it never drifts out of sync with the ability's actual numbers. Key stats read in bold, damage numbers are tinted by their damage school, and flavor text reads in italics. Once you've unlocked an ability, its tooltip also breaks your total number down into its base value plus every bonus stacked on top, naming exactly where each one comes from: your gear, skill tree, mastery, or a granted ability upgrade, including gear cooldown reduction and any bonus school or weapon damage your gear grants.
- Improved: passive ability tooltips and claim cards tell you more up front. A triggered passive's tooltip, and its skill-tree card, now leads with the condition that triggers it instead of burying that below the effect. A card offering you an ability to claim, from the skill tree, a quest, or a shop, now shows its cooldown and cost alongside its effect, so you know what you're signing up for before you claim it.
- Improved: clearer feedback when a cast doesn't go through. Trying to cast on cooldown, without enough of the required resource, before it's unlocked, or with your class locked out of it now tells you exactly why, instead of one generic "can't cast that" message. An ability that needs a particular kind of weapon in your hands names the weapon type (or types) it accepts, in your own language, rather than just refusing.
Gear, stats and the damage math
- New: gear that scales your damage and stats. Your defense, crit chance and multiplier, lifesteal, combo damage, fall damage reduction, effect duration, cooldown reduction, luck, and bonus XP can now all be granted straight from an item or a potion effect - a content pack (or a future update) can hand you any of them without touching a line of plugin code. A weapon can also grant bonus damage for a specific skill that boosts both your ordinary swings and any ability that skill powers, and armor can grant bonus damage for a whole damage school that boosts every school-tagged ability you cast.
- New: ability range, radius, damage splash, duration, cost, i-frames, and pierce as grantable gear stats. Seven more ability-specific numbers can now be boosted straight from an item or mastery node, each named on the item's own tooltip, and each capped so a pile of ability-boosting gear can't push a single ability's number to an absurd extreme.
- New: your gear can grant ability upgrades too. On top of mastery, quests, and shop rewards, a piece of armor or a held or offhand item can now grant an ability improvement just by being worn or carried, and a dropped or crafted item can arrive already carrying one from the start - no reward step needed. As a working example, mining a Zephyr gem carries a chance to drop a charm that's already boosting Vortex Pull's pull radius the moment you pick it up.
- New: two granted ability upgrades that change how an ability behaves, not just its numbers. Duelist's Instinct grants the Punishing Dodge passive to whoever holds it - a well-timed dodge arms your next hit - and Tremor Aftershock makes Ground Slam land a second, smaller shockwave. Both are ordinary grantable upgrades an admin can hand out or a pack can attach to gear or a reward, and both show up on your card and tooltip like any other upgrade.
- Improved: enhanced gear boosts your damage-over-time effects. A weapon's rolled enhancement bonuses used to skip burns, bleeds, and poisons entirely; they now feed those ticks the same way they feed a regular swing. Pack authors can switch this off per effect where a specific damage-over-time effect shouldn't scale with gear.
- Improved: every damage bonus stacks through one predictable calculation. All of your damage bonuses - gear, skill tree, mastery - now feed one shared calculation at the moment a hit lands, in one fixed order, and the tooltip breakdown reads from exactly the same numbers the hit uses, including a separate mastery line it never showed before. What the tooltip says is what the hit deals, for swings, abilities, damage-over-time ticks, fields, and beams alike. Stacked percent damage bonuses are also capped now (a generous +3000% by default, on both the cast side and the hit side), so runaway stacking has a ceiling a content pack or server override can tune.
- Improved: ground fields and channeled beams no longer burn through your on-hit effects. A lingering field (like Void Slam's) or a channeled beam (like Frost Stream) used to count as a full weapon hit on every tick against every target: each tick could roll a critical, consume your armed next-hit buff, advance your combo, and set off your on-hit passives, which added up fast against a group. Field and beam ticks still deal their listed damage with all your bonuses applied, but they no longer roll crits, eat armed buffs, advance combos, lifesteal, or trigger on-hit passives per tick, matching how damage-over-time effects already behave.
- Improved: slows, roots and hastes affect players too. A slowing or rooting effect used to hold monsters but quietly do nothing to a player it landed on, and a speed buff never actually changed a player's speed - so Frost Nova's chill read as working while a player target kept moving at full pace, and your own haste buffs never actually sped you up. Every slowing, rooting, stunning and hastening effect in the roster now moves players and mobs alike, at the same strength.
- Improved: stun-locking tapers off. Landing repeated stuns on the same target in quick succession (Shield Bash, Shield Slam, Paralyzing Dart, Berserker Charge) now builds toward a short window of stun immunity, so a target can't be chain-stunned indefinitely.
- New:
ability-clamps.json, the safety rails on stacking. Every ability-boosting number (damage, radius, pierce, lifesteal, and the rest) is clamped per stat by min/max bounds that folded gear and mastery bonuses can never push past. The bounds ship as content a pack can retune, andmods/mmoskilltree/ability-clamps.jsonlets you override just the bound you want;/mmoconfig reloadpicks up an edit without a restart.
Interactive work stations
- New: interactive work stations, and a new companion mod. Press use on a station block to pull into a third-person work view (or sit down, hands-free) and convert materials one cycle at a time for small, steady experience. The station engine is the new standalone RPG Stations companion mod: install it plus the new MMO Skill Stations Pack content pack alongside MMO Skill Tree, and the first station, the Sawmill, pays Woodcutting and Crafting XP. Without both, MMO Skill Tree shows nothing station-related at all, so servers that don't use them never see them. See RPG Stations' own page for what the engine can do.
- New: content packs can add a whole new skill. A pack can add a brand-new skill to the skill tree, its own name, icon, description, and category, the same way a pack already adds masteries, quests, or shop entries. Nothing in this release's own packs uses it yet; it is there for pack authors.
- New: cosmetic flair unlocks. Some rewards (a quest, an achievement, a mastery node) can unlock a named sound-and-particle flourish for a station, purely cosmetic, kept forever once unlocked; server owners can also grant or revoke a flair directly.
- Improved: experience notifications stack while you work a station. Rapid experience gains from the same skill during a work session collapse into one updating banner instead of a stack of separate popups, matching how picking up a stack of items already looks. Outside a station session, notifications behave exactly as before.
The world, its people and its quests
- New: placed NPCs are one system, and content packs own them. Where an NPC stands, which worlds it stands in, whether it appears at all, and what pressing use on it opens are a single file now, handled by one engine for the Adventurer's Guide, every quest giver, and anything a pack places. An NPC can stand at world spawn, at coordinates you pick, beside a village or camp the world generated, or where a player first discovers a zone. Seven separate mechanisms and a hard-coded special case for the guide are gone, so a pack can place an NPC that behaves exactly like the built-in ones.
- New: the Adventurer's Guide is waiting in the Forgotten Temple. Take the temple portal and you'll find the guide there too, with a greeting you only get on your first visit. A new quest sends you to meet them. Placed NPCs can now stand inside instanced worlds at all, which the old world lists could not express: an instance gets a fresh, throwaway name every time it is created, so the system identifies a world by what it IS rather than what it happens to be called that run.
- New: an arc waiting at the temple. Beyond the meeting itself, the guide down in the temple has work only they can hand out: clear the rubble for worked copper, thin the Trork off the stair, and - once your total level reaches 150 - earn the keeper's vestments. A daily offering at the stones refreshes each day and pays a different way each time. Five pieces of gear come out of it that no bench can craft: a delver's pick, two blades, and the keeper's robe and hood, which trade a little health for luck and bonus experience.
- New: the same NPC in two places serves the same quests. The guide in the temple offers, credits, and takes turn-ins for the guide's quests exactly like the one at spawn, because it is the same character. A quest aimed specifically at the temple still only counts there, and a tracked quest that either of them can serve marks both on your map.
- New: a Quest Book. A second tutorial item joins the Skills Menu Scroll: use it to open your quest log directly. It's granted the same way as the Menu Scroll, so if you've already done the tutorial you'll pick one up the next time you earn (or re-claim) that reward.
- New: conversations remember things properly. A first-visit greeting is a one-line "show this once" switch, optionally once per world so it stays spent across an instance being torn down and rebuilt. Anything else a conversation should remember about you is declared up front with its own lifetime, including "forget this when that quest resets" so a quest reset can never leave a dialogue stuck on a line it should have moved past.
- New: dialogue options and NPCs can check the game's own numbers. A shared vocabulary lets pack content gate a dialogue option, or a whole NPC's appearance, on a stat, a held item, or the quality of the tool in your hands, with no plugin code. The same names work at a work station, where they read the tool you're working with rather than what you happen to be holding.
- New: a quest step can watch any number the game tracks. Alongside "reach level N", a step or criterion can wait on any registered stat, including one another mod owns, so a pack can build a step out of a number this mod never had to know about. "Reach level N" keeps working exactly as before and reads identically in game. Two more of your own numbers, your total level and your highest single skill level, join your combat level and per-skill levels as readable everywhere: a loot chance, a content gate, mob scaling, or a work station.
- Improved: a finished quest waits for you to collect its reward. Finishing a quest still settles it the moment its steps are done, but the reward now sits waiting in your quest log until you come back for it, instead of landing in your inventory the instant you finish - the same way a bounty board contract, or any quest bound to a specific hand-in spot, has always worked. Your very first quest and the three Kweebec Nightmares dailies (which pay out inside the round itself) are the exceptions and still hand the reward over immediately.
- New: a repeatable quest says in one place how it comes back around. Writing the repeat block at all is what makes a quest repeatable, and what holds it back is written beside that: a rolling wait (a day, a week, half an hour), a calendar allowance (once a day, twice a week), a lifetime cap, or any combination, all of which have to pass. The rolling wait runs from the moment the rewards are actually claimed, so a finished quest parked unclaimed at an NPC has not started counting yet; content that would rather measure from the moment the last step ticked over says so with one word. A quest that names none of them is one whatever offers it decides on, which is exactly how a rotating Bounty Board contract works: it re-arms with the board's own rotation.
- Improved: achievements land the moment you earn them. Achievement progress and unlocks are worked out on the spot rather than by a background pass, so a criterion ticking over, an unlock, and its rewards all arrive in the same instant as the action that earned them.
- Fixed: an achievement a pack gates on a feature stays hidden when that feature is off. Taming and mastery achievements could appear and collect progress on servers without Tamework or with mastery switched off; the gate a pack writes is honored now, the same way a quest's is. A pack can also state outright whether an achievement counts toward your point total, rather than that being implied by whether it is a feat of strength (a feat still never counts).
- New: a shop or bounty board shows every wallet it deals in. The balance at the top of a storefront or bounty board was always bounty tokens, even on a board that priced things in something else. A pack now lists which currencies a page shows, and they appear side by side as icons with your balance, so you can tell at a glance what you can afford before you start browsing. The XP Exchange and the general shop both show bounty tokens and life essence now, and the daily bounty board shows both too, since one of its contracts asks you to spend essence.
- New: a quest or an achievement can pay you almost anything. A reward used to be one of a fixed handful of kinds. It can now be a real item (shown with its own icon, name, count, and in-game tooltip), a roll on a shared loot table, a piece of gear that arrives already carrying rolled stat bonuses, a lasting effect, or a drop-table spill at your feet - and the same list works everywhere rewards are handed out, from quests and achievements to point milestones, shop offers, bounty crates, and conversations. A companion mod can add its own kind of reward and content can pay it out with no update here, and a server owner or pack author can define a whole reward kind outright in a file - a name, the parameters it takes, and the command it runs - with no code at all.
- Fixed: a reward that would not fit no longer vanishes. Every claim now checks that a payout actually fits before anything is charged, and refuses cleanly if it doesn't, instead of overflowing or quietly disappearing. A full backpack with a free hotbar slot correctly receives a single-stack reward that used to be turned away.
- New: bonus drops, for blocks and mobs alike. A lucky find in a broken block and an extra drop off a killed mob were two separate things to set up; they are one now. A single file says which moment it answers for (breaking a block, or killing a mob), which block or mob it covers, how likely it is, and what it hands over - and what it hands over is the same vocabulary a work station's rare find and a quest reward already speak, so a shared loot table, a drop list, an exact item, a command, or a reward all work here. Whatever falls spills where the moment happened, beside whatever fell there anyway, with none of the game's own drop tables touched. A conservative Trork kill bonus ships on by default as a worked example, and every built-in lucky-ore find is now a readable file you can retune the same way. Naming a block or mob is a pattern, so one row can cover a whole family (
*Trork*) while a second row covering one member of it (*Trork_Chieftain*) takes over for that one - the more specific row always wins. - New: bonus drops can read what another mod knows. With the standalone MMO Mob Scaling companion installed, a bonus drop's odds can weigh a mob's rarity, its affixes, its difficulty, or how dangerous the region it died in has become - so an elite can be worth more without either mod knowing about the other. On a server without that mod the reading simply is not there, and the drop behaves as though it had never been mentioned.
- New: a bonus drop can announce itself, in your language. A find can put a short note on screen when it actually lands, with its own colour, icon, and wording taken from translation keys rather than baked-in English. It is off unless a drop asks for it, which keeps something rare feeling rare.
For content authors
- New: abilities are content-pack material. Every active ability and triggered passive ships as its own asset file, so a content pack can author a brand-new ability or override an existing one for the first time, layered the same way every other MMO Skill Tree content type is (built-in default, then a pack, then your own server-side tweaks). A pack can also build a variant of an existing ability - a themed reskin, a retuned cooldown - that inherits everything it doesn't explicitly change, instead of copying the whole thing.
- New:
ability-overrides.jsonfor quick server-side tuning. Want to retune one ability's cooldown, cost, or damage without building a whole content pack?mods/mmoskilltree/ability-overrides.jsonlets you change just the fields you care about; everything else about that ability - its cost, its effects, its sound and visuals - stays exactly as authored. - New:
/mmoability reload. Push anability-overrides.jsonedit (or a pack update already on disk) live with/mmoability reload, no restart required. Dropping a brand-new zipped pack still needs one. - New: content packs author quests and achievements in one shared format. Both live at
Server/ZiggfreedCommon/Quests/...andServer/ZiggfreedCommon/Achievements/..., in folders you organise however you like, with one file per quest or achievement named after its id. A file can inherit from another and change only what differs, a title can name a number that follows a rebalance instead of being typed in twice, an item can belong to several chains at once, and one generator file can stamp out a whole family of near-identical quests. Every quest and achievement this mod ships is authored that way now, so any of them can be read as an example and overridden by id. Older pack and server files keep working unchanged:CONTENT_PACKS.mdhas both shapes. - New: every quest and achievement notice is a file you can edit. The progress tick, the green "Objective complete", the yellow "Quest complete" and its jingle, the parked-quest notices, the golden achievement unlock toast (with the achievement's own picture) and its server-wide banner, the claim chimes, and the quiet "somebody beat you to it" note for a server-first race are each one small file inside the mod, under
Server/ZiggfreedCommon/FeedbackMoments/. Reword one, recolour it, swap its sound, silence it, add a server-wide banner, or make it run a console command, by dropping a same-named file in a content pack; nothing about them changed in play. Your per-player quest notification setting still decides which of those toasts you personally see. Servers without any of this mod's content still get a plain default set out of the box, from Ziggfreed's CommonLib itself. - Improved: a mastery node's effect line is written for you, in your language. The card under each mastery node describes exactly what its modifiers do - every stat the mastery system can touch has a proper name in all nine languages, so no node falls back to raw English text in a translated client.
- New: content can depend on another mod being installed. A pack quest, achievement, dialogue option, drop or NPC can require (or exclude) a named mod, and the MMO simply hides it when that mod is not there. The free MMO Skill Quest Pack uses it for a Kweebec Nightmare chapter that only appears when Kweebec Nightmare is installed, and Kweebec Nightmare rounds now count for quests and achievements (per preset, every party member credited).
- Content packs: the free MMO Skill Quest Pack ships its first release alongside 1.6.0, the MMO Skill Stations Pack is new with the stations system, and the MMO Skill Bounty Pack, MMO Skill Taming Pack and MMO Skill Mastery Pack all update for it. See each pack's own page for what it adds.
Admin and tools
- New: the admin menu becomes a hub of focused pages.
/mmoadminopens a compact hub routing to six section pages (General, Command Integration, Leveling, Boost Limits, Rested XP, HUD & Abilities) beside every per-config editor, with the theme picker finally reachable from a button. Two brand-new editors join the family: World Rules (list, toggle, edit and reset your per-world rules, including a new per-rule on/off switch) and Power Level (every clamp, pillar and mode weight editable per leaf, each row showing its default beside your override). The quest and achievement on/off switches move onto a shared Progression Systems page provided by CommonLib, where every progression switch a mod registers lives together; a flip applies immediately, and a hint names the staff bypass permission. - Improved: the whole admin family is honest, audible, and translated. Every admin editor was audited page by page this cycle: several actions that could crash or disconnect the admin (or leave the client on an endless loading screen) are fixed, silent buttons click, toggles keep their state's colors on hover, editing a command reward no longer discards its description and flags, the custom-skill wizard no longer corrupts sparse skill trees or duplicates a skill on an id edit, the Award Boost page's Production column actually targets Crafting, Misc skills (Taming, Building) gain their missing tab on the boost pages, the White Label master switch truly turns the accent recolor off, and the theme picker says when a premium selection is not actually painting. Every admin page now speaks all nine languages.
- Improved: the in-game Configuration Guide covers the whole surface. Eleven new cards (quests, achievements, abilities, mastery, world rules, power level, HUD layout, themes, NPC placements, presets, content packs) with working settings shortcuts, the drifted Mob Drop Commands and Boost Templates topics rewritten to match how the mod really works, and config presets now export and re-import 25 config surfaces instead of 12.
- New:
/mmoability unlockalland/mmoability lockallfor admins. Want to try the whole ability roster without levelling into it first?/mmoability unlockallunlocks every ability for yourself; add--arg1=activesfor just the ones you can bind to a slot, or--arg1=passivesfor just the triggered passives./mmoability lockallputs it back, and it is safe to run on a character you actually play: anything earned from a claimed skill-tree reward stays unlocked, and only the test grants are stripped (along with any slot they were bound to). Unlocking is not a bypass, either. An ability that wants a particular weapon, class, or level still checks that when you cast it. - New:
/mmonpctells you what should be standing where, and switches any of it off./mmonpc listshows every NPC that targets the world you're in, whether it is actually standing, and the reason for anything that isn't./mmonpc disabledespawns one on the spot and keeps it gone across restarts,/mmonpc enableputs it back, and/mmonpc list --arg1=structureslists the generated villages and camps in the world so a pack author can anchor an NPC to one./mmonpc list --arg1=markersscans the spawn markers actually standing in the loaded chunks around you, so comparing the two pins down where a missing NPC went wrong, and/mmonpc list --arg1=channelsshows which mod claimed each extension point, which is how you tell a typo apart from a missing mod. - Improved: the quest and achievement admin commands share one engine with CommonLib.
/mmoquestadmin,/quest, and/mmoachadminkeep their names, arguments, permissions and wording; the same verbs are also reachable as/zigprogress quest <verb>,/zigprogress achievement <verb>and/zigprogress memory forget <player>, so a script may use either spelling. The/zigprogressfamily's two groups read the same way on purpose:givestarts a quest or grants an achievement regardless of gates,claimcollects what is waiting (--achievement=allcollects everything at once, the way--quest=allalready does),resetwipes one or all on both, and bothstatusverbs take the same one-id filter. Two small changes you may notice:/mmoquestadmin giveand/quest acceptsettle a step the player already satisfies the moment the quest is taken on, and/mmoquestadmin reset <player> <questId>clears a quest record the catalogue no longer knows instead of refusing it. - Improved: the on-screen quest tracker updates the instant something changes. The tracked-quest panel repaints the moment you accept, progress, finish, claim, abandon, pin or unpin a quest, instead of on a timer, and
/mmohud hide questandshow questtake effect at once. It looks exactly as it did, its position and the admin on/off switch are unchanged, and it never fights another mod's HUD. - Improved: one action, one credit. A block you break, a mob you kill, an item you craft or pick up, and a block you place are each seen once and handed to everything that cares (XP, statistics, quests, achievements, bonus drops), so nothing is ever counted twice, and a block you placed yourself and broke again earns nothing anywhere: no XP, no statistic, no drop, no quest progress. Two small things you may notice: a placement the game cancels earns no building XP, and a block placed in creative mode earns no building XP and advances no place-block objective.
- Improved: a locked mastery node or class advancement lists everything you still need. The node's detail panel and a refused class advancement name every unmet requirement, one per line, instead of only the first one, so you can plan toward a heavily gated node without clearing them one at a time to see the next.
- New:
/mmomigrate, an upgrade helper built into the server. Coming to 1.6.0 from an older version? Run/mmomigratefor one plain-language report of every older-format file the mod found: what it already converted for you at startup, what it can convert in place for you (run/mmomigrate --action=owner --confirm=yes, with automatic backups), and what needs your hand, with the exact shape to write quoted for each. Your content packs are scanned too, and the report points you at the web Migration Converter on the docs site to convert a pack in your browser; your files never leave your machine either way.
Fixes
- Fixed: passive abilities showed a raw text code on their card. On the Abilities page, every passive ability's card printed an internal id where its label should have been, because the label was never filled in for any language. Those cards read PASSIVE now, in all nine languages, alongside the locked / selecting / bound labels the other cards already showed.
- Fixed: burning pools and bleeds train the right skill. Lingering damage an ability leaves behind (Hemorrhage's bleed, Riftblade's lingering damage, and every other damage-over-time or ground zone an ability creates) awarded Magic XP no matter which skill cast it. That damage now trains the ability's own skill, so Hemorrhage's bleed trains Daggers.
- Fixed: skill mastery damage was counted twice on ability casts. A weapon mastery's damage bonus (Swords Mastery's +8%, for example) applied once when an ability was cast and then again when the hit landed, so ability casts got more than the stated bonus, and the endlessly repeatable Eternal node compounded the error with every purchase. It now applies exactly once, on every hit of that weapon skill, ordinary swings and ability casts alike. This is a correctness fix, not a rebalance: a build that leaned on the doubled bonus will read lower ability damage now.
- Fixed: Meteor's mastery damage nodes actually raise its damage. They only reached direct-hit damage, and Meteor deals its damage as a zone over time, so buying them changed nothing; mastery and skill-wide damage bonuses now reach zone and damage-over-time damage too (which also lets them reach Soul Drain). Meteor's endlessly repeatable damage node was also being silently dropped on load and works now.
- Fixed: Piercing Shot's pierce mastery node grants its extra targets. The node only added pierce to an ability that had none, and Piercing Shot always had some, so it did nothing; it now adds to the base amount.
- Fixed: Shield Bash's impact lands on the enemy you hit. The bash's impact flash used to anchor on you, the caster, instead of on the target; it now plays right where the shield connects, and stays quiet on a whiff.
- Fixed: Flame Stream's fire jet renders correctly when cast bare-handed. Channeling without a staff in hand used to spray fire from an odd, disconnected point; it now streams from your hand, matching how it looks when you're holding a staff.
- Fixed: drinking a Shadowstep potion actually teleports you. The potion could go down and apply its cooldown without the teleport firing; drinking one now reliably blinks you to where you're aiming, every time.
- Fixed: ability names, status badges, and tooltip text are translated in all 9 supported languages. A round of new ability and status-icon text had been showing in English only on non-English servers; every language now carries the full set.
- Fixed: skipping a quest through dialogue credited nothing else. Finishing a quest the quick way (a conversation's "skip" option, the onboarding page, or an admin completing it for you) paid the rewards but never counted toward anything that was watching, so an achievement chain, another quest's "complete this quest" step, and the bounty tail all silently missed it. Those completions credit like any other now.
- Fixed: an authored
/givecount is delivered in full. A reward or drop command written/give Bob Wood_Planks 32handed over a single plank, because the engine's own command wants the count named. Every command this mod runs delivers the full amount now, whichever way the count was written.
Community bug fixes
A sweep of fixes for issues reported on the community Discord:
- Fixed: turning the quest tracker HUD off sticks. Disabling the quest HUD in the admin menu no longer comes undone on the next server restart.
- Fixed: the "Claim Items!" badge tells the truth. Skill cards no longer show a claim badge when the rewards screen has nothing you can actually claim, and a reward tier you already collected no longer keeps its collect button (an issue that mainly hit servers with custom skills).
- Fixed: daily bounties reset properly at rollover. A bounty you completed yesterday no longer shows as "Completed" when the daily rotation happens to pick the same contract again; it's ready to accept fresh.
- Fixed: quest names show as authored. A quest given a custom name no longer displays its first objective's text as its title everywhere.
- Fixed: turn-in dialogue options check your bag. An NPC no longer offers "hand it in" when you don't actually have the required items on you, then does nothing.
- Fixed: the tutorial gathering quest completes. The "gather stone" step now counts the rock you actually mine, and boar-hunting objectives count baby boars too (your own tamed animals still don't count).
- Fixed: the Adventurer's Guide stays put. Returning from an instance (like the Forgotten Temple) no longer teleports your placed guide NPC or spawns a duplicate, a missing guide is re-placed automatically, and the guide and other service NPCs can no longer be killed by unusual damage sources.
- Fixed: batch crafting counts toward quests and achievements. Crafting 10 at once counted as a single craft for quest objectives, achievement criteria, and your crafted-items statistic, so a "craft 10 planks" step needed ten separate clicks. A batch now counts every item it produced. Crafting experience is unchanged: it is paid per craft action, so batching stays a convenience rather than a faster way to level.
- Fixed: switching off a single built-in quest sticks. Turning one quest off by id in your own quest file (the starter tutorial chain, for example) no longer quietly comes back on at the next load. The quest system itself stays on: only the quests you switch off go away.
- Fixed: shop categories always show a readable label instead of a raw internal name when a custom category has no translation.
- Fixed: opening the bounty board, shop, or quest menu for a player from the console (or an NPC command) works no matter which world that player is in.
- Fixed: permission nodes match the documented commands. A handful of commands checked a differently-named permission than the one servers could actually grant; the full permission node list is now documented on the CurseForge page.
- Fixed: talking to an NPC while a second dialogue mod is installed no longer disconnects you. Two mods that both put conversations on NPCs each claimed the same slot at startup, and whichever loaded last took it - so every conversation on the server, including the other mod's, was read against the wrong mod's language file. Every line came out blank or as a raw key, and a missing line dropped you to the loading screen and took the world down with it. Conversations do not belong to one mod any more: a line reads in the language file of whoever wrote it, whichever character you are standing at, and a line with no translation behind it now simply shows the key so it can be fixed instead of ending your session.
- A character can carry its own farewell, and only mentions your quest if it should. A conversation says which note it shows under the speaker's name - your current step on a quest that character gave you, or nothing at all, so a shopkeeper stops advertising a quest they had no part in. It can also give the "Farewell" line and the nothing-to-say line its own words, which is how the Grove Warden goes on saying "Step away" while the Adventurer's Guide says "Farewell".
- Fixed: the Boosts, Quests, Achievements, and Abilities screens have breathing room again. Those pages drew their content hard against the menu's outer border while the Overview screen sat comfortably inset, so they read as cramped and their side panels looked welded to the frame. Every one of them matches Overview now.
- Fixed: the Mastery entry is on the achievements screens too. The achievement overview and an achievement's detail view were the only menu screens missing Mastery from the left-hand list, so getting there meant backing out to another screen first. It sits between Abilities and Settings on both now, and hides itself when mastery is switched off, exactly as everywhere else.
- Fixed: custom skills you create in-game keep their names. A custom skill made with the in-game creator showed its name as raw text like
mmoskilltree.skill.myskillon every screen after a server restart, and only a hand-made language file could patch it. It now always shows exactly the name you typed, and a server already affected is fixed just by updating: no file edits needed. - Fixed: editing a custom skill no longer disconnects you. Stepping an existing custom skill through the in-game editor kicked you to the loading screen at the reward steps every time, which also made rearranging your trees impossible; the whole edit flow works again.
- Fixed: the custom skill editor reads properly. The editor's titles, step headers, and its Next/Finish buttons showed raw placeholder text instead of words; they now read correctly in all 9 languages.
- New: you can choose the order your shop categories appear in. Shop categories used to be listed alphabetically, so "rare" landed ahead of "uncommon" and there was no way to change it (an offer's own
orderonly sorts offers inside one category). Name the sequence you want withCategoryOrderon the storefront (a server owner writes the same leaf by storefront id inmods/ziggfreedcommon/shops.json), and any category you leave out follows the ones you named. Leave it unset and nothing changes. - Improved: damage achievements count damage. A "deal 50,000 damage" achievement now counts the damage your hits actually land (after the target's defenses), which is the unit its numbers were always written in, instead of quietly counting the number of swings. The lifetime damage-dealt statistic on your statistics panel becomes true damage too, side by side with damage taken, which always was.
- Fixed: renaming yourself no longer costs you your leaderboard spot. The leaderboard remembers players by who they are rather than by their current name, so a renamed player keeps their totals under their new name instead of leaving a ghost row behind - and a newcomer who happens to pick a name somebody else once used no longer inherits that stranger's position. Existing boards tidy themselves up on the first start after updating.
- Improved: offline XP commands refuse a name nobody owns.
/bulksetxpaimed at an offline player now resolves who that name belongs to before queueing anything, and tells you out loud when no player by that name has ever connected - instead of filing an XP change that would have been delivered to whoever registered that name next. Anything already queued the old way is carried across once on first start. - Improved: a clear message when the companion library is outdated. Booting with a stale ZiggfreedCommon jar now fails up front naming the required version, instead of a cryptic class error mid-load.
- New: CozyTales Fishing integration. Run CozyTales Fishing alongside this mod and every catch trains your Fishing skill and counts toward fishing quests and achievements: the rarer the fish, the bigger the payout, plus a bonus the first time you land a species. Detected automatically at startup, like every optional integration. Server owners can retune each payout (or switch one off) in
xp-maps.json's FISHING block. The adapter was contributed by CozyTales Fishing's own author.
Migration notes
- Required if you run your own server: 1.6.0 needs a Hytale Update 6 (0.6.x) server. The mod does not load on an Update 5 server, so update the server first, then drop in the new jars and packs together.
- Automatic, no action: the old "usable block" flag retired with Update 6. Every pack shipped by this project is already updated. A third-party pack still carrying the old flag keeps working - its blocks stay usable, since pressing use on a placed block is driven by the block's own use interaction now - and the server logs one harmless warning per affected asset naming the unused key; the fix is deleting that one line from the pack's block file.
- Worth knowing: both upgrade tools report the retired flag. The in-game
/mmomigratechecker and the web Migration Converter each name every pack file still carrying it, with the same one-line fix, so you never have to hunt for the line yourself. - Required if you customized abilities: re-author your changes. The old
mods/mmoskilltree/abilities.jsonformat is retired. On first start after upgrading, anyabilities.jsonfound on disk is moved (never read, never deleted) to a timestamped backup undermods/mmoskilltree/backup/, and the server logs a warning pointing you at the replacement. Re-create your customizations as entries in the newability-overrides.json(for a simple field tweak) or as a content-pack ability asset (for a full rework); seeCONTENT_PACKS.mdfor the ability-authoring format. - If your
ability-overrides.jsonoverrides an ability's effect chain: re-author it asBody. AnEffectskey inside anability-overrides.jsonentry is now a load-time error naming the replacement field,Body- abilities compose their whole cast chain (targeting, damage, effects) as one native chain now, referenced by a singleBodyid, instead of an authoredEffectslist. A cooldown/cost/presentation-only override needs no change. - A handful of abilities changed damage type. Frost abilities (Frost Nova, Frostbite) now deal Ice damage, Tide Caller now deals Water damage (matching its tidal-wave fantasy), arcane abilities (Arcane Missiles, Arcane Resonance) now deal Arcane damage, Riftblade now deals Void damage, and Soul Drain now deals Life damage (the drain school) - a few of these previously fell back to plain, untyped damage. Fire-immune monsters still resist fire spells exactly as always, and typed damage still interacts with typed armor the way it always has.
- Required if you customized NPCs:
spawn-hub.jsonandquest-givers.jsonare retired. On first start after upgrading, both files (and the internalspawn-hub-placements.jsonregistry) are renamed in place with a.legacysuffix - never read, never deleted - and the server logs one message naming the replacement. Placed NPCs are content now, authored atServer/ZiggfreedCommon/NpcPlacements/<id>.json, and the only owner setting left is the on/off switch inmods/ziggfreedcommon/npc-placements.json, which/mmonpc enableand/mmonpc disablewrite for you. If you only ever used the defaults, there is nothing to do: the built-in guide and every pack's quest givers ship as placements. If you customized the guide's position, facing, or worlds, re-author those values in a placement file;CONTENT_PACKS.mdhas the shape. - Required if you wrote per-world rules: replace
MatchwithWhere. A rule picks its worlds with aWhereblock now, holding either a world-name pattern ("Where": { "Match": ["*Dungeon_*"] }, the same wildcard grammar as before; a bare word is an exact world name) or the world's own stableGameplayConfigkey. A rule still carrying the old flatMatchstring matches no world at all, so it is doing nothing until you rewrite it; the server logs one warning per affected rule at startup quoting your old value and printing the replacement to paste in. Nothing about how rules are prioritized changed. - Check your file if you wrote per-world rules: the gameplay knobs move into a nested
Rulesblock. What a rule changes in its worlds (the XP multiplier, the ability and combat toggles, the skill lists) sits in one"Rules": { ... }block besideWherenow. A rule still authoring those knobs flat at its top level keeps working this release, with one startup warning per rule naming the block to move them into (where a knob is written both ways, the nested one wins)./mmomigrate --action=owner --confirm=yesmakes the move for you with a backup taken first, in the same pass that rewrites a flatMatch; the web Migration Converter does the same for an uploaded folder or pack. - Required if another plugin listened for achievements. The achievement listener registry is removed, not deprecated:
MMOSkillTreeAPI.addAchievementListener,removeAchievementListener,fireAchievementEvent, and thePlayerAchievementEventpayload are gone, and a plugin calling any of them will not compile against 1.6.0. Achievement moments are ordinary Hytale server events now, so a listener registers them the way it registers any other event and needs nothing fromMMOSkillTreeAPI:AchievementProgressedEvent(a criterion advanced),AchievementUnlockedEvent(it was earned), andAchievementClaimedEvent(the rewards were paid), all in ziggfreed-common'scom.ziggfreed.common.achievement.eventpackage, which every server running this mod already loads. Each names the player by UUID and carries the achievement's category, subcategory, and its server-first and feat-of-strength flags, so a listener can tell what kind of achievement moved without asking this mod. The running point total the old payload carried is read on demand withMMOSkillTreeAPI.getAchievementPoints, which is unchanged, and every other achievement read on the API is untouched. XP listeners are unaffected. The full before-and-after recipe ships in the mod's own sources atapi/src/main/java/com/ziggfreed/mmoskilltree/api/events/package-info.java. - Automatic, no action:
luck-loot.jsonbecomesbonus-drops.json. Your file is folded into the new one on first start, with every override carried across - a row that named a drop still names it, a row that stated its own odds still states them, and a pattern you switched off is still switched off - and one startup line per row naming what it became. The old file is moved into a timestampedbackup/copy rather than deleted, and anything you had already written inbonus-drops.jsonyourself wins over anything carried in. Each row says which moment it answers for, breaking a block or killing a mob, which is what lets one file cover both. What it hands over is a shared loot table, a drop list, an exact item, a command, or any reward kind, and its odds are optional - leave them out and a block row behaves exactly as before, at your own luck."__DISABLED__"still switches a built-in row off. (If you ran a development build of this cycle and have amob-drops.json, it is folded in on the same pass, the same way.)mob-drop-commands.jsonis untouched and still handles the simple "run a command when this mob dies" case. - Worth knowing:
/mmoconfig trimno longer has a luck half. Trimming existed to strip an override that only restated a built-in value, and the built-in luck rows are ordinary files you override one leaf at a time now, so there is nothing left to be redundant against. XP trimming works exactly as before./mmoconfig difflists your bonus-drop rows by name instead, and/mmoconfig export/importcalls that configbonus-drops. - Check your file if you customized mob drop commands:
mob-drop-commands.jsonmoves to version 4. A pool'sdelayis no longer read, so a pool's commands all run immediately in the order you wrote them; a file still carrying the field gets one startup warning naming it.requiredTieris removed outright - it was dead, silently disabling any pool that set it, because the built-in elite mob system it keyed on went away in 1.5.0 and mob difficulty lives in the standalone MMO Mob Scaling mod. Existing files are converted in place and the admin page drops both inputs. - Read the startup notice if you have queued offline rewards.
pending-quest-rewards.jsonis replaced bypending-rewards.json, filed by player UUID only. Your file is drained into the new one on first start and retired to a timestamped backup, with one notice naming what moved and what did not. A reward queued under a player NAME cannot be carried across, because a name is not an identity; those entries stay in the backup and the notice names each one, so hand them out yourself or have the player join once and re-run the command that owed them. From now on, completing a quest for a player who has never connected to this server refuses out loud and queues nothing, instead of filing a reward nobody can ever collect. A player who has connected before but is offline still queues, and still receives it on next login. - Automatic, no action: your quests and achievements move across. Everything a character had (active quests and their progress, completed quests and their cooldowns, tracked pins, repeat counts, earned and claimed achievements, criterion progress, point milestones, pinned achievements) is copied once, the first time that player connects after the update, onto the record the shared quest and achievement engines read, with one startup line per player naming the move. Nothing is asked of you and nothing is lost; a returning player keeps their quests, is not re-offered the tutorial, and their pins are where they left them.
- Required if you customized the economy:
currencies.json,bounty-board.jsonandtoken-shop.jsonare retired. Wallets, storefronts, rotating shelves and bounty boards belong to CommonLib's shared economy now. Each present file is renamed in place with a.legacysuffix on first start (never read, never deleted) with one startup message naming the replacement: the content lives atServer/ZiggfreedCommon/{Currencies,Shops,ShopPools,ShopEntries,Boards,Bounties}(a pack authors it, and the free MMO Skill Bounty Pack already does), your own overrides go beside them inmods/ziggfreedcommon/currencies.json,shops.json,shop-pools.jsonandboards.json(write only the leaves you want changed, by id), and/zigcommercereads and edits what a player holds. Every player's balances, lifetime spends and per-offer purchase counts move across once, at their first login after the update; a rotating shelf's reroll allowance is reset for the current period rather than carried./mmocurrency,/mmoshopand/mmobountykeep working as aliases. - Worth knowing if you run the optional shared-database backend. Quest and achievement state is stored under one
PROGRESSdomain now instead of the two olderQUESTSandACHIEVEMENTSdomains; nothing reads or writes rows filed under the old names again, and if your database still holds rows under those two old domain names, the database backend refuses to come up rather than run each player's one-time migration against empty legacy state and strand the real data. The startup log names how many rows it found and asks you to export or delete thoseplayer_datarows by hand first; until you do, the defaultdbDownPolicyofrefuse_loginsturns players away at the door, andfallback_to_ecsruns the server on the world save instead. The database backend shipped dormant before this release, so a database in that state is not expected to exist. Because the state itself lives in the world save and moves across by the one-time migration above, no player loses anything whichever backend you run. - Worth knowing if you wrote your own achievement announcements:
announcementCommandis retired. How an announced achievement's server-wide banner is drawn is authored once, for every achievement, in theAchievement_Unlockednotice file described above; an achievement file still carryingannouncementCommandgets one startup warning naming the replacement (aCommandon that notice file, or a per-achievement variant of it) and the leaf is otherwise ignored. - Automatic, no action:
elite-mobs.jsonis retired. It has done nothing since 1.5.0, when the built-in elite mob system was removed. It is retired with one notice at startup, never read and never deleted. - Automatic, no action:
placed-blocks.jsonis retired. Remembering which blocks a player put down themselves belongs to the shared ziggfreed-common library now, and its ledger lives atmods/ziggfreedcommon/placed-blocks.json. One ledger answers for XP, statistics, quests and achievements, so they can never disagree about whether you placed a block yourself and then broke it. Your oldmods/mmoskilltree/placed-blocks.jsonis renamed with a.legacysuffix on first start, never read and never deleted, with one startup notice naming the replacement. Blocks placed before the upgrade are not carried across. For one expiry window after upgrading - however longplacedBlockExpireMinutessays - a player can break something they placed before the upgrade and be paid for it; place it again and it is remembered as usual, and after that window nothing is different. Every knob stays where it was, inskill-config.json:trackPlacedBlocks,strictPlacedBlockCheck,placedBlockExpireMinutes,placedItemExpireMinutes. - Automatic, but stop editing them: the three
_defaults/reference files are retired.quests/_defaults/default-quests.json,achievements/_defaults/default-achievements.json, andachievements/_defaults/default-point-milestones.jsonwere rewritten from the plugin on every start and read straight back in, which meant a stale copy of a built-in could outrank the real thing forever. Each is renamed to.legacyon first start with one notice naming its replacement, and never read again. The built-ins are readable inside the mod jar now (Server/ZiggfreedCommon/Quests/MMOSkillTree/,Server/ZiggfreedCommon/Achievements/MMOSkillTree/,Server/ZiggfreedCommon/AchievementMilestones/MMOSkillTree/), and you override one exactly as before, by putting a file with the same id inmods/mmoskilltree/quests/ormods/mmoskilltree/achievements/. - Required if your content pack authored a dialogue
Talkaction. The no-opTalkaction and its option shorthand are gone, so a file still authoring"Talk"fails to load and says so rather than quietly doing nothing. Credit a conversation explicitly withMarkTalkedinstead ({"Type": "MarkTalked"}credits the NPC you are talking to, aliases included; aTargetnames a specific one). There is no implicit talk credit left anywhere, and an NPC with no conversation at all credits through the newZigTalkCreditaction on its own role. - Worth knowing if your pack gates achievements: the gate is honored now. An achievement's requirements block used to be ignored, so a pack's taming or mastery achievements appeared regardless. It is evaluated the same way a quest's is now, which means content correctly gated behind a feature will disappear on servers without that feature - which is the intent, and a visible change if you were relying on the old behavior.
- Required if your content pack authored dialogue flags.
SetFlag,Flag, andNotFlagare gone from dialogues. A greeting shown once becomes"Once": trueon the entry (write"Once": {"Where": {"Match": ["*Forgotten_Temple*"]}}instead to make it once per world family rather than once per character - theWheregroup is the same world selector every world-targeting field uses, taking a world name or a wildcard pattern underMatch, or aGameplayConfigkey for an instance family, and aMatchpattern's literal part is what the "already seen it" mark is filed under, so a temple instance rebuilt under a new name still counts as the same place); a one-time gift guarded by a hand-written flag becomes"Once": trueon the option; anything else becomes a named entry in aMemoriesblock declared at the top of the dialogue, then referred to by that bare name. Players lose nothing: existing progress and quest resets behave exactly as before. Shipped content is already migrated. - Required if you customized or added conversations:
mods/mmoskilltree/dialogues.jsonis retired. The file is renamed in place with a.legacysuffix on first start (never read, never deleted) with one startup message naming the replacement. The owner layer over conversations ismods/ziggfreedcommon/dialogues.json, which takes the same{"dialogues": {"<id>": <body>}}shape: move the entries you want to keep as overrides across as they are. Nothing is carried automatically, so a conversation you customized stays in your own copy until you move it. A conversation that is really content of your own is better shipped as a pack asset atServer/ZiggfreedCommon/Dialogues/<YourPack>/<Name>.json; the web Migration Converter lifts your entries into those files for you. - Required if your content used named world selectors. A
Wherecarries its own patterns now, so there is no separate selector file to look up: write"Match": ["default"]for the ordinary world players log into (a bare word is an exact world name),"GameplayConfig": ["ForgottenTemple"]for an instance family, or"Match": ["*KweebecNightmare_*"]for a family of worlds sharing a name token. If your main world is named something else, override that file'sWhere- by re-authoring it under the same id from your own pack, or through that content type's owner file. AWherematching none of your loaded worlds is reported by/mmoconfig validate, so a missed rename shows up as a finding instead of as content that quietly never appears. - Required if your content pack ships luck-loot entries: re-author them as bonus drops.
Server/MMOSkillTree/LuckLoot/is gone, replaced byServer/MMOSkillTree/BonusDrops/, one row per file with the filename as its id. An entry keeps itsLootandChanceexactly as written and gains"When": {"Kind": "BreakBlock", "Match": "*<your old pattern>*"}. The wildcards matter: an old key was matched anywhere inside a name,*name*is how that is spelled here, and a bare name means exactly that name. Switch a shipped row off from a pack with{"Enabled": false}, as with every other content type, and if your pack's control file declared"LuckLoot", drop that line: bonus drops merge by id, so you override a row by re-authoring its id and there is no whole-type switch to set. A kill bonus is the same file with"When": {"Kind": "KillMob", "Match": "*Trork*"}instead. Your ownmods/mmoskilltree/files convert themselves, as above. - Optional, worth doing: move your pack's conversations to the shared folder. Dialogues are authored at
Server/ZiggfreedCommon/Dialogues/<YourPack>/<Name>.json, alongside quests and achievements. A file there declares no ownership: every reader folds the whole folder, so one conversation can serve several mods.Server/MMOSkillTree/Dialogues/keeps working exactly as it did, so nothing has to move today; if you do move a file, move it rather than copying it, since the same id in both folders logs a warning naming the collision. - Required if you customized mastery:
mastery.jsonmoves to a new track format. A track override is now a partial body in the same PascalCase layout a content pack authors, merged field by field over the loaded track of its id ({"Enabled": false}switches one off). Amastery.jsonstill carrying old-format tracks is moved to a timestampedbackup/copy on first start - never read, never deleted - with one notice naming the replacement; re-write the tracks you customized in the new layout, changing only the fields you care about. The web Migration Converter writes that rewrite for you: upload yourmods/mmoskilltree/folder (the backup copy counts, under its backup name) and it hands back the file in the new format, with anything it cannot carry named in the report. A file that never customized tracks needs nothing. - Required if your content pack ships mastery templates: re-author them. The mastery
extends/paramstemplate files are retired. A single track is oneServer/MMOSkillTree/Masteries/<Id>.jsonfile (reuse via aParentpointing at anAbstractbase), and a whole per-skill family is oneServer/MMOSkillTree/MasteryGenerators/<Id>.jsonfile. A pack still shipping template files gets a startup warning naming the replacement, andCONTENT_PACKS.mdhas the shapes. - Worth knowing if you do not run the Mastery Pack: the Mastery Trainer moves into it. The trainer character, its conversation and its place in the Forgotten Temple now ship in the free MMO Skill Mastery Pack rather than in the mod itself. Install the pack (which you already need for mastery content) and nothing changes; without it the trainer is simply not there.
- Nothing to do, worth knowing for authors: a modifier's key field is spelled
ParamKey. Everything this project ships writes{"Shape", "ParamKey", "Value"}in mastery nodes and ability upgrades; a pack still writingKey(or the oldOVERRIDE/ADD_PARAMshapes and theCONDITIONALwrapper) keeps loading exactly as before. - Nothing to do: abilities are filed by skill inside the jar. The built-in ability files now sit in a folder per skill so the roster is readable. Ability ids did not change, the folders carry no meaning, and a pack file still overrides a built-in by id from wherever you put it.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include

