MxtPhysiques:体质
体质是同一身份的元素无关那一半:它授予原版属性与能力、缩放持有者打出与受到的伤害,并通过互斥标签排除其他体质。与元素绑定的那一半是 MxtSpiritRoots。授予时 holder_condition 与 exclusive_tags 按当前实体判定。
方法
| 方法 | 参数 | 返回值 | 说明 |
|---|---|---|---|
list(entity) | Entity | List<String> | 该实体持有的体质 ID,按 ID 排序(allow_stacking 时同一个 ID 可能出现多次)。 |
active(entity) | Entity | List<String> | 现在生效的体质。 |
has(entity, physique) | Entity、体质 ID | boolean | 是否持有。 |
enabled(entity, physique) | Entity、体质 ID | boolean | 该体质是否处于开启状态;不持有则为 false。 |
grant(entity, physique) | LivingEntity、体质 ID | {changed, failure} | 走权威服务授予,holder_condition 与 exclusive_tags 按当前实体判定。 |
remove(entity, physique) | LivingEntity、体质 ID | boolean | 移除该体质及其属性、能力与伤害倍率;本来没持有则为 false。 |
setEnabled(entity, physique, enabled) | LivingEntity、体质 ID、boolean | {changed, failure} | 与灵根同义的开关。 |
灵根与体质共用同一套 failure 词表:DISABLED(注册表里没有这个 id,含被 neoforge:conditions 挡掉的定义)、ALREADY_HELD、CONDITIONS(体质 holder_condition 不满足)、EXCLUSIVE_CONFLICT、ELEMENT_CONFLICT(灵根 conflicting_elements)、NOT_HELD、SERVER_ONLY(在客户端调用)。四个读方法两侧都能用,改变状态的方法是服务端操作。
js
// kubejs/server_scripts/mxt_physique.js
const result = MxtPhysiques.grant(player, 'mxt_test:blazing_body')
if (!result.changed) console.warn(`refused: ${result.failure}`)
// 关闭不等于失去:body 还拿着它,只是什么都不生效。
MxtPhysiques.setEnabled(player, 'mxt_test:blazing_body', false)相关
- 数据包侧:体质
physique。 - 另一半身份:MxtSpiritRoots(两者配合的洗练示例在那里)。
- 管理员命令:/physique。
- KubeJS API 参考。