Skip to content

更新类属性

UPDATE_AFTER

提示

非玩家实体也可以触发

需要重写的方法

JavaScript中
onEnable(attr)
onUpdateAfter(attr, entity, handler)

Groovy中
onEnable()
onUpdateAfter(entity, handler)

参数解释

attr: 属性本身,JsAttribute 对象(仅 JavaScript)
entity: 触发属性更新者,LivingEntity 对象
handler: 属性处理器,UpdateAfterHandler 对象

处理器实现的接口

AttributeHandler AttributeTracker MetadataTracker

示例

JavaScript
Groovy

绑定修改属性源事件

部分时候,我们不止需要在属性更新后触发它,还有可能需要在属性源发生变动时也触发它,但属性源发生变动时,并不会触发属性更新事件,比如:需要在含有生命值属性的属性源添加或移除时,修正玩家生命值

可以在 onEnable 时,为属性添加一个元数据,如下

JavaScript
function onEnable(attr) {
    attr.setMeta("bind source event", true)
}
Groovy
@Override
void onEnable() {
    this.setMeta("bind source event", true)
}

这样添加或移除属性源时,也会触发这个属性了(若属性源中的这个属性值为 0,则不会触发)