Нужна помощь с неработающим накладыванием эффекта

Версия Minecraft
1.7.10
Доброго времени суток. Я хочу сделать вот такую штуку: у меня есть предмет, который при его использовании накладывает на игрока эффекты, после чего теряет прочность. Все эффекты я задаю при инициализации предмета, засовывая их в список effects (кроме голода, который накладывается дефолтно).

Java:
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer) {

   if(!world.isRemote) {
      if(!(entityplayer.getActivePotionEffect(Potion.hunger) != null) && !this.effects.isEmpty()) {
         for(int i = 0; i < this.effects.size(); ++i){
            entityplayer.addPotionEffect((PotionEffect)this.effects.get(i));
//for debug:    entityplayer.addChatMessage(new ChatComponentText(i + " " + ((PotionEffect) this.effects.get(i)).getEffectName()));
         }
         entityplayer.addPotionEffect(new PotionEffect(Potion.hunger.id, this.cooldown, 0));

         if(!entityplayer.capabilities.isCreativeMode) {
            itemstack.damageItem(1, entityplayer);
         }
      }
   }
      return itemstack;
}

Проблема в том, что весь набор нужных эффектов накладывается только один раз, а все последующие -только голод. Я пытался дебажить, эффекты из списка попадают в цикл и при первом использовании, и при последующих. Эффекты, по идеи должны накладываться на игрока, но не накладываются.
 

timaxa007

Модератор
5,831
409
672
Типа создавать "new PotionEffect" для "addPotionEffect" из твоих PotionEffect'ов, так как в твоих после первого использования время действия истекло твоих PotionEffect'ов.
!(entityplayer.getActivePotionEffect(Potion.hunger) != null)
entityplayer.getActivePotionEffect(Potion.hunger) == null
---
for(int i = 0; i < this.effects.size(); ++i){
entityplayer.addPotionEffect((PotionEffect)this.effects.get(i));
//for debug: entityplayer.addChatMessage(new ChatComponentText(i + " " + ((PotionEffect) this.effects.get(i)).getEffectName()));
}
Java:
        for(int i = 0; i < this.effects.size(); ++i){
            PotionEffect pe = (PotionEffect)this.effects.get(i);
            entityplayer.addPotionEffect(new PotionEffect(pe.getPotionID(), pe.getDuration(), pe.getAmplifier()));
        }
 
Сверху