promotional bannermobile promotional banner

MiXianTu

A data-driven cultivation framework with server-authoritative runtime for cultivation, aura, abilities and so on.
Back to Files

mxt-1.0-beta.6.jar

File namemxt-1.0-beta.6.jar
Uploader
IAFEnvoyIAFEnvoy
Uploaded
Oct 20, 2026
Downloads
15
Size
5.2 MB
Mod Loaders
NeoForge
File ID
9268195
Type
B
Beta
Supported game versions
  • 26.1.2

Curse Maven Snippet

NeoForge

implementation "curse.maven:mxt-1691981:9268195"

Learn more about Curse Maven

What's new

Breaking Changes

Data packs

  • All colour fields are now "#RRGGBB" strings, not integers. The affected fields are primary_color and secondary_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), and color (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, and entity_exit_action have been replaced by modules in the actions list: write type: "mxt:activate", "mxt:tick", or "mxt:inactivate" instead. The module needs the beat it answers to, not a field the formation owns.
  • interval_periods has been renamed to interval_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_display has been removed. Use mxt:particle with a shape that names a figure from the new mxt:formation_shape registry (plus optional duration_ticks and interval_ticks).
  • A new datapack registry, mxt:formation_shape, is now shipped. A figure is a list of strokes: either {"type": "mxt:circle", ...} or {"type": "mxt:polyline", ...}, up to 256 strokes. The built-in five, six, and eight are ordinary entries of this registry, not special-cased in code.
  • mxt:composite (the composite ability type) has been removed, together with its abilities and all_required fields.
  • mxt:technique has gained learn_time (a formula over the reader), hold_animation, and hold_sound, all optional. learn_time replaces 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, or next must be a loaded mxt:ability entry. 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 (aura is keyed by section Y, plus the new block_aura_sections map). 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: Failure plus Failures, with per-module constants in runtime/resulting/failures/…. Every …Failure enum is gone, and feedback is now Failure#message().
  • Cost entries implement Cost#prepare(CostContext) and return ResultWithData<Cost.Transaction>; the old test/commit pair and the *CostDraft classes are gone. A payment is a bill (CostPayment) over a sealed CostTarget, executed once by CostTransaction with a per-target re-entrancy guard.
  • Entities moved to com.iafenvoy.mxt.entity. EntityTickStages is in runtime. EntitySources became runtime/progression/ProgressionOwners.
  • Internal module hooks live in event/dispatcher/ (collect-style events). ModuleHooks, HoldSource, and TriggerRehydrator were removed; rehydration is now TriggerRehydrateEvent.
  • KubeJS bindings that returned the old per-module result wrappers now return Result / ResultWithData.
  • ServerLevelSeedMixin was removed: secret realms no longer intercept the world seed.

Translation keys

  • Every failure message moved to failure.mxt.<source>.<reason>. The old actionbar.mxt.*.failure.*, command.mxt.*.failure.*, screen.mxt.*.failure.*, contract.mxt.failure.*, item.mxt.physique.*, item.mxt.spirit_root.*, and item.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, the commands.picker server config entry, the picker payload, and the picker screen were removed.
  • /picker-only tags (mxt:quality/tooltip_order) and the ItemFeedback helper were removed (feedback is Failure).
  • FormulaDiagnostics, FormulaNames, ObjectComparison, DatapackCache, ArtifactSpiritEnergy, ISpiritEnergy, ResourceLedger, AuraLookup, BlockAuraContribution, FormationAbsorption, ContractFeedback, and Abilities were 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:particle modules animate a figure in (draw_in_ticks, hold_ticks) and can be given a duration. Particles mxt:formation and mxt:laser are new.
  • Aura formations (mxt:aura) claim a zone, grant a per-aura max_bonus, and carry an upkeep_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, with flame_composite and meteor_flame shaders. 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 via mxt: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 if chain.
  • A registry cache layer. Caches such as ChainCache, RealmChainCache, OrderCache, HeatSourceCache, DamageElementsCache, FormulaNameCache, ReverseMappingCache, ReverseMappingListCache, and CurrencyChangeCache are registered centrally in RegistryCaches, so a datapack reload invalidates them in one place.
  • A GameTest probe framework. Probes are data-driven with a Probe / ProbeContext kit, arena templates, and per-domain folders (ability, alchemy, artifact, combat, creature, cultivation, formation, item, lifespan, screen, talisman, verify, and world). 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. LoggerDispatcher and LoggingLevel route a call site to a developer-only or production level, and the new debug server config opens those doors on a release server (config.mxt.server.debug.enabled).
  • Content: the mxt:higher_mathematics technique, formation figures five / 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.
  • AuraZone is one flat definition. The old core / visual split 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 / ResultWithData replaced 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, and event/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