for(ItemStack tool : event.getEntity().getHeldEquipment()) { if(isTool(tool) && !ToolHelper.isBroken(tool)) { heldTools.add(tool);
@Override public void onPlayerHurt(LivingHurtEvent event, EntityPlayer victim, @Nonnull ItemStack armorStack, EntityEquipmentSlot slot) { DamageSource source = event.getSource(); if (isHotDamageSource(source) && isInHotness(victim)) { event.getEntity().motionY = 0.5D; event.setCanceled(true); } }
@SubscribeEvent(priority = EventPriority.HIGHEST) public void underworldTeleport(LivingHurtEvent event) { if (!(event.getEntity() instanceof EntityPlayer)) return; if (fallResetter.contains(event.getEntity().getUniqueID())) { if (event.getEntity().posY < 0 || event.getEntity().posY > event.getEntity().world.getHeight()) { event.setCanceled(true); return; fallResetter.remove(event.getEntity().getUniqueID()); event.setCanceled(true); return; if (event.getEntity().getEntityWorld().provider.getDimension() == Wizardry.underWorld.getId()) { if (event.getEntity().posY < 0) { EntityPlayer player = ((EntityPlayer) event.getEntityLiving()); player.isDead = false; 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); fallResetter.add(event.getEntity().getUniqueID()); TeleportUtil.teleportToDimension((EntityPlayer) event.getEntity(), 0, teleportTo.getX(), teleportTo.getY(), teleportTo.getZ()); event.setCanceled(true); } else if (event.getEntity().getEntityWorld().provider.getDimension() == 0) { if (event.getSource() == EntityDamageSource.FALL && event.getEntity().fallDistance >= ConfigValues.underworldFallDistance) { BlockPos location = event.getEntity().getPosition(); BlockPos bedrock = PosUtils.checkNeighborBlocksThoroughly(event.getEntity().getEntityWorld(), location, Blocks.BEDROCK); if (bedrock != null) { fallResetter.add(event.getEntity().getUniqueID()); TeleportUtil.teleportToDimension((EntityPlayer) event.getEntity(), Wizardry.underWorld.getId(), 0, 300, 0);
@SubscribeEvent public void onPlayerHurt(LivingHurtEvent event) { World world = event.getEntity().world; if (!world.isRemote && event.getAmount() != 0.0F) { if (event.getEntity() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)event.getEntity(); if (!player.isCreative()) { ThirstHandler thirstStats = (ThirstHandler) player.getCapability(TANCapabilities.THIRST, null); //Uses hunger values for now, may change in the future thirstStats.addExhaustion(event.getSource().getHungerDamage()); } } } }
@SubscribeEvent public static void onEntityHurt(LivingHurtEvent event) { if (event.getEntity().getEntityWorld().isRemote) return; if (event.getSource().getTrueSource() instanceof EntityPlayer && !PlayerHelper.isFakePlayer((EntityPlayer) event.getSource().getTrueSource())) { EntityPlayer player = (EntityPlayer) event.getSource().getTrueSource(); if (!player.getItemStackFromSlot(EntityEquipmentSlot.CHEST).isEmpty() && player.getItemStackFromSlot(EntityEquipmentSlot.CHEST).getItem() instanceof ItemPackSacrifice) { ItemPackSacrifice pack = (ItemPackSacrifice) player.getItemStackFromSlot(EntityEquipmentSlot.CHEST).getItem(); boolean shouldSyphon = pack.getStoredLP(player.getItemStackFromSlot(EntityEquipmentSlot.CHEST)) < pack.CAPACITY; float damageDone = event.getEntityLiving().getHealth() < event.getAmount() ? event.getAmount() - event.getEntityLiving().getHealth() : event.getAmount(); int totalLP = Math.round(damageDone * ConfigHandler.values.coatOfArmsConversion); if (shouldSyphon) ItemHelper.LPContainer.addLPToItem(player.getItemStackFromSlot(EntityEquipmentSlot.CHEST), totalLP, pack.CAPACITY); } if (LivingArmour.hasFullSet(player)) { ItemStack chestStack = player.getItemStackFromSlot(EntityEquipmentSlot.CHEST); LivingArmour armour = ItemLivingArmour.getLivingArmour(chestStack); if (armour != null) { LivingArmourUpgrade upgrade = ItemLivingArmour.getUpgrade(BloodMagic.MODID + ".upgrade.battleHunger", chestStack); if (upgrade instanceof LivingArmourUpgradeBattleHungry) { ((LivingArmourUpgradeBattleHungry) upgrade).resetTimer(); } } } } }
@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); } } } }
@SubscribeEvent public void onHurt(LivingHurtEvent event) { Entity e = event.getEntity(); if(e instanceof EntitySquid && !e.world.isRemote && event.getSource().getTrueSource() instanceof EntityPlayer) { List<EntityPlayer> players = e.world.getEntitiesWithinAABB(EntityPlayer.class, e.getEntityBoundingBox().grow(4, 4, 4)); for(EntityPlayer player : players) player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, time, 0)); WorldServer ws = (WorldServer) e.world; ws.spawnParticle(EnumParticleTypes.SMOKE_LARGE, e.posX + e.width / 2, e.posY + e.height / 2, e.posZ + e.width / 2, 100, 0, 0, 0, 0.02); } }