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

File namemxt-1.0-beta.1.jar
Uploader
IAFEnvoyIAFEnvoy
Uploaded
Sep 25, 2026
Downloads
23
Size
4.0 MB
Mod Loaders
NeoForge
File ID
8970222
Type
B
Beta
Supported game versions
  • 26.1.2

Curse Maven Snippet

NeoForge

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

Learn more about Curse Maven

What's new

Added

Quality chain and upgrades

  • New mxt:quality_chain registry: tiers (low → high), default, per-step upgrades with costs + condition, validated at load (registries 34 → 35).
  • Quality now resolves through one fixed order: mxt:item_quality component → mxt:forging_result → the item's own definition default (artifact.quality / technique.quality) → the binding chain's default → the herb's declared quality.
  • /quality (/mxt quality) with get / set / clear / upgrade / chain; upgrades pay atomically through CostTransaction.
  • quality definitions gained an optional color, used for the tinted item name, the "Quality: name" tooltip line, /picker entries and the blueprint tier table.
  • Client config tooltips.tint_item_name (on by default); server command-alias switches quality and realm.

Unified costs

  • Eleven "use cost" fields now share one shape, Cost[]; new mxt:aura type (aura + amount) pays per aura identity, and mxt:item / mxt:js are usable outside ability.costs.
  • CostTransaction (pay / plan / planDeferred / commit): all-or-nothing per group, per-channel rollback, mxt:js paid last; CostFailure records why a payment failed.
  • Payer widened from Player to LivingEntity with explicit channels (RESOURCE_ACCOUNT, PLAYER_INVENTORY, WORLD_AURA, AURA_BANK, SCRIPT); a missing channel is a refusal, not an error.
  • Formation maintenance_costs can name a resource account directly, so upkeep still has an account when the owner is offline.
  • Artifact tooltips list aura costs by name and amount, plus an "other costs" line for item/script costs.

Universal abilities (artifact-only abilities merged in)

  • mxt:ability gained hidden (default false) and item_action; the type dispatch is a single flat top-level type.
  • Togglable (state / gated / activate) plus one server-side entry point, AbilityActivationService, shared by the wheel, commands and KubeJS.
  • mxt:storage (slots), mxt:upkeep (interval, on_fail, owner_only) and the flight pair below are ordinary mxt:ability_types; a carried ability's own type decides whether it takes a wheel cell.
  • Cooldown renders as a vanilla-style white overlay on the wheel cell instead of a text line.
  • KubeJS: activateAbility(holder, id, carrier).

Flying artifacts

  • mxt:mount (vehicle data): speed, seats (1..4, driver included), sit, display, width / height, step_height, seat_offsets, mount_action (on_mount / on_dismount / tick, all three running on the driver) and trail (particle, interval, count, speed, spread, offset_x / offset_y / offset_z, moving_only).
  • mxt:flight_control (the pressed skill): hand (main / off / either) and speed_multiplier; takes a mxt:mount artifact from the main hand, then the off hand.
  • Multi-seat flight: right-click the mount to board; the artifact leaves the hand, rides inside the mount entity and is returned in full when the flight ends; the driver's logout or death ends the trip for everyone.
  • New rebindable key X for descending, so sneaking is vanilla dismount again; new server config flight.follow_look (on) makes forward/back follow the look direction.
  • /flight fill (gamemaster) fills free seats with literal zombies in unbreakable helmets for eyeballing seat offsets.

Creatures and contracts

  • ContractBehavior + ContractBehaviors (follow / wander / stay / recall): behaviors are classes, extended with register(...) rather than an enum.
  • /contract with list / info / bind / break / recall / behavior, backed by the new mxt:bound_beasts world attachment.
  • mxt:contract_bell component plus a wheel page (WheelSource.CONTRACT / WheelEntryKind.BEHAVIOR): right-click a beast to aim at it, right-click air to open the wheel.

Names, descriptions, documentation plumbing

  • name / description on the self-naming registries, auto-generated from the entry id; api/NamedDefinition, ContextNameCodec, ContextNameListCodec.
  • realm_stage.minor_stages (explicit list or integer count) and the formula variable minor_stage; the information panel shows the minor stage.
  • Registry mixins attach the decoding entry's ResourceKey, which is what makes default text possible at load time.

