Skip to content

药水效果

前言

注意

只有“有生命的实体”才能添加药水效果,并且这个实体不会免疫你要添加的药水效果。

矿车,不是有生命的实体;盔甲架尽管是有生命的实体,但其是特殊的,免疫所有药水效果。

有生命的实体:继承LivingEntity类,不懂没关系,不影响下边的使用。

添加到实体

  • 语句:entity.potionEffects.add(args); 具有4个方法重载。

  • 例:当进行实体交互,玩家获得夜视效果。

js
// 使用实体交互事件演示
ItemEvents.entityInteracted(event => {
    const { entity, target, hand, server, level } = event;
    if (hand !== 'main_hand') return;
    /**
     * 药水id,持续时间,等级,是不是环境效果,有没有粒子效果
     */
    entity.potionEffects.add('minecraft:night_vision', 200, 0, false, true);
})
js
// 使用实体交互事件演示
ItemEvents.entityInteracted(event => {
    const { entity, target, hand, server, level } = event;
    if (hand !== 'main_hand') return;
    /**
     * 药水id,持续时间,等级 - 默认不是环境效果,有粒子效果
     */
    entity.potionEffects.add('minecraft:night_vision', 200, 0);
})
js
// 使用实体交互事件演示
ItemEvents.entityInteracted(event => {
    const { entity, target, hand, server, level } = event;
    if (hand !== 'main_hand') return;
    /**
     * 药水id,持续时间 -默认0级(游戏内1级),不是环境效果,有粒子效果
     */
    entity.potionEffects.add('minecraft:night_vision', 200);
})
js
// 使用实体交互事件演示
ItemEvents.entityInteracted(event => {
    const { entity, target, hand, server, level } = event;
    if (hand !== 'main_hand') return;
    /**
     * 药水id - 默认持续10秒,0级(游戏内1级),不是环境效果,有粒子效果
     */
    entity.potionEffects.add('minecraft:night_vision');
})

实体是否拥有

  • 语句:livingEntity.hasEffect(药水效果注册名);

  • 例:尸壳是否有夜视。

js
ItemEvents.entityInteracted(event => {
    const { entity, target, hand, level, server } = event;
    if (hand !== 'main_hand' || target.type !== 'minecraft:husk') return;
    
    /**@type {Internal.LivingEntity} */
    const livingEntity = target;

    const boolean = livingEntity.hasEffect('minecraft:night_vision');

    console.log(`尸壳是否具有夜视药水效果:${boolean}`);
});

Contributors

Changelog