Example usage for net.minecraftforge.event.entity.living LivingDeathEvent getSource

List of usage examples for net.minecraftforge.event.entity.living LivingDeathEvent getSource

Introduction

In this page you can find the example usage for net.minecraftforge.event.entity.living LivingDeathEvent getSource.

Prototype

public DamageSource getSource() 

Source Link

Usage

From source file:com.buuz135.industrial.item.infinity.OneThreeFiveHandler.java

License:Open Source License

@SubscribeEvent
public static void onEntityKill(LivingDeathEvent event) {
    if (event.getEntityLiving().getUniqueID().toString().contains(SPECIAL)
            && event.getSource().getTrueSource() instanceof EntityPlayer
            && !(event.getSource().getTrueSource() instanceof FakePlayer)) {
        EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource();
        if (player.getHeldItemMainhand().getItem().equals(ItemRegistry.itemInfinityDrill)) {
            player.getHeldItemMainhand().getTagCompound().setBoolean("Special", true);
        }/*from  w  w w  .jav a2  s  .  c o  m*/
    }
}

From source file:com.cnaude.purpleirc.GameListeners.GamePlayerDeathListener.java

License:Open Source License

@SubscribeEvent
public void onPlayerDeath(LivingDeathEvent event) {
    if (event.getEntityLiving() instanceof EntityPlayerMP) {
        final EntityPlayerMP player = (EntityPlayerMP) event.getEntityLiving();
        for (PurpleBot ircBot : plugin.ircBots.values()) {
            ircBot.gameDeath(player, event.getSource().getDeathMessage(player).getUnformattedText(),
                    TemplateName.GAME_DEATH);
        }//ww  w  .j  ava  2s .c  o  m

    }
}

From source file:com.lothrazar.cyclicmagic.enchant.EnchantBeheading.java

License:Open Source License

@SubscribeEvent
public void onEntityKill(LivingDeathEvent event) {
    if (event.getSource().getTrueSource() instanceof EntityPlayer
            && event.getEntity() instanceof EntityLivingBase) {
        EntityPlayer attacker = (EntityPlayer) event.getSource().getTrueSource();
        World world = attacker.world;//from  w w w  .  j  a v a 2  s.  c  o  m
        if (MathHelper.getInt(world.rand, 0, 100) > this.percentDrop) {
            return;
        }
        EntityLivingBase target = (EntityLivingBase) event.getEntity();
        if (target == null) {
            return;
        } //probably wont happen just extra safe
        BlockPos pos = target.getPosition();
        if (target instanceof EntityPlayer) {
            UtilItemStack.dropItemStackInWorld(world, pos,
                    UtilNBT.buildNamedPlayerSkull((EntityPlayer) target));
            return;
        }
        int level = getCurrentLevelTool(attacker);
        if (level < 0) {
            return;
        }
        //else the random number was less than 10, so it passed the 10% chance req
        String key = target.getClass().getName();
        ////we allow all these, which include config, to override the vanilla skulls below
        //first do my wacky class mapping// TODO delete and go to minecraft:blah
        if (mapClassToSkin.containsKey(key)) {
            UtilItemStack.dropItemStackInWorld(world, pos,
                    UtilNBT.buildNamedPlayerSkull(mapClassToSkin.get(key)));
            return;
        } else if (mapClassToTag.containsKey(key)) {
            UtilItemStack.dropItemStackInWorld(world, pos, UtilNBT.buildSkullFromTag(mapClassToTag.get(key)));
            return;
        } else if (target instanceof EntityCreeper) {//4
            UtilItemStack.dropItemStackInWorld(world, pos, new ItemStack(Items.SKULL, 1, Const.skull_creeper));
            return;
        } else if (target instanceof EntityZombie) {//2
            UtilItemStack.dropItemStackInWorld(world, pos, new ItemStack(Items.SKULL, 1, Const.skull_zombie));
            return;
        } else if (target instanceof EntitySkeleton) {//0
            UtilItemStack.dropItemStackInWorld(world, pos, new ItemStack(Items.SKULL, 1, Const.skull_skeleton));
            return;
        } else if (target instanceof EntityWitherSkeleton) {//1
            UtilItemStack.dropItemStackInWorld(world, pos, new ItemStack(Items.SKULL, 1, Const.skull_wither));
            return;
        } else if (target instanceof EntityDragon) {//5
            UtilItemStack.dropItemStackInWorld(world, pos, new ItemStack(Items.SKULL, 1, Const.skull_dragon));
            return;
        } else if (target instanceof EntityPlayer) {//player name
            UtilItemStack.dropItemStackInWorld(world, pos,
                    UtilNBT.buildNamedPlayerSkull((EntityPlayer) target));
            return;
        }
        if (EntityList.getKey(target) != null) {
            String resourcelocation = EntityList.getKey(target).toString();
            if (mapResourceToSkin.containsKey(resourcelocation)) {
                UtilItemStack.dropItemStackInWorld(world, pos,
                        UtilNBT.buildNamedPlayerSkull(mapResourceToSkin.get(resourcelocation)));
                return;
            }
        }
        ModCyclic.logger.error("Beheading : mob not found in EntityList " + target.getName());
    }
}

