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

File namemxt-1.0-beta.4.jar
Uploader
IAFEnvoyIAFEnvoy
Uploaded
Oct 11, 2026
Downloads
19
Size
5.0 MB
Mod Loaders
NeoForge
File ID
9130073
Type
B
Beta
Supported game versions
  • 26.1.2

Curse Maven Snippet

NeoForge

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

Learn more about Curse Maven

What's new

Breaking changes for pack authors

  1. name / description no longer exist on any definition. Translate the generated key instead.
  2. Definition text keys changed shape and all now start with mxt.. Packs translating the old keys must migrate.
  3. realm_stage.minor_stages is a count, not a list of names — writing an array fails the whole definition.
  4. The spirit herb plot block is gone; herbs are claimed by block in the world.
  5. The JS loot condition and loot function were removed.

Features

Incomplete-item markers

A data-driven way for packs to flag items that are not finished yet.

  • New mxt:incomplete datapack registry. A declaration is nothing but an item matcher, so a pack can mark an item, a tag, another mod's item, or a stack-dependent reading such as a tier or an ingredient.
  • Overlap is deliberately unresolved: every matching declaration draws the same badge, so priority stays at the interface default and no file has to be ordered ahead of another.
  • An empty entry list is rejected at load time — it could only be a file written against a list meant to be filled in.
  • Four new item conditions: mxt:item_physique, mxt:item_technique, mxt:item_spirit_root, mxt:item_talisman.

Talisman use-type dispatch

Talismans now declare how they are used instead of all behaving the same way.

  • New talisman_type dispatch registry (code-registered, like the other intrinsic type tables, not a datapack table) with five built-in types: empty (the default), self, area, crosshair, thrown. Packs select one per talisman definition.
  • New thrown-talisman projectile entity, with renderer and render state, plus the supporting entity-type and renderer registrations.
  • Talisman tooltips extended to describe the new use types.

Spirit herbs and the alchemy loop

A rework of how spirit herbs exist in the world and how their power is computed.

  • Herbs are claimed by block rather than by item. Growth is driven by a chunk attachment (mxt:herb_chunk) and a chunk ticker instead of a per-block entity.
  • New age model: age is a formula input (herb_age), not a hidden multiplier, so a pack that wants older herbs to be stronger writes that into the potency formula. Herb quality can be driven by age.
  • Wild herbs can be adopted; drops are matched back to their plant through the drop matcher.
  • New Jade integration for spirit herbs: a block component provider and a server data provider, registered separately and paired by a shared uid, since Jade rejects one object serving both roles.
  • New TokenOwnerBridge for token ownership transfer.
  • The spirit herb plot block was removed (block, block entity, renderer, blockstate, model, item file, loot table, and the mineable/shovel tag entry): herbs are no longer farmed on a dedicated plot.
  • Reward box renamed from secret_realm_reward_box to reward_box (item file, model, texture renamed in place).

Miscellaneous

  • Bedrock creative-tab group files for coins, spirit stones, and display stands.
  • New block/item tags for workstations, display stands, spirit stones, and coins.

Refactors

Named definitions removed — text is now generated from the registry id

The largest structural change in the range, and a breaking change for data packs.

  • name and description fields are gone from all 24 definition types. Names and descriptions are now always derived from the registry id; the only way a pack can give a definition text is to translate the generated key.
  • Generated key shape: <registry namespace>.<registry path>.<id namespace>.<id path>. The registry namespace is always mxt, so every mod definition key begins with mxt.. Descriptions append .description; minor realm stages append .minor_stage.<0-based index>.
  • Text output goes through DefinitionText.name / description / minorStage, taking a Holder where one is available, a ResourceKey otherwise, and a bare Identifier plus an explicit category only where nothing else exists (commands, network payloads, Jade).
  • Removed outright: api/NamedDefinition, util/codec/ContextNameCodec, util/codec/ContextNameListCodec, accessor/ResourceLoadingOps, and the two mixin/codec/* mixins (plus their mxt.mixins.json entries) that carried the decoding-time entry id into the codecs.
  • DefinitionText.resolved(...) is now the gate for "does this text actually exist", and matters more than before: since literal text can no longer be written, every description renders only once it has been translated.

Language keys unified

  • Definition keys reordered to <registry namespace>.<registry path>.<id namespace>.<id path>, previously <registry path>.<registry namespace>.<id namespace>.<id path>. This landed in the final commit; the 10 definition keys present in the bundled lang files were migrated (for example element.mxt.mxt.common → mxt.element.mxt.common).
  • Command message keys regrouped to command.mxt.<group>.<name>, where the group is the command's own segment, so each command's strings can be found by command. Strings shared by all subcommands moved to the message group (command.mxt.message.requires_player, .invalid_id, .none, .picker), and the /contract level failure table moved to command.mxt.contract.failure.<lowercase enum name>.
  • 19 keys renamed in each language file (10 definition keys plus 9 command keys); total key count unchanged at 1166.

Commands and formation actions

  • Reference arguments migrated from a hand-rolled IdentifierArgument + manual suggests + runtime holder re-lookup to vanilla ResourceArgument, and to ResourceKeyArgument where a body-held reference must stay resolvable after the entry leaves the registry.
  • Dimension arguments moved to vanilla DimensionArgument, read as an id so a dormant secret realm is not judged invalid.
  • command/Suggestions.java deleted; new command/RegistryReferences.java centralizes key reading and its error message.
  • The JS loot condition and loot function were removed, along with their registry entries.
  • Formation action runner and range display reworked.

This mod has no additional files