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.3.jar

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

Curse Maven Snippet

NeoForge

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

Learn more about Curse Maven

What's new

Highlights

  • Every in-game interface is now an ApricityUI HTML page — alchemy, wheel (and its editor), forging, spirit crafting, economy, information panel, structure preview and the new talisman workstation share one host layer and one theme stylesheet.
  • Talisman drawing workstation — a new block and the new mxt:talisman_drawing recipe type turn a formula's shape into a player-traced mini-game; how well it is traced decides success, the tier written into mxt:quality, and the outputs.
  • Block heat sources — a new mxt:heat_source registry, a rebuilt 3×3×3 furnace, and a furnace ceiling that is the lowest of three limits.
  • Quality rework — free-text rarity is gone; a stack's tier now resolves in three layers, with the new mxt:default_quality registry and new mxt:quality / mxt:ingredient matcher entries.
  • Sword aura — a new projectile entity with a GPU-driven surface-flame renderer and a mxt:spawn_sword_aura entity action.
  • Internals — a payment architecture (CostDraft / CostPayment) replacing CostTransaction, and one module-hook registry (ModuleHooks) replacing the per-category source registries.

New features

Talisman drawing workstation

  • New block mxt:talisman_workstation (block, blockstate/model/textures, loot table, menu TalismanWorkstationMenu, screen and page mxt/talisman/talisman.html).
  • New recipe type mxt:talisman_drawing: unlock_condition, talisman, costs (Cost[]), paper (ingredient, defaulting to the #mxt:talisman_paper tag), pattern (guide, show_order, tolerance, strokes), background_color, foreground_color, judgement, and result.
    • result carries grades[] (each with min_completion, optional quality, optional max_damage, charge_ratio, outputs), plus failure_outputs, success_action and failure_action.
    • judgement tunes the scorer: term weights (direction / topology / order), stroke_count_strict, min_stroke_length, preview.
  • Traced strokes are scored by a pure function (TalismanDrawingScorer): completion in [0,1] from coverage, precision, shape, direction, topology and order terms; position and size are normalised away, rotation deliberately is not; empty or degenerate input scores 0 instead of throwing. The grade the completion lands in decides success and the tier written into the mxt:quality component at inscription time.
  • Server-side TalismanDrawingSession + TalismanWorkstationService, driven by 8 new payloads (TalismanSelectC2S, TalismanStrokeC2S, TalismanStrokeAckS2C, TalismanSubmitC2S, TalismanCancelC2S, TalismanDrawingStartS2C, TalismanDrawingListS2C, TalismanResultS2C).
  • The brush now carries its own pigment: TalismanBrushItem with component mxt:brush_pigment (BrushPigmentService). A whole server-config section drives it — brush_capacity, pigment_per_item, pigment_rate, pigment_floor, pigment_cap, max_stroke_points, min_stroke_interval, max_session_strokes, max_rejected_strokes, max_session_points.
  • New item tags mxt:talisman_paper (also the default for the recipe's paper field) and mxt:brush_pigment (cinnabar in the bundled pack).
  • Author-facing tool tools/talisman_strokes.html for drawing the pattern.strokes a recipe needs.

Alchemy: block heat sources, a rebuilt furnace

  • New datapack registry mxt:heat_source: blocks (block holders or block tags), max_temperature, heating_per_tick, optional priority (highest wins, ties fall back to registry order). Empty blocks is refused; both numbers must be finite and positive. A block implementing api.AlchemyHeatSource overrides its own registry entry.
  • The furnace is a fixed 3×3×3 whose bottom layer only anchors its four corners (the five cells between them are neither required, claimed nor chunk-loaded), and the middle layer's inner cell — formerly hollow — is now a wall. That is 18 material walls instead of 22, with the heating block in the bottom-centre cell (index 4), the controller at index 10, main port 14 and auxiliary port 12.
  • A furnace's temperature ceiling is the lowest of three limits (AlchemyFurnaceDefinition.temperatureLimit): the furnace spec's optional new max_temperature, the coldest of the 18 wall blocks' new max_temperature, and what the heating block can reach. Wall materials also gained an optional quality tier.
  • Hold-Shift tooltips show the resolved ceiling and which limit binds (tooltip.mxt.alchemy.furnace_temperature, tooltip.mxt.alchemy.heat); heat-source blocks show their temperature, speed and state. Jade gained displays for heat_source and for the spirit crafting table — each as a data provider plus a component provider sharing one uid.
  • JEI: new AlchemyCategory listing alchemy recipes with their gates (temperature, duration, aura, furnace_quality, input_quality, failure outputs). It deliberately has no click area and no transfer handler — the panels are AUI pages centred in the window, and a batch is judged on summed medicinal properties rather than on which item sits in which slot.
  • New test-mod fixtures: three heat-source blocks, the mxt_test:alchemy_heat/fire block tag, heat-source and furnace-spec entries, and AlchemyGateProbes.

Quality

  • rarity is gone from spirit_root and physique; both now declare an optional quality. The mxt.rarity.* translation keys and DefinitionText.rarity(...) were removed, and commands print a tier through QualityService.displayName(...).
  • A stack's tier resolves in three layers, only in QualityService.find: the mxt:quality component → the definition the stack itself carries (a type implementing the new api.QualityProvider, registered as a carrier in QualityCarriers) → the new mxt:default_quality registry. Nine definition types are carriers (technique, alchemy furnace, wall material, spirit root, physique, pill, formation plate, secret-realm token, contract scroll); list-form carriers are absent by design.
  • New registry mxt:default_quality: items (matcher entries), quality, optional priority.
  • mxt:item_quality now reads a full requirement: quality (membership, holder or tag) plus the new min_quality, resolved through the same order the tooltip and the gate use — so a definition's own default tier counts as the stack's tier.
  • New matcher entries mxt:quality and mxt:ingredient, and a new NeoForge ingredient type mxt:quality (MxtIngredientTypes) so a tier-bearing item can be required anywhere the game takes an ingredient.
  • Comparing tiers has a single outlet (QualityLadders.compare): positive means the first is higher, and empty means "not comparable" — cross-ladder, or a tier no walked ladder holds — never "lower".
  • Alchemy gates that survive at HEAD: the optional furnace_quality and input_quality fields (each the nested quality / min_quality requirement), refusing with FURNACE_TIER / INPUT_TIER before any material is taken; the furnace_rank formula variable; and batch time divided by the product of the lowest tiered input's alchemy_modifier and the core's.
  • New mxt:physique item (PhysiqueItem) with the mxt:physique component and its own lang keys and tooltip appender — a physique can now be granted by using an item, the way the spirit-root stone already worked.
  • KubeJS gained MxtQuality.compare(...), satisfiesQualityRequirement(...) and qualityAtLeast(...).

Sword aura

  • New entity mxt:sword_aura and renderer registration, plus the new entity action mxt:spawn_sword_aura with speed, blade_color, aura_color, radial_flame, length, blade_width, thickness, handle_length, guard_width, scale, lifetime and collide_action.
  • Rendering is new work: 9 classes under render/sword/ and render/sword/flame/, 4 GLSL shader pairs plus 5 includes, a surface reaction/convection fluid simulation with Halton-sampled GPU particles, and a three-step distance LOD.
  • New client config category flames: enabled, intensity, wind x/y/z and coefficient, the three LOD distances and particle counts, surface opacity and soft distance.
  • Test probe /mxt_test sword_aura [count] [distance], plus /mxt_test sword_aura clear.

AUI migration

  • Every page now ships in the jar under assets/apricityui/apricity/mxt/<name>/: a shared common/theme.css, and pages for alchemy (four views), the wheel and its editor, forging, spirit crafting, the economy screens (two station views, exchange, cheque, trade), the information panel, the structure preview and the talisman workstation. Nothing is written into the game directory — <gameDir>/apricity/ remains the player's override layer.
  • New host layer screen/aui/: AuiScreen (a page with no menu), AuiContainerScreen (a page over a menu), AuiWrappedScreen (the page contract: warm the stylesheets, bind once the document exists, then write per frame), AuiPages, AuiElements, AuiStyles, AuiScrollList.
  • Container menus that draw a page extend ApricityUI's ApricityContainerMenu and declare their layout through PageSlots; slot geometry, item drawing, hover and click are ApricityUI's slot binder, not the mod's.
  • The four-line access transformer that made Slot.x / Slot.y writable is gone, because nothing in the mod writes them any more.
  • The item picker moved out of the screen package: mxt.picker.ItemPickerManager.
  • The technique panel screen is gone. The information panel carries that content (screen.mxt.information_panel.tab.info), and its key now toggles the panel open and closed; the key.mxt.technique_panel keybind is removed. The wheel ring render-state class and the old alchemy page helper were removed with it.

Breaking changes

  • A stack's datapack tier source changed: spirit_root and physique no longer read rarity (the key is silently ignored, per the usual codec rule — such a definition simply has no tier). Write quality instead.
  • Built alchemy furnaces must be rebuilt: the structure now requires the middle layer's inner cell to be a wall, and the bottom layer is only anchored at its four corners, so an old hollow-centred furnace no longer forms.
  • Heat sources are data-driven: a furnace reads the block in its bottom-centre cell, and that block must either be listed in mxt:heat_source or implement api.AlchemyHeatSource. The old "exotic fire" tooltip key is gone; the ceiling is the lowest of the three limits above.
  • The talisman_ink item (符墨) is removed. Stacks of it in old saves no longer resolve to an item.
  • The key.mxt.technique_panel keybind is removed; the technique page now lives inside the information panel under its own key.
  • Renames that affect Java and scripts: ItemQualityService → QualityService; CostTransaction (+ Charge) → CostPayment (+ CostDraft, CostDraftManager, ResourceCostDraft, AuraCostDraft). MxtCosts.check / consume now answer through Cost.test / Cost.commit directly.
  • ApricityUI is required on the client (apricityui_version 1.2.6). UI pages must live under assets/apricityui/apricity/mxt/ — ApricityUI lists any namespace's apricity/ folder but resolves content as apricityui:apricity/<path>, so a page under this mod's own namespace is listed and never opens.
  • Minor JSON additions are safe to ignore: mxt:item_quality gained min_quality, alchemy_furnace gained an optional max_temperature, and wall materials gained an optional quality and a required max_temperature.

Fixes

  • Quality ladders: name inheritance could loop forever before the cycle check ran; the walk, ranking and cycle diagnosis now share one implementation, and a ladder that cannot be walked is not indexed at all.
  • Ability grants: equipping a new item used to revoke the old one's abilities under the new item's source, and a full recalculation used to clear state before re-granting. Granting is now a per-source diff.
  • Formations: upkeep used to pre-check the full balance, and two formations sharing one definition cancelled each other's abilities. Supply attribution and grant identity are now per formation instance.
  • Payments: costs are loaded, tested and committed before anything happens, several payments can be written as one boundary with reverse-order rollback, and a key-activated ability checks that it can activate before paying.
  • Trades: a trade confirmation is now bound to the quote version, and closing a trade no longer depends on the client sending a custom action.
  • Secret realms: writing the realm state is no longer detached from the teleport result.
  • Server-side write entry points now go through one permission gate, and the duplicate cultivation tick path was removed.

Removals

  • The talisman_ink item (符墨), its model, texture and lang keys.
  • The key.mxt.technique_panel keybind and the technique panel screen.
  • screen.mxt.alchemy.template_missing / template_invalid (pages are read from the jar, so there is no template to miss), and tooltip.mxt.alchemy.fire.