v2.0.0 - XiaoXiang Config Ext
Curse Maven Snippet
What's new
Xiaoxiang Config Extension 2.0.0
The Base Mod Was Updated From 0.1.1479 >>> To >>> 0.1.1480
The Overhaul — the first of many to come.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
This is the one of the largest releases this mod has ever had, and it is deliberately the first of a series rather than a finish line.
2.0.0 is where the mod stops being "a big pile of config options" and starts being a tool. Three things happened at once: the option count went from roughly 970 to 1,256 real, individually-wired settings offered on screen (1,268 defined, less the twelve Mortal-realm values withdrawn on purpose — see below); the config screen was rebuilt around how a cultivator actually thinks about the game (twenty single-subject tabs, ninety-eight sub-tabs, every realm in true breakthrough order, navigation you can fold out of your way); and a stack of long-standing correctness bugs — including the runaway NPC spawning several of you reported — were found, root-caused against the base mod's actual compiled code, and fixed.
Compatible with Xiaoxiang Cultivation World 0.1.1480 (and 0.1.1479). The 0.1.1480 patch changed 130 classes and added 2; all 131 of this mod's overrides and all 796 individual injection points were re-verified against it class by class, and nothing moved. Zero regressions.
As always: not one file belonging to Xiaoxiang Cultivation World is modified. Everything here is applied at runtime through Mixins, and every category can be switched off independently if you'd rather have the base mod's own numbers back.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
At a glance
| 1.0.9 | 2.0.0 | |
|---|---|---|
| Configurable settings | ~970 | 1,256 |
| Top-level tabs | 15 | 20 |
| Sub-tabs | 63 | 98 |
| Registered overrides | 101 | 131 |
| Injection points | ~600 | 796 |
| Visual themes | 34 | 34 |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Fixed — the Mortal realm is now off-limits, on purpose
Mortal is no longer configurable, anywhere in this mod. Every setting the realm ladder identifies as Mortal's — Max Qi, NPC spawn weight, all four NPC combat values, the equipped-technique base multiplier, and the four Mortal entries in the spell-balance tables — is gone from the config screen entirely: from the lists, from the group bars, from search, from per-tab reset, from modpack presets, from perk targeting, and from profile save/load.
This is a design decision, not an oversight, and it's worth explaining because it removes twelve things you could previously click on.
Mortal is not a stage you cultivate through. It is the state of not having started — the zero point every other realm is measured against. When the baseline itself can be retuned, no balance question in the mod has a stable answer any more: "is Golden Core too strong?" depends on what Mortal was set to that day. Worse, it was already actively causing harm. The config screen's description lookup matched the text mortal inside immortal, so a Mortal group would cheerfully display "True Immortal Max Qi" and its description — a player tuning what they thought was the mortal baseline was reading, and reasoning about, the highest realm in the game.
So the fix went in at both ends:
- The realm ladder is the single source of truth for what belongs to which realm, and it matches on camelCase word boundaries, longest key first — so
looseImmortalcan never again be mistaken formortal, in either direction, anywhere in the mod. - One choke point hides Mortal's settings. Every list, bar and search in the screen walks the same path registry; Mortal's entries simply aren't in it.
Honest note about the TOML. The values still exist in your config file with the base mod's own defaults, and they're still readable by the code that needs them, so nothing breaks. An admin determined to hand-edit xiaoxiang_config_ext-common.toml in a text editor is not stopped. That's deliberate — silently deleting keys out of existing config files would be worse. What's guaranteed is that nothing in this mod writes them, offers them, or resets them, and no preset or profile will ever touch them.
Fixed — a whole class of wrong descriptions
The mortal / immortal collision above was one symptom of a more general bug: when a setting had no exact description entry, the screen fell back to fuzzy matching — same last path segment, then simple substring containment. That fallback had no idea what a realm was, so it would happily hand one realm's setting another realm's text.
Fuzzy matching is now realm-aware: a candidate description is only accepted if it belongs to the same realm as the setting it's describing, or if neither is realm-specific. Two genuinely stale registry keys left over from an earlier restructure (realms.mortal.maxQi, realms.trueImmortalMaxQi) were also corrected. One instance is fixed by the key; the entire class is fixed by the guard.
Fixed — no more overlapping or redundant settings
@xcrgvgdfe.... reported seeing two sets of controls that looked like they did the same thing. You were right, and it was worse than it looked.
"Zhenyuan Rewards" was five settings that did nothing at all. realms.zhenyuanRewards.minor, .major, .attrMinor, .attrMajor and .statMultiplier sat on the Cultivation page, read exactly like the real controls, sat right next to them — and no override read a single one of them. Turning them did nothing, forever. They are removed. A setting that looks like it works and doesn't is worse than no setting at all.(Was a ghost framework i began, but ultimately abandoned and started over. Forgetting the privious frame i had built, Hehehe).
And one live knob was secretly driving two different rewards. A breakthrough grants you two separate things: free zhenyuan that lands in your unallocated pool for you to spend, and auto-allocated attribute points the game distributes for you. Until now, general.zhenyuanRewardAmount was wired to both — so setting it from 5 to 20 handed out 20 free points and 20 auto-allocated ones, which is not what the setting says it does. Meanwhile cultivationData.zhenyuanAttrRewardMajor and .zhenyuanAttrRewardMinor — the two settings that exist precisely to control the auto-allocated reward — were dead.
Now each reward has exactly one owner:
| What you get | Setting | Default |
|---|---|---|
| Free points, realm-up | general.zhenyuanRewardAmount |
5 |
| Free points, sub-stage | general.zhenyuanMinorRewardAmount |
1 |
| Auto-allocated attributes, realm-up | cultivationData.zhenyuanAttrRewardMajor |
5 (was 3 — see below) |
| Auto-allocated attributes, sub-stage | cultivationData.zhenyuanAttrRewardMinor |
1 |
A default was corrected in the process. zhenyuanAttrRewardMajor shipped with a default of 3. The base mod passes 5 at both of its major-breakthrough call sites (verified directly against CultivationData.advanceOnSuccess's compiled bytecode — iconst_5 into addAllZhenyuanAttributes, twice, and iconst_1 on the sub-stage path). It never mattered while the setting was dead; the moment it went live, a wrong default would have silently nerfed every realm-up for everyone who installed this mod. It's 5 now, which is the real value.
All four settings were also given proper written descriptions that say plainly which of the two rewards they control and name their counterpart, so the distinction is visible in-game rather than only in a changelog.
Added — the Monotonicity settings,...... finally
The Monotonicity group is a safety net, not a balance setting, and nothing on screen said so — which is why it read as overlapping with the realm Max Qi settings sitting a group away. It now has three written descriptions that spell out exactly what it does and when it does it:
- Never Let Requirements Go Down — guarantees every breakthrough in the standard chain costs strictly more qi than the one before it. It exists because that guarantee can break three ways: your own Max Qi edits, the delta settings drifting out of order, and the base mod itself — its own
Realm.maxQireturns 20,900 for True Immortal and then 18,000 for Loose Immortal, a genuine built-in decrease. It never touches a value that's already increasing. - Minimum Sub-Stage Increase / Minimum Realm-Up Increase — the floors it settles for when it does have to repair a step, and the margin holding the two Immortal realms above Tribulation Transcendence Peak. Floors, not targets.
Added — three tiers of hover sound across the navigation
Sweeping the mouse down the config screen's hierarchy is now audible as a rising scale, so you can tell which tier the cursor is on without looking at it:
- Main tabs — the heaviest, lowest voice.
- Sub-tabs — lighter, mid.
- Group buttons — the lightest, briefest, highest.
All three are one recognisable timbre pitched differently rather than three unrelated samples, which is the difference between a scale and three noises. They're keyed by element rather than by list position, so sliding from Cultivation to Spells actually sounds, where before an index-based check would sometimes swallow it.
Fixed — dragging one item-picker divider moved a different one
Reported and reproducible: widening the Preview panel made the Selected panel narrower under your hands, and dragging further started eating Categories.
The fitter that keeps the picker's panels inside the window is the right behaviour when the window gets smaller — it reclaims space from the roomiest panels in a fixed order. It's exactly the wrong behaviour for a deliberate drag. A divider drag is a statement about the boundary between one panel and the Items column, and nothing else.
Drags are now capped at the point where the Items column hits its own minimum. Past that, the divider simply stops. Every other panel keeps the width its owner set, and window resizing still behaves exactly as before.
Added — the item preview is big, centred, and zoomable
The Preview panel drew every item icon at a fixed 32 pixels, marooned in the middle of a panel you could now drag out to any width.
- The icon is sized from the panel, filling its width less a small margin, so widening the Preview divider actually gives you a bigger picture.
- Mouse-wheel zoom while hovering the Preview panel, from ½× to 4×, remembered for the session.
- Text flows below whatever the icon actually took, not below a hard-coded row — so a zoomed icon never draws over its own name.
- The empty-state hint now mentions the wheel, because an undiscoverable feature isn't a feature.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Added — 298 new settings across five new systems
The base mod's 0.1.1479 update introduced several large systems this mod had no coverage for at all. All five are now configurable, and each one gets its own top-level tab rather than being buried as a sub-tab somewhere else.
Talisman — 29 more settings (now 111 total)
1.0.9 shipped the per-glyph qi costs. 2.0.0 finishes the system:
- Every structural cap the talisman compiler enforces: max executable slots, max operation budget, batch-craft limit, glyph/mode/container ID lengths, and the full set of per-evolution stacking caps (split applications, pierce count, potency bonus, pull applications, duration and damage/destruction multipliers).
- Delay and echo timing — ticks added per delay glyph, the delay ceiling, and the echo delay pair.
- Use-mode qi cost, which lives on the talisman use-mode itself rather than in the glyph catalogue and needed a different kind of override to reach.
- A newly-found complexity-cost group (trigger, modifier, explosion, fireball) that no previous audit had catalogued — these are what the operation budget is actually spent on.
Spell Balance — 94 settings (new tab)
The base mod keeps its spell maths in one balance table. All of it is now yours:
- Custom spell creation — the qi multiplier, the bone-age cost (base + per-slot) and the lifespan safety margin.
- Custom spell capacity per realm — how many custom spells a cultivator can hold at each of the nine realms that allow them.
- Bonus caps — aptitude, cultivation and status bonus ceilings, plus the overall power-bonus percentage cap.
- Named mega-spell damage — Sky Splitting (base + per-charged-qi), Mega Meteor (direct + shockwave), Five Peaks Seal, Lightning Bolt, Core Self-Destruct (flat + per-realm-power²) and the Heaven Piercing Cone cap.
- Four full scaling tables, entry by entry: realm spell-damage factors, realm max-health bonuses (both with a separate ten-entry Loose Immortal ladder indexed by tribulation count), and beast HP and attack multipliers across all twelve beast realms.
Those tables are real arrays in the base mod rather than inlined numbers, which needed an override technique this mod hadn't used before — the upside is they're now exposed one realm at a time instead of as a single all-or-nothing multiplier.
Equipment — 83 settings (new tab)
- Armor set bonuses for all nine sets (Cangming, Four Symbols, Lihuo, Maoshan, Origin, Shihun, Taisu, Taixuan, Xuesha) — every percentage, duration and threshold each set grants, grouped one sub-section per set.
- Set activation rules — the piece counts at which bonuses switch on, the maximum armor pieces counted, and the alignment cap.
- The item-tier multiplier ladder (LOW/MID/HIGH/SUPREME/IMMORTAL) that scales every set bonus.
- Accessory and blood-blade tier scaling, plus the storm-imbue bonus per tier.
- Set effect services — the incoming-damage reduction ceiling, guard and ward timings, lethal-save rules, and the Cangming water-mastery durations.
Cultivation Fruit — 23 settings (new tab)
The new fruit-tree system, end to end:
- Selection — how rare a special fruit tree is, cluster size range, and the hash salts that decide which trees get picked (change a salt to reshuffle the world's fruit trees without changing how many there are).
- Probing — how many column probes each online player triggers, and their horizontal/vertical reach.
- Tree detection — the log-search box, connected-log thresholds, and canopy scan margins and volume cap.
- Aging — the day length fruit ages by, and the year thresholds for each harvest tier (Mid / High / Supreme / Immortal).
Two of these are consumed as bitmasks rather than plain numbers in the base mod, so their settings carry an explicit note: keep them powers of two or the distribution goes uneven. That caveat is written into the setting's own description in-game, not buried in a readme.
Bosses — 69 settings (new tab)
The Xuan Gui boss encounter and the Kunlun Root Strike ability, end to end:
- Xuan Gui stats - shell duration and cooldown, shell damage reduction, rest threshold, retaliation range.
- Xuan Gui combat - hit timing, cooldown, reach, damage multiplier and knockback for each of the bite, slam and charge attacks, plus charge start range and rush speed.
- Xuan Gui AI - swim and land wander speeds and intervals, look range, sprint trigger range and speed, the health fraction at which it shell-guards, threat scan interval, the crowd size that triggers Tidal Shockwave, and the slam chance.
- Xuan Gui spawning - water search radius, the sea-level band it spawns in, minimum light.
- Kunlun Root geometry - start/end thickness and where the taper begins, thickness clamps, brush reach cap, surface erosion, lump chance / offset / size, and the per-segment block budget.
- Kunlun Root timing - plunge blend and angle, distance- and age-driven gravity onset and ramps, gravity per tick, aim range.
- Beast spells - cooldowns for Mystic Shell Guard, Demon Blood Surge and Tidal Shockwave, and the durations, knockback, radius and threat window of their effects.
Changed — the config screen's tab layout
Every tab is now a single subject. Three tabs used to staple two unrelated systems together behind an "&":
- Spells & Combat → Spells (active + passive) and Weapons
- Beasts & Mobs → Beasts (its "NPC Spawns" sub-tab was a second doorway into the same paths the NPCs tab already owned, so it's gone from here)
- Effects & Morality → Effects and Morality
Together with the five new system tabs, that's 20 tabs and 98 sub-tabs, each sub-tab further split into groups.
Nothing moved in your config file. This is purely how the screen organises what already exists — no setting was renamed, relocated or reset. If you'd previously reordered your tabs, your saved order is migrated in place: each split tab's replacements land where the original sat, instead of your order being scrambled and the new tabs dumped at the end.
Two settings that were unreachable now have a home. The reincarnation technique fix and the Identity-screen scrollable-tooltip settings both existed in the config file but had no tab to render on, so they could only be changed by editing the file by hand. They're now under Cultivation → Reincarnation and UI → Identity Tooltips.
Changed — every realm, everywhere, in breakthrough order
This was the most-repeated piece of player feedback: the config had no sense of progression. Golden Core would sit near the top of a list purely because of alphabetical order, and a new player reasonably concluded that's where cultivation starts.
- One realm ladder, used everywhere. Mortal → Qi Refining → Foundation Building → Golden Core → Nascent Soul → Soul Formation → Void Refining → Body Integration → Mahayana → Tribulation Transcendence → True Immortal → Loose Immortal, taken from the base mod's own realm definition rather than guessed. Previously only the Realms page was ordered this way; beast advance costs, NPC realm weights, spell scaling tables, per-realm spell capacities, ancestor chances and everything else fell through to alphabetical. Now every realm-keyed setting in the mod sorts lowest-realm-first.
- One group per realm. Any group that was really several realms under one label ("Standard Realms", "NPC Realm Weights", the Realms page's own Max Qi / Lifespan / Tribulation tables) is now split into a group per realm, ordered up the ladder, so you can click "Golden Core" and see only Golden Core's settings - across every page that has them. This is decided automatically from the config's structure, so any future page that mixes realms gets the same treatment. General (non-realm) settings on those pages keep their original group and come first.
- Beast tiers included. The beast advance-cost page keeps its beast names (Spirit Soldier … Spirit Lord) but they now sit on the same ladder at the realms they correspond to, so that page reads bottom-to-top too.
Changed — the item picker's panels are resizable
Every divider between the picker's panels (Mods | Sub-categories | Sub-sub-categories | Items | Preview | Selected) can be dragged left or right. The Items column flexes to absorb the difference; no panel can be dragged to nothing and Items always keeps at least 80px. Double-click any divider to restore the defaults. Your layout is remembered while the game runs. The Preview panel's default width also went from 80px to 130px, and a long item name that still didn't fit at the smallest text scale is now trimmed with an ellipsis instead of running over the neighbouring panel - the last cause of the "text spilling into the next box" report.
Added — collapsible navigation
Each of the three navigation tiers gets its own clickable header bar: MAIN TABS, SUB-TABS and GROUPS. Click one to collapse that tier; click again to bring it back. Collapsed tiers take up no vertical space at all, so the settings list grows into whatever you free up — useful when you're deep in one sub-tab and want more rows on screen than navigation. The headers stay visible when collapsed (they're how you get back), and collapsing never changes which tab, sub-tab or group is selected.
The theme picker's header in the settings popup is now a matching clickable box rather than bare text, so the whole interface uses one visual language for "click this to expand".
Added — 387 written setting descriptions
Every setting in the five new tabs (plus the new spawner page) now has a real name, a plain-English description of what it controls, and a "what happens if I raise/lower this" line — the same treatment the older tabs already had. Previously these would have shown a raw key name and a placeholder.
Fixed
- Far too many wandering cultivator NPCs, and turning the spawn settings down did nothing (reported on CurseForge by Mauro023 - thank you). Root cause was this mod's own NPC spawner, which fills in for vanilla (vanilla never spawns these NPCs naturally, their spawn category has a cap of 0). Three things were wrong with it: it rolled a 15% chance every 5 seconds per player, times a 1.5 multiplier - roughly 2.7 spawns a minute per player; its only cap was "8 within 128 blocks of the player", measured from wherever the player currently was, so walking anywhere left a trail of NPCs behind with no world-wide limit at all; and none of the settings on the Spawns page reached it - the two spawn-chance sliders there only feed a base-mod check that vanilla never runs for this NPC, and the spawner's single real dial was tucked under Sects > NPC Population. So players turning the visible chances "insanely low" were adjusting a code path that never fired. Now: the spawner has a proper Spawns > Wandering Spawner page with every control - on/off, roll interval (default 10 s, was 5), chance per roll (default 3%, was 15%), crowd size near a player (default 6, was 8, over a wider 96-block radius), a hard ceiling per dimension (default 24 - the cap that was missing), and an Overworld-only option. The old multiplier still works on top and now defaults to 1.0 instead of 1.5. Net effect at defaults: about a fifth of the old rate, and a world that can never exceed the ceiling however far you travel. The spawner also finally respects the master "enable spawn overrides" switch.
- A second contributor to the same problem: the override that makes cultivators spawn on superflat worlds had quietly grown into a global bypass. It returned "yes, spawn" for every non-natural spawn type and every non-Overworld natural spawn, skipping the base mod's own vanilla light/ground check and its 6-per-96-blocks crowd cap on those paths, and turned chunk generation's 30% roll into 100%. It now touches only natural Overworld spawns on superflat worlds, and on those applies the same configured chance and the same crowd cap the base mod uses everywhere else.
- True Immortal and Loose Immortal were swapped in three realm-indexed tables. The base mod's realm ladder puts True Immortal before Loose Immortal (verified three ways against its compiled code, including its own progress-index function, which fixes them at 37 and 38 respectively). Three of this mod's per-realm arrays had them the other way round: the NPC realm spawn weights, and the new beast HP and beast attack multipliers - so the "Loose Immortal" setting silently drove True Immortal and vice versa. Invisible at the defaults (the affected pairs happen to share the same default value), wrong the moment anyone tuned one. Fixed; no config keys changed.
- Hover sounds never played on the config screen when opened from the main menu. The sound helper's only playback path needed a loaded world, and bailed out silently when there wasn't one — which is exactly the case when you open the config from the mod list before loading a save. It now falls back to a non-positional UI sound in that situation; in-world playback is untouched.
- A dead override in the chargeable-spell settings. The Buddha Fire Lotus "ready qi" setting was pointed at a value that doesn't exist in the base mod's compiled code, so it silently did nothing. Found while re-verifying a neighbouring value; documented and queued for a proper fix rather than papered over.
- One new setting was cut rather than shipped broken. A sky-splitting charge threshold turned out to collide with an already-wired value in the same class — both would have fought over the same number, with whichever applied last winning. Rather than ship a setting that quietly fights another, it was removed.
Changed — the item picker
The Starting Items picker was flat and silent. Every row and button now has the same eased hover glow the main screen uses, hover sounds are wired across all of its controls, and its window chrome, panels and scroll bars now follow the active theme instead of a hardcoded palette — so all 30+ themes finally reach it. Reduce Motion is respected: the glow degrades to a static highlight rather than animating.
The recent fix that stopped long item descriptions spilling out of the Preview panel is untouched.
Under the hood
- 30 new override classes, bringing the mod to 131 registered overrides / 796 individual injection points, every one of them verified against the base mod's real compiled code rather than assumed.
- Every new override carries the mod's standing safety flag: if a future base-mod update removes or renames something an override hooks into, that one setting quietly stops applying instead of the whole modpack failing to load.
- Several values were deliberately left unwired and documented as such rather than guessed at — among them the blood-blade tier arrays (only read at item-registration time, before the config file is even loaded, so an override there would be inert), the fruit system's hash-avalanche constants, and a weighted starting-age distribution whose twelve interdependent values need their own pass.
Known limitations
- Weapon attack speed and a few HUD position/size settings still have no effect — both are baked in too early for a live override to reach safely (unchanged since 1.0.5).
- Furnace slot counts and processing times for Alchemy and Refining are still not wired.
- Two 0.1.1479 systems remain catalogued but not yet configurable: the technique-stacking/resonance system and the NPC gift-diminishing economy, plus the remaining two equipment ability services (treasure abilities, storm rift).
- The Sects category (roughly 126 settings, the single largest) has still not been re-audited against current base-mod behaviour.
- Mortal-realm values remain editable by hand in the TOML (see the Mortal section above). This mod will not offer, write or reset them.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Still To Come — what 2.0.0 is the first of
None of the below is a promise of a date. All of it is work that is scoped, and in several cases already half-built on foundations that landed in this release.
Next up — the themes get their overhaul. All 34 themes are being reworked to be more pronounced and more distinct from one another, each with its own steady background animation: starfall, a supernova in slow motion, a star collapsing inward, a galaxy turning. The config window itself is being rebuilt around better partitioning and a more professional layout to carry them. This is the very next thing being worked on.
A per-tab "General" sub-tab. Every main tab getting its own General page holding that section's master override toggle, so the switch that turns a whole system on or off lives with the system instead of on a shared page.
The deep wiring waves. A full implementation of the 0.1.1480 jar catalogued 187 classes carrying 1,763 tunable constants this mod does not yet reach. They are queued in order of how much they'd actually change your game — the spell handlers first (Personal Spirit Shield, Blood Shadow Dash, Nine Heavens Thunder Prison, Flame Dash, Lightning Arc, Wither Touch, Soul Hook, Thunder Blink), then spell entities, then the blood and dao arts, then the remaining systems.
The systems still catalogued but not yet configurable: technique stacking and resonance, the NPC gift-diminishing economy, treasure abilities and storm rift.
The Sects audit — the largest single category in the mod, and the one most overdue a pass against current base-mod behaviour.
The dead Buddha Fire Lotus "ready qi" override, found during this release's verification and documented rather than papered over, gets a proper fix.
A three-second hover on a main tab opening a movable, resizable info window — designed, deferred, not forgotten.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Thank you
To Mauro023, who reported the wandering-cultivator flood on CurseForge and stuck with it — that report led to two separate root causes, one of them a spawn-rule bypass that had been quietly running since long before anyone noticed.
To everyone who wrote in about the config screen having "no order" — the realm ladder in this release exists because of you, and it's now the single source of truth the whole mod sorts by.
And to the Xiaoxiang Cultivation World team, whose mod this one exists only to serve. Every number in here is theirs first.
✦ May your Dao be steady, your Qi be plentiful, and your tribulations survivable. ⛵🌌⚡
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include

