@SubscribeEvent public static void onPlayerAttacked(LivingAttackEvent event) { if(event.getEntityLiving() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.getEntityLiving(); if(getOdinRing(player) != null && damageNegations.contains(event.getSource().damageType)) event.setCanceled(true); } }
@SubscribeEvent public void reflectProjectiles(LivingAttackEvent event) { if(event.getSource().isUnblockable() || !event.getSource().isProjectile() || event.getSource().getImmediateSource() == null) { return; Entity projectile = event.getSource().getImmediateSource(); Vec3d motion = new Vec3d(projectile.motionX, projectile.motionY, projectile.motionZ); Vec3d look = player.getLookVec();
@SubscribeEvent public void onEntityHitByArrow(LivingAttackEvent event){ if(event.getSource().isProjectile() && event.getSource().getSourceOfDamage() instanceof AbstractMBArrow){ boolean isCanceled = ((AbstractMBArrow) event.getSource().getSourceOfDamage()).onHitEntity(event.getEntity(), event.getSource(), event.getAmount()); event.setCanceled(isCanceled); } } }
private void breakingEvent(LivingAttackEvent event) { if(Configs.isEnabled(EnchantmentBreakingConfig.class) && event.getSource().getTrueSource() instanceof EntityLivingBase) { EntityLivingBase entity = (EntityLivingBase) event.getSource().getTrueSource(); ItemStack itemStack = entity.getHeldItemMainhand(); int enchantmentListID = EnchantmentHelpers.doesEnchantApply(itemStack, EnchantmentBreakingConfig._instance.getEnchantment()); if (enchantmentListID > -1) { EnchantmentBreaking.amplifyDamage(itemStack, enchantmentListID, new Random()); return; } } }
@Override public void onPlayerAttacked(LivingAttackEvent event, EntityPlayer victim, @Nonnull ItemStack armorStack, EntityEquipmentSlot slot) { if (event.getSource() == DamageSource.DROWN && ChargableUtility.hasPower(victim, ArmorModule.rebreatherConsumption)) { ChargableUtility.drainSteam(victim.getItemStackFromSlot(EntityEquipmentSlot.CHEST), ArmorModule.rebreatherConsumption, victim); event.setCanceled(true); } } }
@SubscribeEvent public void onLivingAttacked(LivingAttackEvent event) { if(event.getSource().getTrueSource() != null){ Entity attacker = event.getSource().getTrueSource(); if (isAnimaniaChicken(event.getEntityLiving()) && attacker instanceof EntityLivingBase) { signalChickenAlarm(event.getEntityLiving(), (EntityLivingBase) attacker); } } }
private void unusingEvent(LivingAttackEvent event) { if(Configs.isEnabled(EnchantmentUnusingConfig.class) && event.getSource().getTrueSource() instanceof EntityLivingBase) { EntityLivingBase entity = (EntityLivingBase) event.getSource().getTrueSource(); ItemStack itemStack = entity.getHeldItemMainhand(); if (EnchantmentHelpers.doesEnchantApply(itemStack, EnchantmentUnusingConfig._instance.getEnchantment()) > -1) { if (EnchantmentUnusing.unuseTool(itemStack)) { event.setCanceled(true); //player.stopUsingItem(); return; } } } }
private void poisonTipEvent(LivingAttackEvent event) { if(Configs.isEnabled(EnchantmentPoisonTipConfig.class) && event.getSource().getTrueSource() instanceof EntityLivingBase) { EntityLivingBase entity = (EntityLivingBase) event.getSource().getTrueSource(); ItemStack itemStack = entity.getHeldItemMainhand(); int enchantmentListID = EnchantmentHelpers.doesEnchantApply(itemStack, EnchantmentPoisonTipConfig._instance.getEnchantment()); if (enchantmentListID > -1) { int level = EnchantmentHelpers.getEnchantmentLevel(itemStack, enchantmentListID); EnchantmentPoisonTip.poison((EntityLivingBase) event.getEntity(), level); return; } } }
@SubscribeEvent public void onEntityAttacked(LivingAttackEvent event) { //Probably not a very "clean" solution, but the only one I found if (!skipAttackDamageOnce && "player".equals(event.getSource().getDamageType()) && event.getSource().getTrueSource() instanceof EntityPlayer) { ItemStack stack = ((EntityPlayer) event.getSource().getTrueSource()).getHeldItemMainhand(); if (!stack.isEmpty() && stack.getItem() instanceof IFactionSlayerItem) { IFactionSlayerItem item = (IFactionSlayerItem) stack.getItem(); IFaction faction = VampirismAPI.factionRegistry().getFaction(event.getEntity()); if (faction != null && faction.equals(item.getSlayedFaction())) { float amt = event.getAmount() * item.getDamageMultiplierForFaction(stack); skipAttackDamageOnce = true; boolean result = net.minecraftforge.common.ForgeHooks.onLivingAttack(event.getEntityLiving(), event.getSource(), amt); skipAttackDamageOnce = false; event.setCanceled(!result); } } } }
@SubscribeEvent public void onDamage(LivingAttackEvent event) { if (event.getSource() == DamageSource.starve && event.getEntityLiving() instanceof EntityPlayer) { EntityPlayer player = ((EntityPlayer)event.getEntityLiving()); if (player.isPlayerSleeping()) { event.setCanceled(true); } } }
private void stealLife(LivingAttackEvent event) { if(Configs.isEnabled(EnchantmentLifeStealingConfig.class) && event.getSource().getTrueSource() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource(); ItemStack itemStack = player.getHeldItemMainhand(); int enchantmentListID = EnchantmentHelpers.doesEnchantApply(itemStack, EnchantmentLifeStealingConfig._instance.getEnchantment()); if (enchantmentListID > -1) { float damage = event.getAmount(); int level = EnchantmentHelpers.getEnchantmentLevel(itemStack, enchantmentListID); EnchantmentLifeStealing.stealLife(player, damage, level); return; } } }
@Override public void onLivingEvent(AndroidPlayer androidPlayer, int level, LivingEvent event) { if (event instanceof LivingAttackEvent) { DamageSource source = ((LivingAttackEvent) event).getSource(); if (!OverdriveBioticStats.shield.getShieldState(androidPlayer)) { if (OverdriveBioticStats.shield.isDamageValid(source) && event.isCancelable() && OverdriveBioticStats.shield.canActivate(androidPlayer)) { OverdriveBioticStats.shield.setShield(androidPlayer, true); } } } }
@SubscribeEvent(priority = EventPriority.HIGHEST) public static void onPlayerDamageEvent(LivingAttackEvent event) { if (event.getEntityLiving().isPotionActive(RegistrarBloodMagic.WHIRLWIND) && event.isCancelable() && event.getSource().isProjectile()) event.setCanceled(true); }
@SubscribeEvent public void onAttack(LivingAttackEvent event) { Entity entity = event.getSource().getTrueSource(); if (entity instanceof EntityPlayer && !entity.world.isRemote) { EntityPlayer player = (EntityPlayer) entity; ItemStack heldItem = player.getHeldItem(player.getActiveHand()); int level = getEnchantLevel(heldItem); if (level > 0) { apply(player.world, level, player); } } }
@SubscribeEvent public void onLivingAttack(LivingAttackEvent event) { if (event.getEntity() instanceof EntityPlayer) { for (Capability listener : listeners) { boolean cancel = ((IPlayerEventListener) event.getEntity().getCapability(listener, null)).onEntityAttacked(event.getSource(), event.getAmount()); if (cancel) { event.setCanceled(true); } } } }
@SubscribeEvent(priority = EventPriority.HIGH) public void onLivingAttack(LivingAttackEvent event) { if (event.getEntity() instanceof EntityPlayer) { if (!FactionPlayerHandler.get((EntityPlayer) event.getEntity()).onEntityAttacked(event.getSource(), event.getAmount())) { event.setCanceled(true); } } }
@SubscribeEvent public void onEntityMounted(LivingAttackEvent event) { if (event.getEntityLiving() instanceof EntityPlayer) { /* if (event.entityLiving.ridingEntity != null && event.entityLiving.ridingEntity instanceof EntityArmchairMount) if(event.entityLiving.ridingEntity.worldObj.isAirBlock((int) (event.entityLiving.ridingEntity.posX - 0.5D), (int)(event.entityLiving.ridingEntity.posY + 1D), (int)(event.entityLiving.ridingEntity.posZ - 0.5D))) if(event.entityLiving.ridingEntity.worldObj.isAirBlock((int) (event.entityLiving.ridingEntity.posX - 0.5D), (int)(event.entityLiving.ridingEntity.posY + 2D), (int)(event.entityLiving.ridingEntity.posZ - 0.5D))) if (event.source == DamageSource.inWall) event.setCanceled(true); */ if (event.getEntityLiving().getRidingEntity() != null && event.getEntityLiving().getRidingEntity() instanceof EntityLivingBase) if (event.getSource() == DamageSource.IN_WALL) event.setCanceled(true); } } }
@Override public void onPlayerAttacksOther(LivingAttackEvent event, EntityPlayer victim, @Nonnull ItemStack armorStack, EntityEquipmentSlot slot) { // Explosions must be ignored in order to prevent infinite recursive hearMeRoar calls. DamageSource source = event.getSource(); Entity sourceEntity = source.getTrueSource(); if (sourceEntity instanceof EntityLivingBase && !source.isExplosion()) { EntityLivingBase entity = (EntityLivingBase) sourceEntity; World world = entity.world; ItemStack chest = entity.getItemStackFromSlot(EntityEquipmentSlot.CHEST); if (entity.getHeldItemMainhand().isEmpty() && entity.isSneaking() && chest.getItem() instanceof ItemSteamExosuitArmor && chest.hasTagCompound()) { int consumption = (chest.getTagCompound().getInteger("SteamCapacity") / 2) + ArmorModule.dragonRoarConsumption; if (ChargableUtility.hasPower(entity, consumption)) { if (world.isRemote) { world.playSound(entity.posX, entity.posY, entity.posZ, SoundEvents.ENTITY_ENDERDRAGON_GROWL, SoundCategory.PLAYERS, 5.0F, 0.8F + world.rand.nextFloat() * 0.3F, false); } else { world.createExplosion(entity, entity.posX + 0.5F, entity.posY, entity.posZ + 0.5F, 10.0F, false); } ChargableUtility.drainSteam(chest, consumption, entity); } } } } }
@SubscribeEvent (priority = EventPriority.HIGH) public void handleLivingAttackEvent(LivingAttackEvent event) { Entity entity = event.getEntity(); if (!(entity instanceof EntityPlayer)) { return; } DamageSource source = event.getSource(); if (source instanceof EntityDamageSourceIndirect || source.isUnblockable() || source.isProjectile()) { return; } if (source instanceof EntityDamageSource && ((EntityDamageSource) source).getIsThornsDamage()) { return; } EntityPlayer player = (EntityPlayer) event.getEntityLiving(); ItemStack stack = player.getActiveItemStack(); if (!stack.isEmpty() && stack.getItem() instanceof ItemShieldCore) { ((ItemShieldCore) stack.getItem()).onHit(stack, player, source.getTrueSource()); } }
@SubscribeEvent public void onEntityDamage(LivingAttackEvent event) { if (!ModConfig.general.cowJarEnabled) { return; } if (event.getSource() == DamageSource.ANVIL && isCow(event.getEntityLiving())) { BlockPos pos = event.getEntity().getPosition().down(); IBlockState blockBelow = event.getEntity().getEntityWorld().getBlockState(pos); if (blockBelow.getBlock() == ModBlocks.milkJar) { event.getEntity().getEntityWorld().setBlockState(pos, ModBlocks.cowJar.getDefaultState()); } NetworkHandler.instance.sendToAllAround(new MessageSyncedEffect(pos, MessageSyncedEffect.Type.COW_IN_A_JAR), new NetworkRegistry.TargetPoint(event.getEntity().world.provider.getDimension(), pos.getX(), pos.getY(), pos.getZ(), 32)); event.getEntity().setDead(); event.setCanceled(true); } }