Очень странный метод (вопрос о LivingDeathEvent)

Версия Minecraft
1.7.10
API
Forge
52
1
1
Мне надо было, чтобы происходило действие при убийстве моба мечом со специальным зачаром. Итак :
Java:
@SubscribeEvent
    public void onLivingDeath(final LivingDeathEvent event) {
            final EntityLivingBase attacker = (EntityLivingBase) event.source.getEntity();
            if (attacker == null) {
                System.out.println("Something`s wrong!");
                return;
            }
            final ItemStack heldItem = attacker.getHeldItem();
            if (heldItem == null) {
                return;
            }
            int spectrlR = EnchantmentHelper.getEnchantmentLevel(EnchantmentList.enchSpectralRadiance.effectId,
                    heldItem);
            if (heldItem.getItem() instanceof ItemSword && spectrlR > 0 && event.entity instanceof EntityLivingBase) {
                EntityLivingBase ent = (EntityLivingBase) event.entity;
                final EntitySoulOrb orb = new EntitySoulOrb(ent.worldObj, ent.posX, ent.posY, ent.posZ,
                        Soul.getEntitySoulType(ent), (int) (ent.getMaxHealth() / 25), 1.1);
        }
    }

Обратим внимание вот на это:
Java:
if (attacker == null) {
    System.out.println("Something`s wrong!");
    return;
}

Теперь на консоль:
[ensorcellcraft.common.lib.events.EventHandlerEnchantments:onLivingDeath:124]: Something`s wrong!
Это Я (игрок) убил паука.

Давайте теперь посмотрим на вот эту строчку и поближе рассмотрим метод:
final EntityLivingBase attacker = (EntityLivingBase) event.source.getEntity();

Java:
public Entity getEntity()
    {
        return null;
    }

Казалось бы, все вполне очевидно, но я использовал этот метод в другом месте (вообще идею использовать этот метод я одолжил у Thaumic Tinkerer, там, где при наличии зачара "Наскок" увеличивался урон), но ближе к делу. Рассмотрим другой event, который я использовал в этом же классе:

Java:
@SubscribeEvent
    public void onEntityDamaged(final LivingHurtEvent event) {
        final EntityLivingBase attacker = (EntityLivingBase) event.source.getEntity();
        final ItemStack heldItem = attacker.getHeldItem();
        if (heldItem == null) {
            return;
        }
        int spectrlR = EnchantmentHelper.getEnchantmentLevel(EnchantmentList.enchSpectralRadiance.effectId,
                heldItem);
        if (heldItem.getItem() instanceof ItemSword && spectrlR > 0) {
            event.ammount += 2.5;
        }
    }

Здесь все то же самое. Но почему-то event работает исправно. Но метод тот же самый, класс родитель у обоих ивентов один, ни в одном из ивентов этот метод не переопределялся. Так почему в одном из них он возвращает то, что нужно, а в другом нет? И как мне получить тот предмет, которым убили моба?
Прошу о помощи)
 

VeniVidiVici

Санта Барбарис
327
15
198
Ты не пробовал в логи?
Выводишь себе построчно в System.out.println() в начале ивента: кто убил, кого убил, чем убил, от кого наследуется. И жизнь станет на пару тройку вопросов проще.
 
Сверху