- 106
- 3
- 7
Привет, создал ивент чтобы запретить есть пищу не из мода (в будущем это будет зависеть от капы), в пищу из мода имплементирован пустой интерфейс для проверки IGhoulFood. При сьедании обычной еды у игрока отнимаются очки голода которые еда восстановила, и накладывается эффект тошноты. Но ивент работает не всегда, то есть иногда просто ничего не происходит (проверка false) , иногда все работает как надо. Может надо проверку world.isRemote?
Код:
@SubscribeEvent
public static void ghoulEat(LivingEntityUseItemEvent.Finish e) {
if (e.getEntity() instanceof EntityPlayer) {
if (!(e.getItem().getItem() instanceof IGhoulFood) && ((e.getItem().getItem() instanceof ItemFood) || (e.getItem().getItem() instanceof ItemSoup))) {
((EntityLivingBase) e.getEntity()).addPotionEffect(new PotionEffect(MobEffects.NAUSEA, 240, 1));
EntityPlayer player = (EntityPlayer) e.getEntity();
ItemFood itemFood = (ItemFood) e.getItem().getItem();
player.getFoodStats().setFoodLevel(player.getFoodStats().getFoodLevel()-itemFood.getHealAmount(e.getItem()));
player.getFoodStats().setFoodSaturationLevel(player.getFoodStats().getSaturationLevel()-itemFood.getSaturationModifier(e.getItem()));
}
}
}