mxt-1.0-beta.6.jar
Curse Maven Snippet
What's new
Breaking Changes
Data packs
- All colour fields are now
"#RRGGBB"strings, not integers. The affected fields areprimary_colorandsecondary_color(technique),color(aura value and element),fog_color(client render),color(pill),color(item quality),particle_color(resource),fill_color/full_color/empty_color/color(resource bar render data),color(lightning action), andcolor(formation stroke gradient). - A formation's six top-level beat actions are gone.
activate_action,tick_action,deactivate_action,entity_tick_action,entity_enter_action, andentity_exit_actionhave been replaced by modules in theactionslist: writetype: "mxt:activate","mxt:tick", or"mxt:inactivate"instead. The module needs the beat it answers to, not a field the formation owns. interval_periodshas been renamed tointerval_ticks, and the unit is now ticks (must be a multiple of the 10-tick beat, and values from 10 to 24000 are allowed).mxt:range_displayhas been removed. Usemxt:particlewith ashapethat names a figure from the newmxt:formation_shaperegistry (plus optionalduration_ticksandinterval_ticks).- A new datapack registry,
mxt:formation_shape, is now shipped. A figure is a list ofstrokes: either{"type": "mxt:circle", ...}or{"type": "mxt:polyline", ...}, up to 256 strokes. The built-infive,six, andeightare ordinary entries of this registry, not special-cased in code. mxt:composite(the composite ability type) has been removed, together with itsabilitiesandall_requiredfields.mxt:techniquehas gainedlearn_time(a formula over the reader),hold_animation, andhold_sound, all optional.learn_timereplaces the old integer-only reading length, and a hold pose outside the whitelist is refused at load time.- Abilities are referenced through their holder, so an id in a field such as
id,ability,abilities, ornextmust be a loadedmxt:abilityentry. Missing entries now fail the definition instead of resolving to a dangling id.
Saved worlds
- A chunk's aura stock is now stored per sub-chunk (
aurais keyed by section Y, plus the newblock_aura_sectionsmap). If an older save's flat chunk-aura map does not decode, the chunk is simply re-seeded from the environment on its next load, so nothing crashes and nothing is carried over. - Carriers written with several inscriptions decode as a single inscription; the rest is dropped.
Java API (for addons compiled against this mod)
- Failures are one interface:
FailureplusFailures, with per-module constants inruntime/resulting/failures/…. Every…Failureenum is gone, and feedback is nowFailure#message(). - Cost entries implement
Cost#prepare(CostContext)and returnResultWithData<Cost.Transaction>; the oldtest/commitpair and the*CostDraftclasses are gone. A payment is a bill (CostPayment) over a sealedCostTarget, executed once byCostTransactionwith a per-target re-entrancy guard. - Entities moved to
com.iafenvoy.mxt.entity.EntityTickStagesis inruntime.EntitySourcesbecameruntime/progression/ProgressionOwners. - Internal module hooks live in
event/dispatcher/(collect-style events).ModuleHooks,HoldSource, andTriggerRehydratorwere removed; rehydration is nowTriggerRehydrateEvent. KubeJSbindings that returned the old per-module result wrappers now returnResult/ResultWithData.ServerLevelSeedMixinwas removed: secret realms no longer intercept the world seed.
Translation keys
- Every failure message moved to
failure.mxt.<source>.<reason>. The oldactionbar.mxt.*.failure.*,command.mxt.*.failure.*,screen.mxt.*.failure.*,contract.mxt.failure.*,item.mxt.physique.*,item.mxt.spirit_root.*, anditem.mxt.formation_plate.failed.*keys are gone. Resource packs that overrode any of them must be updated.
Removed
- The item picker left the mod. It is now a separate dependency (
picker) shaded in via JarJar./picker, thecommands.pickerserver config entry, the picker payload, and the picker screen were removed. /picker-only tags (mxt:quality/tooltip_order) and theItemFeedbackhelper were removed (feedback isFailure).FormulaDiagnostics,FormulaNames,ObjectComparison,DatapackCache,ArtifactSpiritEnergy,ISpiritEnergy,ResourceLedger,AuraLookup,BlockAuraContribution,FormationAbsorption,ContractFeedback, andAbilitieswere removed.
Added
- Formations are modules now. A formation is a shape, a cost, and a list of modules that answer one beat each:
empty,attack,buff,aura,protection,particle,send_message,activate,tick,inactivate. - Formation figures are drawn with particles.
mxt:particlemodules animate a figure in (draw_in_ticks,hold_ticks) and can be given a duration. Particlesmxt:formationandmxt:laserare new. - Aura formations (
mxt:aura) claim a zone, grant a per-auramax_bonus, and carry anupkeep_weight, so an array consumes aura from the same shared distribution a cultivator does. - Meteors. A new entity,
mxt:meteor, plus a shared visual projectile base. Sword-aura flames and meteor flames now run through one flame pipeline, withflame_compositeandmeteor_flameshaders. Sword aura also emits laser particles. - Techniques are read, not clicked. A manual's hold length is a formula (
learn_time), its pose and sound come from the definition, and a stack can override all three viamxt:technique_reading. - Jade slips are read by holding with a per-stack
mxt:jade_slip_reading(default two seconds), with its own animation. - Wheel entries are a closed set of kinds: ability, aura, behaviour, and empty. Holding a mouse button on an entry routes to the kind's own handler instead of an
ifchain. - A registry cache layer. Caches such as
ChainCache,RealmChainCache,OrderCache,HeatSourceCache,DamageElementsCache,FormulaNameCache,ReverseMappingCache,ReverseMappingListCache, andCurrencyChangeCacheare registered centrally inRegistryCaches, so a datapack reload invalidates them in one place. - A GameTest probe framework. Probes are data-driven with a
Probe/ProbeContextkit, arena templates, and per-domain folders (ability,alchemy,artifact,combat,creature,cultivation,formation,item,lifespan,screen,talisman,verify, andworld). The suite has grown past 300 cases. Runs can be narrowed with-PmxtGameTestSelection=mxt_test:*alchemy*, and the game-test server now has its own game directory. - A logging dispatcher.
LoggerDispatcherandLoggingLevelroute a call site to a developer-only or production level, and the newdebugserver config opens those doors on a release server (config.mxt.server.debug.enabled). - Content: the
mxt:higher_mathematicstechnique, formation figuresfive/six/eight, and technique page textures for the two-page book model.
Changed
- Aura is per sub-chunk. A chunk no longer keeps one pool; every section carries its own amount, ceiling, and regeneration, so no section can be drained on behalf of another. Block emitters are cached per section and rebuilt on a rolling per-section deadline instead of a whole-chunk rebuild.
AuraZoneis one flat definition. The oldcore/visualsplit is gone; the fields are the same and the shape is flatter.- A zone's stock is now shared with everyone who can see it, split between the players standing within the query volume rather than handed to each caller in full.
- A payment is a bill. Cost targets are sealed (account, aura store, items, script), a simulation and the real pass run through the same transaction, and a re-entrant settle, an already-closed bill, or a pass that wrote something and never returned each produce their own failure rather than a silent double charge.
- Results and failures are one shape.
Result/ResultWithDatareplaced the per-module wrappers, and the modules that only renamed a bool now return those. - Events are split by audience:
event/is for other mods, andevent/dispatcher/is internal collect-style hooks. - Definitions without a lang entry fall back to the registry id instead of leaking a raw translation key.
- Flame rendering for sword aura and meteors is one pipeline, with a distance-based simplification controlled by the client config (
config.mxt.client.flames, now covering projectiles and meteors as well). - Docs and repo:
learning/(six pages: house rules, code map, testing, verification, terminology, docs checklist) replaced the single in-repo guide, and research notes 87–95 were added (game-test migration, formation modules, meteor and flame, aura optimisation, block-aura per-section rebuild, formations as aura consumers, per-section pools, formation radius section cutting, and cost settlement).
Fixed
- Player trades could destroy items on completion. Both sides handed over into the partner's own offer before it was read; a hand-over now always moves from one side to the other.
- Change-making refused payable combinations and overflowed on large counts. A greedy answer is still tried first, and a bounded DP search takes over when the greedy answer can't be paid; the pre-check saturates instead of wrapping.
- Several aura sources funneled into one store each received the full grant, and a non-player cultivator paid no environment cost at all. A prepass grant is now split by its actual share.
- The script cost guard was keyed by script only, so two payers of one script collided, and a directly executed transaction skipped the guard entirely. The guard now lives in the transaction and is keyed by payer plus script.
- A simulated cost pass replayed real debits when the entry had already settled; a simulation now reports no debits in either order.
- Currency conversion got a load-time cache with a clear diagnostic for non-canonical denominations.
- Aura distribution, cultivation cost scaling, talisman inscriptions, the friend cache, and cost bills were all repaired in one audit pass (single inscription per carrier, no double charge, no lost charge).
- Missing translations and definition fallbacks, the technique title colour, and the sword-aura plus meteor shader issues are fixed.
This mod has no additional files

