Skip to content

更新类属性

UPDATE_AFTER

提示

非玩家实体也可以触发

需要重写的方法

JavaScript
/**
 * @parms attr 属性本身,JsAttribute 对象
 */
function onEnable(attr)

/**
 * @parms attr 属性本身,JsAttribute 对象
 * @param entity 触发者,LivingEntity 对象
 * @param handler 处理器,UpdateAfterHandler 对象
 * @return 属性是否触发,布尔值
 */
function onUpdateAfter(attr, entity, handler)
Groovy
@Override
void onEnable()

/**
 * @param entity 触发者,LivingEntity 对象
 * @param handler 处理器,UpdateAfterHandler 对象
 * @return 属性是否触发,布尔值
 */
@Override
boolean onUpdateAfter(LivingEntity entity, UpdateAfterHandler handler)

处理器实现的接口

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,则不会触发)