内置物品与组件
MiXianTu 不为每个玩法预设具体数值,但提供少量通用承载物品和组件。数据驱动物品玩法通常通过绑定表匹配现有物品。
通用物品
当前内置内容包括灵石系列、灵铁锭、灵木、朱砂、符纸、符箓、契约卷轴、召回符、御兽铃、令牌、灵石袋、戒指、锻造台、药渣、杂质、秘境奖励箱和展示架等。具体注册名以 src/main/java/com/iafenvoy/mxt/registry 和资源文件为准。
物品绑定
| 注册表 | 用途 |
|---|---|
item_binding | 给现有物品附加行为、条件、灵根或通用显示。 |
weapon_binding | 配置伤害、攻击速度、属性和攻击/使用/Tick 行为。 |
pill_binding | 配置丹药消耗和行为。 |
technique_binding | 将功法定义绑定到书籍、玉简等现有物品。 |
物品匹配支持单个物品、原版物品标签、通配符、正则和混合数组。
灵气物品
item_aura 定义物品可释放的灵气容量、消耗速度、完成行为和可选 result_stack。修炼时会整组取出物品,容量、消耗速度和释放速度均按堆叠数量叠加,因此总消耗时间不变。物品剩余灵气保存在 item_aura 组件中,容量始终由数据包定义动态计算。
MiXianTu 是框架模组。本体只提供可被多个系统复用、没有固定流派或数值玩法的物品;具体武器、丹药、灵草、符纸、阵旗、法宝、契约物和储物道具应由数据包或 KubeJS 注册并通过绑定表接入。
| 物品 | ID | 默认货币值 | 框架定位 |
|---|---|---|---|
| 下品灵石 | mxt:spirit_stone | 1 | 基础灵气媒介与交易单位。 |
| 中品灵石 | mxt:medium_spirit_stone | 10 | 压缩的基础灵石。 |
| 上品灵石 | mxt:high_spirit_stone | 100 | 高阶交易与高消耗系统的默认媒介。 |
| 极品灵石 | mxt:supreme_spirit_stone | 1000 | 稀有的高价值媒介。 |
| 支票 | mxt:cheque | 由物品组件决定 | 现有交易系统的可签发价值载体。 |
四种灵石共享 SpiritStoneItem 基类,实现灵气充入和抽取。容量不在代码中定义,而是取匹配 item_aura 条目的 aura;装的是哪种灵气则记在物品自己身上——与符箓共用的存储组件 mxt:spirit_storage 把数量记在灵气键下({amounts:{"mxt:common":100}}),所以数据包事后改掉 item_aura 的 type 时,世界里已有的灵石不会被悄悄改写成另一种灵气(它只会与新 type 对不上,因而装不进也烧不出)。未携带该组件的灵石视为满充,灵气类型按定义读;空 map(或没写下那种灵气)表示空充。数据表重新加载后,首次真实存取会将超上限旧值截断。灵石一次只装一种灵气、容量也就是 aura 那一个数,所以它读的是存储里唯一的那条记录。展示台接收灵力时会尝试为其展示的灵石充能,修炼燃料耗尽时则会将同一枚灵石抽空后归还。默认 currency 数据包只定义 10:1 双向兑换和值;内容方可直接覆写这些条目,或在 item_binding、阵法、法宝、修炼和交易定义中引用任意一种灵石。
空白载体与固定材料
以下物品同样都是普通 Item,没有本体行为;它们的用途由绑定表、组件、数据包和 KubeJS 决定。方块与已经存在的四阶灵石不在此表重复列出。
| 分类 | 物品 |
|---|---|
| 基础材料 | mxt:spirit_iron_ingot、mxt:spirit_iron_nugget、mxt:spirit_wood、mxt:spirit_wood_core、mxt:cinnabar、mxt:alchemy_dregs、mxt:impurity |
| 空白载体 | mxt:spirit_ring、mxt:spirit_stone_bag |
| 身份与记录 | mxt:wooden_token、mxt:stone_token、mxt:spirit_root、mxt:cultivation_jade_slip、mxt:blank_talisman_paper |
| 固定道具 | mxt:contract_scroll、mxt:recall_talisman、mxt:beast_taming_bell、mxt:realm_reward_box |
统一功能载体
以下物品由本体提供统一服务端实现。物品只保存数据包 Holder 或持久化状态,不复制对应模块的规则;具体契约、阵法、秘境和资源数值仍由数据包定义。
| 物品 | ID | 持久化组件 | 统一行为 |
|---|---|---|---|
| 契约卷轴 | mxt:contract_scroll | mxt:contract_scroll | 保存 contract_type,对生物使用时由 ContractService 校验并签订契约。 |
| 御兽铃 | mxt:beast_taming_bell | 无 | 对自己的契约灵宠执行统一召回。 |
| 灵兽袋 | mxt:spirit_beast_bag | mxt:spirit_beast | 保存一只已契约生物的完整持久化实体数据;对灵宠使用收纳,空袋右键释放。 |
| 阵盘 | mxt:formation_plate | mxt:formation_plate | 保存 allowed(允许激活哪些阵法,支持 #标签)与 formation(当前选中);对方块使用时调用 FormationWorldService。没绑定阵法时会自动识别脚下这座阵法。 |
| 秘境令牌 | mxt:realm_token | mxt:realm_token | 保存 realm_instance;右键进入绑定秘境,在秘境内右键返回原位置。 |
| 灵力容器 | mxt:spirit_vessel | mxt:resource_container | 保存任意 resource;右键释放给持有者,潜行右键从持有者存入,每种资源容量为 1000。 |
| 木/石令牌 | mxt:wooden_token、mxt:stone_token | mxt:token | 统一承载 kind、value、owner,供秘境和交易等权限系统共用。 |
| 鉴定镜 | mxt:identification_mirror | 消费 mxt:identification | 统一解析带有鉴定组件的物品;具体待鉴定物品由内容包或其他模组提供。 |
| 符笔、符墨 | mxt:talisman_brush、mxt:talisman_ink | 无 | 制符和阵法内容的通用基础输入,与空白符纸配套,具体配方由数据包或 KubeJS 提供。 |
| 符箓 | mxt:talisman | mxt:talisman + mxt:spirit_storage | 保存已铭刻的符箓:一个按追加顺序排列的 talisman 定义条目列表,加上一个模式字段 mode("fire" 缺省/"store"),空列表就是刚做出来的空载体。手持按住右键灌注灵气(容量 = 所铭刻定义的 aura_cost 合计,按灵气分别计量),灌满那一刻铭刻的能力全部发动并消耗一件本体(store 模式除外:它只积累,不自动发动)。潜行 + 右键切换模式,store 且已灌满时潜行使用不切换而是直接发动。摆在展示架上被填满时按模式处理,并以展示架的位置作为激发地点——公式与位置类行为都用它(见 灌注与激发)。铭刻(写符)服务尚未接入,mxt:talisman 组件目前可以手写或用物品组件语法直接写入(/talisman give 也能发);灌注进度与灵石共用同一个存储组件 mxt:spirit_storage(按灵气记已灌单位,缺省表示一点都没灌)。徒手右键与灌满自动发动走同一个入口,但两条规则各按"在哪"分:冷却只是手上的闸门(服务端配置「符箓 → 使用冷却」,默认 20 刻、0 关闭),一次尝试就进冷却,窗口内长按灌注不会发动、那一 tick 的灵气也不会被灌进去;消耗则按位置分——手上一次发动消耗一件本体(创造模式不消耗),摆在展示架上的永远消耗、且不查也不记冷却。两条规则都由 SpiritSource.consumedByHand() 区分。 |
数据组件示例
组件值可以直接在物品组件语法或 KubeJS 中写入,引用的数据包注册表 ID 会由原版注册表 Codec 解析:
give @s mxt:contract_scroll[mxt:contract_scroll={contract_type:"mxt_test:master_servant"}]
give @s mxt:formation_plate[mxt:formation_plate={formation:"mxt_test:spirit_gathering"}]
give @s mxt:realm_token[mxt:realm_token={realm:"mxt_test:trial_realm"}]
give @s mxt:spirit_vessel[mxt:resource_container={"mxt_test:qi":25.0}]
give @s mxt:talisman[mxt:talisman={talismans:["mxt_test:flame_sigil"]}]注意 mxt:resource_container 的值是裸 map,键就是资源 ID,没有 values 外壳;写错外壳会被当作一个无法解析的键静默忽略(只留一条 WARN 日志),容器仍是空的。
铭刻好的符箓还可以带上一部分灌注进度(mxt:spirit_storage 与灵石共用,按 aura 记已灌单位,缺省表示一点都没灌):
give @s mxt:talisman[mxt:talisman={talismans:["mxt_test:common_sigil"]},mxt:spirit_storage={amounts:{"mxt:common":3}}]阵盘也可以在游戏内绑定:主手持有阵盘时执行 /mxt formation bind <formation>(需要 gamemaster 权限)。绑定不再是取得可用阵盘的前提——没绑定的阵盘右键时会自己认出脚下的阵法(见 未绑定的阵盘会自动识别),命令与组件语法的用处变成了限制这块盘能立哪一座。组件语法要求先知道注册表 ID 和 NBT 结构,命令则由服务端做 Tab 补全并在 ID 不存在时拒绝。
契约卷轴、阵盘和秘境令牌没有绑定定义时会安全失败,并显示提示;灵兽袋、灵力容器和令牌的状态保存在 ItemStack 数据组件中,服务端是唯一权威。