From source file:com.lothrazar.cyclicmagic.enchant.EnchantLifeLeech.java

License:Open Source License

@SubscribeEvent
public void onEntityKill(LivingDeathEvent event) {
    if (event.getSource().getTrueSource() instanceof EntityPlayer
            && event.getEntity() instanceof EntityLivingBase) {
        EntityPlayer attacker = (EntityPlayer) event.getSource().getTrueSource();
        EntityLivingBase target = (EntityLivingBase) event.getEntity();
        int level = getCurrentLevelTool(attacker);
        if (level > 0) {
            // we -1  since potion level 1 is  II
            //so that means enchantment I giving poison I means this
            int restore = (int) Math.max(Math.ceil(target.getMaxHealth() / 5), 4);
            int min = level;//so if restore starts at 4 the rand will be [min,restore]
            restore = attacker.getEntityWorld().rand.nextInt(restore + 1) + min;
            if (restore > 0) {
                //hunger
                attacker.getFoodStats().addStats(restore, 0.5F);
                //hearts
                if (attacker.getHealth() < attacker.getMaxHealth()) {
                    attacker.heal(restore);
                    UtilParticle.spawnParticle(target.getEntityWorld(), EnumParticleTypes.HEART,
                            attacker.getPosition().up(1));
                    UtilParticle.spawnParticle(attacker.getEntityWorld(), EnumParticleTypes.HEART,
                            attacker.getPosition().up(1));
                }//w  ww  .ja  v a  2  s  .c o  m
            }
        }
    }
}

From source file:com.lothrazar.cyclicmagic.enchant.EnchantXpBoost.java

License:Open Source License

@SubscribeEvent
public void onEntityKill(LivingDeathEvent event) {
    if (event.getSource() == null) {
        return;/*from  ww w.  j  av a 2  s .  com*/
    }
    if (event.getSource().getTrueSource() instanceof EntityPlayer
            && event.getEntity() instanceof EntityLivingBase) {
        EntityPlayer attacker = (EntityPlayer) event.getSource().getTrueSource();
        int level = getCurrentLevelTool(attacker);
        if (level <= 0) {
            return;
        }
        EntityLivingBase target = (EntityLivingBase) event.getEntity();
        World world = attacker.getEntityWorld();
        BlockPos pos = target.getPosition();
        dropExp(world, pos, XP_PER_LVL * level);
    }
}

From source file:com.lothrazar.cyclicmagic.potion.effect.PotionEnder.java

License:Open Source License

@SubscribeEvent
public void onLivingKill(LivingDeathEvent event) {
    if (event.getSource().getTrueSource() instanceof EntityPlayer) {
        EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource();
        Entity target = event.getEntity();
        if (player.isPotionActive(this) && target instanceof EntityEnderman) {
            World world = player.getEntityWorld();
            int randMore = world.rand.nextInt(5) + 1;// range[1,5]
            world.spawnEntity(new EntityXPOrb(world, target.posX, target.posY, target.posZ, randMore));
        }//ww w . j a  v  a 2 s  .  c om
    }
}

From source file:hellfirepvp.astralsorcery.common.event.listener.EventHandlerServer.java

License:Open Source License