Changed

  • Artifact abilities now reference ability ids or #tags; ability identity is always the ability's own registry holder.
  • Translation keys follow <category>.mxt.<namespace>.<path> (for example aura.mxt.mxt.fire, quality.mxt.example.refined).
  • Registries renamed: mxt:realm_instance → mxt:secret_realm, mxt:item_quality → mxt:quality (data directories and tag directories follow).
  • Secret realms: instance and dimension keys <ns>:realm/… → <ns>:secret_realm/…, template root mxt_realm/ → mxt_secret_realm/, mxt:in_realm_instance → mxt:in_secret_realm, secret_realm_* formula variables, KubeJS event group realmInstance → secretRealm.
  • Quality: binding tables use quality_chain instead of quality_group, technique.grade became quality, and the default tier is the chain's default (lowest tier when omitted).
  • Flight economy: the one-off take-off price belongs to the skill, while the per-tick fuel belongs to the mount's costs, paid out of the carried artifact's own aura store first and only the remainder by the driver; running dry lands the vehicle and rolls back what was already taken.
  • Flight state records the ability id and the vehicle separately; geometry, pose and passenger rules are read from mxt:mount, with entity constants left only as fallbacks; the mount move()s every tick, so colliding with a block or the ground really lands it.
  • Storage energy became double (stored / setEnergy / addEnergy / consumeEnergy), with whole-unit reads using floor plus clamping.
  • Creatures: follow_action runs only while the active behavior is follow and combat_action runs after damage resolution; the spirit beast bag releases on a block face; CreatureProfile's single spawn_action runs once when the profile is written; extra drops go through vanilla loot tables; who can be contracted is decided by the entity implementing Contractable.
  • mxt:flight and spirit burst widened from players to any LivingEntity.
  • Commands: registry arguments use vanilla ResourceArgument (with Suggestions.enabledIds kept for nodes that must name disabled or removed entries), server nodes live in command/server, client nodes in command/client, and the gamemaster check has one home in ServerCommandManager::mayChange.
  • Attachments read leniently (lenientOptionalFieldOf) and store registry references as Holder / ResourceKey.

Removed / Renamed

  • Inline abilities are gone: artifact abilities no longer accepts ability objects with a key; abilities live in data/<namespace>/mxt/ability/<path>.json.
  • mxt:artifact_ability_type and its built-ins (mxt:passive, mxt:active, the artifact-only flight/storage/upkeep variants) are gone in favour of mxt:ability_type.
  • WheelEntryKind.ARTIFACT / ArtifactWheelEntry removed; old saves read such a cell as ability.
  • Classes removed: ToggableArtifactAbility, ArtifactToggleService, ArtifactCapability, EmptyArtifactAbility, GrantArtifactAbility, FlightArtifactAbility, StorageArtifactAbility, UpkeepArtifactAbility, MxtArtifactAbilityTypes, ArtifactService.resolveAbilities, CommandManager (split into server/client managers), IdentityCommand, WeightedActionEntry (→ Weighted), data/resource/ResourceCost and the old data/cost/* cost classes (→ data/cost/builtin/*).
  • Java API: Cost#check(Player) / Cost#consume(Player) → Cost#charge(CostContext); ResourceTransactions.evaluate(...) removed; ResourceLedger.tryConsume(Map<Identifier, Double>); Toggable.key() / displayName() removed; AbilityAttachment and SkillStageService.damageMultiplier take Identifier.
  • CreatureProfile: contract_tags, loot_table and realm_stages removed, entity_type_tags → entities, inner_core is a full item stack.
  • ContractType.break_action / penalty_action → release_action / death_action; ContractAttachment.owner removed (the entity's OwnableEntity answers instead).
  • mxt:weighted_list entries changed from {data, weight} to {value, weight?}; mxt:choice entries from element to value.
  • SpiritBeastComponent stores entity_type plus an id-less entity; old bags no longer decode.
  • Commands: /mxt realm_instance … → /mxt secret_realm …; /mxt identity root|physique … → /mxt spirit_root … / /mxt physique …; /talisman give takes a single id (use the mxt:talisman component for several).
  • Config: commands.identity → commands.spirit_root + commands.physique. Lang keys actionbar.mxt.wheel.no_selection, actionbar.mxt.artifact_skill.*, wheel.mxt.kind.artifact, mxt.registry.item_quality and the old artifact tooltip keys were replaced.

Fixed

  • Cost amounts that do not evaluate to a finite positive number now refuse the payment (CostFailure.INVALID_AMOUNT) instead of throwing while deducting.
  • Broken cost entries no longer get silently dropped by the tolerant list codec: they fail the load, and duplicates in one array are a load error (a resource plus the aura measured in it still adds up).
  • Command registry arguments now get vanilla parsing, tab completion and "no such entry" errors, and disabled entries are consistently rejected.
  • One unreadable field in an attachment no longer discards the whole attachment.
  • /mxt ability revoke works for abilities that are currently disabled or whose definition was deleted.
  • Wheel selection can no longer end up with nothing selected (falls back to the first held entry).
  • Out-of-range resource changes are clamped to the bounds; the documentation said they were rejected.