mxt-1.0-beta.4.jar
Curse Maven Snippet
What's new
Breaking changes for pack authors
name/descriptionno longer exist on any definition. Translate the generated key instead.- Definition text keys changed shape and all now start with
mxt.. Packs translating the old keys must migrate. realm_stage.minor_stagesis a count, not a list of names — writing an array fails the whole definition.- The spirit herb plot block is gone; herbs are claimed by block in the world.
- 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:incompletedatapack 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
prioritystays 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_typedispatch 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
TokenOwnerBridgefor token ownership transfer. - The spirit herb plot block was removed (block, block entity, renderer, blockstate, model, item file, loot table, and the
mineable/shoveltag entry): herbs are no longer farmed on a dedicated plot. - Reward box renamed from
secret_realm_reward_boxtoreward_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.
nameanddescriptionfields 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 alwaysmxt, so every mod definition key begins withmxt.. Descriptions append.description; minor realm stages append.minor_stage.<0-based index>. - Text output goes through
DefinitionText.name/description/minorStage, taking aHolderwhere one is available, aResourceKeyotherwise, and a bareIdentifierplus 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 twomixin/codec/*mixins (plus theirmxt.mixins.jsonentries) 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 exampleelement.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 themessagegroup (command.mxt.message.requires_player,.invalid_id,.none,.picker), and the/contract levelfailure table moved tocommand.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+ manualsuggests+ runtime holder re-lookup to vanillaResourceArgument, and toResourceKeyArgumentwhere 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.javadeleted; newcommand/RegistryReferences.javacentralizes 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