@SubscribeEvent(priority = EventPriority.HIGHEST)
public void onDeath(LivingDeathEvent event) {
    if (phoenixProtect(event.getEntityLiving())) {
        event.setCanceled(true);//  w  w w . j a  va  2s  . c  o m
    } else {
        if (event.getEntityLiving() == null || event.getEntityLiving().getEntityWorld().isRemote)
            return;

        DamageSource source = event.getSource();
        if (source.getEntity() != null && source.getEntity() instanceof EntityPlayer) {
            EntityPlayer p = (EntityPlayer) source.getEntity();
            PlayerProgress prog = ResearchManager.getProgress(p);
            if (prog != null) {
                Map<ConstellationPerk, Integer> perks = prog.getAppliedPerks();
                for (ConstellationPerk perk : perks.keySet()) {
                    if (!prog.isPerkActive(perk))
                        continue;
                    if (perk.mayExecute(ConstellationPerk.Target.ENTITY_KILL)) {
                        perk.onEntityKilled(p, event.getEntityLiving());
                    }
                }
            }
        }
    }
}

From source file:nightkosh.gravestone.core.event.EventsHandler.java

License:LGPL

@SubscribeEvent(priority = EventPriority.HIGH)
public void onEntityLivingDeath(LivingDeathEvent event) {
    if (FMLCommonHandler.instance().getEffectiveSide().isServer()) {
        if (!Config.generateGravesInLava && event.getSource().damageType.equals("lava")) {
            return;
        }//from  w w w  .  j  a  va2 s .c om

        if (Config.generatePlayerGraves && event.getEntityLiving() instanceof EntityPlayer) {
            EntityPlayer player = (EntityPlayer) event.getEntity();
            if (!Config.playerGravesDimensionalBlackList.contains(player.dimension)) {
                for (IPlayerDeathHandler playerDeathHandler : APIGraveGeneration.PLAYER_DEATH_HANDLERS) {
                    if (playerDeathHandler.cancelGraveGeneration(player, event.getSource())) {
                        return;
                    }
                }

                GraveGenerationHelper.createPlayerGrave(player, event,
                        MobHandler.getAndRemoveSpawnTime(event.getEntity()));
            }
            return;
        } else {
            if (Config.generateVillagerGraves && event.getEntity() instanceof EntityVillager) {
                EntityVillager villager = (EntityVillager) event.getEntity();
                for (IVillagerDeathHandler villagerDeathHandler : APIGraveGeneration.VILLAGER_DEATH_HANDLERS) {
                    if (villagerDeathHandler.cancelGraveGeneration(villager, event.getSource())) {
                        return;
                    }
                }
                GraveGenerationHelper.createVillagerGrave(villager, event);
                return;
            } else if (Config.generatePetGraves) {
                if (event.getEntity() instanceof EntityTameable) {
                    if (event.getEntity() instanceof EntityWolf) {
                        EntityWolf dog = (EntityWolf) event.getEntity();
                        for (IDogDeathHandler dogDeathHandler : APIGraveGeneration.DOG_DEATH_HANDLERS) {
                            if (dogDeathHandler.cancelGraveGeneration(dog, event.getSource())) {
                                return;
                            }
                        }
                        GraveGenerationHelper.createDogGrave(dog, event);
                        return;
                    } else if (event.getEntity() instanceof EntityOcelot) {
                        EntityOcelot cat = (EntityOcelot) event.getEntity();
                        for (ICatDeathHandler catDeathHandler : APIGraveGeneration.CAT_DEATH_HANDLERS) {
                            if (catDeathHandler.cancelGraveGeneration(cat, event.getSource())) {
                                return;
                            }
                        }
                        GraveGenerationHelper.createCatGrave(cat, event);
                        return;
                    }
                } else if (event.getEntity() instanceof AbstractHorse) {
                    AbstractHorse horse = (AbstractHorse) event.getEntity();
                    for (IHorseDeathHandler horseDeathHandler : APIGraveGeneration.HORSE_DEATH_HANDLERS) {
                        if (horseDeathHandler.cancelGraveGeneration(horse, event.getSource())) {
                            return;
                        }
                    }
                    GraveGenerationHelper.createHorseGrave(horse, event);
                    return;
                }
            }
        }

        for (ICustomEntityDeathHandler customEntityDeathHandler : APIGraveGeneration.CUSTOM_ENTITY_DEATH_HANDLERS) {
            if (event.getEntity().getClass().equals(customEntityDeathHandler.getEntityClass())
                    && customEntityDeathHandler.canGenerateGrave(event.getEntity(), event.getSource())) {
                GraveGenerationHelper.createCustomGrave(event.getEntity(), event, customEntityDeathHandler);
                return;
            }
        }
    }
}

