跳到主要内容

MxtPhysiques:体质

体质是同一身份的元素无关那一半:它授予原版属性与能力、缩放持有者打出与受到的伤害,并通过互斥标签排除其他体质。与元素绑定的那一半是 MxtSpiritRoots。授予时 holder_condition 与 exclusive_tags 按当前实体判定。

方法​

方法参数返回值说明
list(entity)EntityList<String>该实体持有的体质 ID,按 ID 排序(allow_stacking 时同一个 ID 可能出现多次)。
active(entity)EntityList<String>现在生效的体质。
has(entity, physique)Entity、体质 IDboolean是否持有。
enabled(entity, physique)Entity、体质 IDboolean该体质是否处于开启状态;不持有则为 false。
grant(entity, physique)LivingEntity、体质 ID{changed, failure}走权威服务授予,holder_condition 与 exclusive_tags 按当前实体判定。
remove(entity, physique)LivingEntity、体质 IDboolean移除该体质及其属性、能力与伤害倍率;本来没持有则为 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(在客户端调用)。四个读方法两侧都能用,改变状态的方法是服务端操作。

// 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)

相关​