开发环境: Spigot-1.16.5
JDK 版本: 1.8
如果玩家已经有某个药水效果,那么 add 会失败
所以新增某药水效果之前要移除其原有的该药水效果
import org.bukkit.Bukkit;
import org.bukkit.Color;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
public class PotionEffectUtils {
public static void add(Player player, PotionEffectType type, int duration, int amplifier) {
if (player.hasPotionEffect(type)) {
player.removePotionEffect(type);
}
player.addPotionEffect(new PotionEffect(type, duration, amplifier, false, true, true));
}
}
使用示例:
PotionEffectUtils.add(player, PotionEffectType.SLOW_FALLING, 200, 1);
// 10秒缓降II效果
// 倒数第二个参数为时间, 单位为 tick
// 最后一个参数为 0 时, 给予的药水效果为 1 倍.
PotionEffect 枚举常量列表:
https://bukkit.windit.net/javadoc/org/bukkit/potion/PotionEffectType.html