From source file:nightkosh.gravestone.helper.GraveGenerationHelper.java

License:LGPL

public static void createPlayerGrave(EntityPlayer player, LivingDeathEvent event, long spawnTime) {
    if (player.getEntityWorld() != null && !player.getEntityWorld().getGameRules().getBoolean("keepInventory")
            && Config.graveItemsCount > 0
            && !isInRestrictedArea(player.getEntityWorld(), player.getPosition())) {
        List<ItemStack> items = new ArrayList<>(41);

        //            GSCompatibilityAntiqueAtlas.placeDeathMarkerAtDeath(player); //TODO !!!!!!!!!!!!

        addNonEmptyItems(items, player.inventory.mainInventory);
        addNonEmptyItems(items, player.inventory.armorInventory);
        addNonEmptyItems(items, player.inventory.offHandInventory);
        //            items.addAll(player.inventory.mainInventory);
        //            items.addAll(player.inventory.armorInventory);
        //            items.addAll(player.inventory.offHandInventory);

        CompatibilityTwilightForest.addSlotTags(items);
        CompatibilityBattlegear.addItems(items, player);

        if (!CompatibilityTwilightForest.handleCharmsOfKeeping(items, player)) {
            player.inventory.clear();/*  ww w  .  j ava2 s  .  co  m*/
        }

        for (IPlayerItems additionalItems : APIGraveGeneration.PLAYER_ITEMS) {
            try {
                List<ItemStack> modItems = additionalItems.addItems(player, event.getSource());
                if (modItems != null && !modItems.isEmpty() && modItems.size() != 0) {
                    items.addAll(modItems);
                }
            } catch (Exception e) {
                GSLogger.logError("Compatibility error occurred in additionalItems.addItems");
                e.printStackTrace();
            }
        }

        //TODO is it really required??
        CompatibilityTwilightForest.removeSlotTags(items);

        // remove some items by other mods
        for (IPlayerItems additionalItems : APIGraveGeneration.PLAYER_ITEMS) {
            try {
                additionalItems.getItems(player, event.getSource(), items);
            } catch (Exception e) {
                GSLogger.logError("Compatibility error occurred in additionalItems.getItems");
                e.printStackTrace();
            }
        }

        // remove items with Curse of Vanishing enchantment
        if (Config.removeCurseOfVanishingItems) {
            for (int i = 0; i < items.size(); i++) {
                if (EnchantmentHelper.hasEnchantment(items.get(i), Enchantments.VANISHING_CURSE)) {
                    items.set(i, ItemStack.EMPTY);
                }
            }
        }

        if (Config.generateEmptyPlayerGraves || items.size() != 0) {
            createGrave(player, event, items, EnumGraveTypeByEntity.PLAYER_GRAVES, false, spawnTime);
        }
    } else if (Config.generateEmptyPlayerGraves) {
        createGrave(player, event, null, EnumGraveTypeByEntity.PLAYER_GRAVES, false, spawnTime);
    }
}

From source file:nightkosh.gravestone.helper.GraveGenerationHelper.java

License:LGPL

public static void createVillagerGrave(EntityVillager villager, LivingDeathEvent event) {
    List<ItemStack> items = new ArrayList<>(5);
    for (IVillagerItems additionalItems : APIGraveGeneration.VILLAGER_ITEMS) {
        items.addAll(additionalItems.addItems(villager, event.getSource()));
    }/*w w w  . j a v a  2 s  .c o m*/

    IItemHandler itemHandler = villager.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY,
            villager.getHorizontalFacing());
    if (villager.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, villager.getHorizontalFacing())) {
        for (int slot = 0; slot < itemHandler.getSlots(); slot++) {
            ItemStack stack = itemHandler.extractItem(slot, 100500, false);
            if (stack != null && !stack.isEmpty()) {
                items.add(stack);
            }
        }
    }

    long spawnTime = MobHandler.getAndRemoveSpawnTime(event.getEntity());
    createGrave(villager, event, items, GraveGenerationHelper.EnumGraveTypeByEntity.VILLAGERS_GRAVES, true,
            spawnTime);
}