@Override public void onBlock(ItemStack tool, EntityPlayer player, LivingHurtEvent event) { event.setAmount(Math.max(1f, event.getAmount() - 1f)); } }
public boolean effectOnDamage(LivingHurtEvent event, EntityPlayer player, ItemStack stack) { if(!event.getSource().isMagicDamage()) { event.setAmount(event.getAmount() / 2); if(event.getSource().getTrueSource() != null) event.getSource().getTrueSource().attackEntityFrom(DamageSource.causeIndirectMagicDamage(player, player), event.getAmount()); if(event.getAmount() > player.getHealth()) event.setAmount(player.getHealth() - 1); player.world.playSound(null, player.posX, player.posY, player.posZ, ModSounds.holyCloak, SoundCategory.PLAYERS, 1F, 1F); for(int i = 0; i < 30; i++) { double x = player.posX + Math.random() * player.width * 2 - player.width; double y = player.posY + Math.random() * player.height; double z = player.posZ + Math.random() * player.width * 2 - player.width; boolean green = Math.random() > 0.5; Botania.proxy.sparkleFX(x, y, z, 0.3F, green ? 1F : 0.3F, green ? 0.3F : 1F, 0.8F + (float) Math.random() * 0.4F, 3); } return true; } return false; }
@SubscribeEvent(priority = EventPriority.LOW) // lower priority so we get called later since we change tool NBT public void reducedDamageBlocked(LivingHurtEvent event) { // don't affect unblockable or magic damage or explosion damage // projectiles are handled in LivingAttackEvent if(event.getSource().isUnblockable() || event.getSource().isMagicDamage() || event.getSource().isExplosion() || event.getSource().isProjectile() || event.isCanceled()) { return; } if(!shouldBlockDamage(event.getEntityLiving())) { return; } EntityPlayer player = (EntityPlayer) event.getEntityLiving(); ItemStack battlesign = player.getActiveItemStack(); // got hit by something: reduce damage int damage = event.getAmount() < 2f ? 1 : Math.round(event.getAmount() / 2f); // reduce damage. After this event the damage will be halved again because we're blocking so we have to factor this in event.setAmount(event.getAmount() * 0.7f); // reflect damage if(event.getSource().getTrueSource() != null) { event.getSource().getTrueSource().attackEntityFrom(DamageSource.causeThornsDamage(player), event.getAmount() / 2f); damage = damage * 3 / 2; } ToolHelper.damageTool(battlesign, damage, player); }
@Override public void onLivingEvent(AndroidPlayer androidPlayer, int level, LivingEvent event) { if (event instanceof LivingHurtEvent) { ((LivingHurtEvent) event).setAmount(((LivingHurtEvent) event).getAmount() * (1 - getDamageNegate(level))); } }
event.getEntityLiving().addPotionEffect(new PotionEffect(MobEffects.WEAKNESS, 20, 1)); if(dharok) event.setAmount(event.getAmount() * (1F + (1F - player.getHealth() / player.getMaxHealth()) * 0.5F)); if(guthan) player.heal(event.getAmount() * 0.25F);
@SubscribeEvent public void onHurt(LivingHurtEvent event) { if (event.getEntityLiving().isPotionActive(this) && event.getSource() == DamageSource.IN_WALL) { event.setAmount(0); } }
@SubscribeEvent public void handleLivingHurtEvent(LivingHurtEvent event) { Entity entity = event.getEntity(); if (entity instanceof IProjectile) { return; } DamageSource source = event.getSource(); Entity attacker = event.getSource().getTrueSource(); if (!(attacker instanceof EntityLivingBase)) { return; } if (source.damageType.equals("arrow")) { int encMultishot = MathHelper.clamp(getHeldEnchantmentLevel((EntityLivingBase) attacker, CoreEnchantments.multishot), 0, CoreEnchantments.multishot.getMaxLevel() * 2); if (encMultishot > 0) { entity.hurtResistantTime = 0; } } else if (source.damageType.equals("player")) { int encVorpal = getHeldEnchantmentLevel((EntityLivingBase) attacker, CoreEnchantments.vorpal); if (encVorpal > 0 && entity.world.rand.nextInt(100) < EnchantmentVorpal.CRIT_CHANCE * encVorpal) { event.setAmount(event.getAmount() * EnchantmentVorpal.CRIT_DAMAGE); attacker.world.playSound(null, attacker.getPosition(), SoundEvents.ENTITY_PLAYER_ATTACK_KNOCKBACK, SoundCategory.PLAYERS, 1.0F, 1.0F); for (int i = 0; i < encVorpal * 2; i++) { ((WorldServer) entity.world).spawnParticle(EnumParticleTypes.CRIT, entity.posX + entity.world.rand.nextDouble(), entity.posY + 1.5D, entity.posZ + entity.world.rand.nextDouble(), 1, 0, 0, 0, 0.0, 0); ((WorldServer) entity.world).spawnParticle(EnumParticleTypes.CRIT_MAGIC, entity.posX + entity.world.rand.nextDouble(), entity.posY + 1.5D, entity.posZ + entity.world.rand.nextDouble(), 1, 0, 0, 0, 0.0, 0); } } } }
@Override public void onPlayerHurt(LivingHurtEvent event, EntityPlayer victim, @Nonnull ItemStack armorStack, EntityEquipmentSlot slot) { if (event.getSource() == DamageSource.FALL) { boolean hasPower = ChargableUtility.hasPower(event.getEntityLiving(), (int) (event.getAmount() / ArmorModule.fallAssistDivisor)); if (hasPower) { if (event.getAmount() <= 6.0F) { event.setAmount(0F); } event.setAmount(event.getAmount() / 3F); ChargableUtility.drainSteam(victim.getItemStackFromSlot(EntityEquipmentSlot.CHEST), (int) (event.getAmount() / ArmorModule.fallAssistDivisor), victim); if (event.getAmount() == 0.0F) { event.setResult(Event.Result.DENY); event.setCanceled(true); } } } } }
@SubscribeEvent public void onAttack(LivingHurtEvent event) { //true source is player that was holding the fang item //immediate source is the entity. and we check the boolean flag to make sure it was one of these, not from illager or some other spawn reason if (event.getSource().getImmediateSource() instanceof EntityEvokerFangs && UtilNBT.getEntityBoolean(event.getSource().getImmediateSource(), NBT_FANG_FROMPLAYER)) { event.setAmount(event.getAmount() * 2); } } }
@SubscribeEvent public void onDamage(LivingHurtEvent event) { if(halveDamage && event.getSource().getTrueSource() != null && event.getSource().getTrueSource() instanceof EntityWitch) { ItemStack hat = event.getEntityLiving().getItemStackFromSlot(EntityEquipmentSlot.HEAD); if(!hat.isEmpty() && hat.getItem() == witch_hat) event.setAmount(event.getAmount() / 2); } }
@SubscribeEvent public void onEntityDamage(LivingHurtEvent event) { if(event.getSource().isProjectile()){ float multi = 1; if (event.getEntityLiving().getItemStackFromSlot(EntityEquipmentSlot.HEAD).getItem() instanceof ItemTrollArmor) { multi -= 0.1; } if (event.getEntityLiving().getItemStackFromSlot(EntityEquipmentSlot.CHEST).getItem() instanceof ItemTrollArmor) { multi -= 0.3; } if (event.getEntityLiving().getItemStackFromSlot(EntityEquipmentSlot.LEGS).getItem() instanceof ItemTrollArmor) { multi -= 0.2; } if (event.getEntityLiving().getItemStackFromSlot(EntityEquipmentSlot.FEET).getItem() instanceof ItemTrollArmor) { multi -= 0.1; } event.setAmount(event.getAmount() * multi); } }
EntityPlayer player = ((EntityPlayer) event.getEntityLiving()); player.isDead = false; event.setAmount(0); BlockPos spawn = player.isSpawnForced(0) ? player.getBedLocation(0) : player.world.getSpawnPoint().add(player.world.rand.nextGaussian() * 16, 0, player.world.rand.nextGaussian() * 16); BlockPos teleportTo = spawn.add(0, 300 - spawn.getY(), 0);
event.setAmount(amount);
energyReqired *= energyMultiply; int energyExtracted = androidPlayer.extractEnergy(energyReqired, true); ((LivingHurtEvent) event).setAmount(((LivingHurtEvent) event).getAmount() + (float) energyExtracted / (float) energyReqired);
ItemStack mainWeapon = player.getItemStackFromSlot(EntityEquipmentSlot.MAINHAND); event.setAmount((float) (event.getAmount() + lastPlayerSwingStrength * armour.getAdditionalDamageOnHit(event.getAmount(), player, attackedEntity, mainWeapon)));
MinecraftForge.EVENT_BUS.post(blockEvent); if (blockEvent.ammountRemaining > 0.0F) { event.setAmount(blockEvent.ammountRemaining); } else { event.setCanceled(true);