Помогите Перебиваются эффекты зелий

Den_Blade

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
Den_Blade
Привет, такая проблема, у меня есть способности на сервере которые накладывают эффекты на игрока, но к примеру, на игроке есть эффект скорость 2,а способность дает скорость 3, и дело в том что скорость 3 не накладывается на игрока, такая же проблема наоборот , на игроке скорость 3, меч при ударе накладывает скорость 2,и она уже накладывается ,и соответственно перебивает эффект, как пофиксить?
 
player.removeEffect(potionEffectType);
player.addEffect(potionEffect);
 
Никак, ты либо их заменяешь либо игнорируешь одинаковые эффекты.
 
Код:
void giveEffect (Player p, PotionEffect effect) {
    if (hasEffect(p.getActivePotionEffects(), effect.getType()))
        p.removePotionEffect(effect.getType());        
    
    p.addPotionEffect(effect);
}
 
private boolean hasEffect (Collection <PotionEffect> activeEffects, PotionEffectType checkEffect) {
    for (PotionEffect e : activeEffects)
        if (e.getType().equals(checkEffect)) return true;
    return false;
}
Не тестил, но может сработать
 
Последнее редактирование:
Код:
void giveEffect (Player p, PotionEffect effect) {
    if (hasEffect(p.getActivePotionEffects(), effect.getType()))
        p.removePotionEffect(effect.getType());       
   
    p.addPotionEffect(effect);
}
 
private boolean hasEffect (Collection <PotionEffect> activeEffects, PotionEffectType checkEffect) {
    for (PotionEffect e : activeEffects)
        if (e.getType().equals(checkEffect)) return true;
    return false;
}
Не тестил, но может сработать
Зачем такой костыль?
 
Код:
void giveEffect (Player p, PotionEffect effect) {
    if (hasEffect(p.getActivePotionEffects(), effect.getType()))
        p.removePotionEffect(effect.getType());       
   
    p.addPotionEffect(effect);
}
 
private boolean hasEffect (Collection <PotionEffect> activeEffects, PotionEffectType checkEffect) {
    for (PotionEffect e : activeEffects)
        if (e.getType().equals(checkEffect)) return true;
    return false;
}
Не тестил, но может сработать
Не сработало.
 
Назад
Верх