@Override public void onBlock(ItemStack tool, EntityPlayer player, LivingHurtEvent event) { // block fire damage if(event.getSource().isFireDamage()) { event.setCanceled(true); ToolHelper.damageTool(tool, 3, player); } if(event.getSource().getTrueSource() != null) { event.getSource().getTrueSource().setFire(3); } } }
private void addDrop(LivingDropsEvent event, ItemStack drop) { EntityItem entityitem = new EntityItem(event.getEntityLiving().world, event.getEntityLiving().posX, event.getEntityLiving().posY, event.getEntityLiving().posZ, drop); entityitem.setPickupDelay(10); event.getDrops().add(entityitem); }
@SubscribeEvent public void onSpawn(LivingSpawnEvent.CheckSpawn event) { if(event.getResult() != Result.ALLOW && event.getEntityLiving() instanceof IMob) { AxisAlignedBB aabb = new AxisAlignedBB(event.getX() - RANGE, event.getY() - RANGE, event.getZ() - RANGE, event.getX() + RANGE, event.getY() + RANGE, event.getZ() + RANGE); for(EntityPlayer player : event.getWorld().playerEntities) { if(hasEffect(player) && player.getEntityBoundingBox().intersects(aabb)) { event.setResult(Result.DENY); return; } } } }
@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 static void onLivingHurt(LivingHurtEvent event) { EntityLivingBase entity = event.getEntityLiving(); if(entity.isRiding() && entity.getRidingEntity() instanceof EntityLivingBase) entity = (EntityLivingBase) entity.getRidingEntity(); if((entity instanceof EntityZombieHorse || entity instanceof EntitySkeletonHorse) && event.getSource() == DamageSource.FALL && ((AbstractHorse) entity).isTame()) { event.setCanceled(true); } }
@SubscribeEvent public void onEntityKill(LivingDeathEvent event) { Entity killer = event.getSource().getTrueSource(); if(killer != null && killer instanceof EntityLivingBase) { EntityLivingBase living = (EntityLivingBase) killer; if(hasEffect(living)) living.heal(event.getEntityLiving().getMaxHealth() / 20); } }
@Override public void onBlock(ItemStack tool, EntityPlayer player, LivingHurtEvent event) { Entity target = event.getSource().getTrueSource(); dealSpikyDamage(true, tool, player, target); }
@SubscribeEvent public static void onSpawn(LivingSpawnEvent.CheckSpawn event) { if(event.getEntityLiving() instanceof EntitySlime && event.getResult() != Result.DENY && isSlimeChunk(event.getEntityLiving().world, MathHelper.floor(event.getX()), MathHelper.floor(event.getZ()))) event.getEntityLiving().getEntityData().setBoolean(TAG_WORLD_SPAWNED, true); }
@SubscribeEvent public static void onLivingUpdate(LivingUpdateEvent event) { if(event.getEntityLiving().world.isRemote) return; ShedPattern pattern = getShedPattern(event.getEntityLiving()); if(pattern != null) { if(event.getEntityLiving().world.rand.nextInt(pattern.getRate()) == 0) event.getEntityLiving().entityDropItem(pattern.getItemStack(), 0.0F); } }
private boolean alreadyContainsDrop(LivingDropsEvent event, ItemStack head) { return event.getDrops().stream().map(EntityItem::getItem).anyMatch(drop -> ItemStack.areItemStacksEqual(drop, head)); }
@SubscribeEvent public void onEnderTeleport(EnderTeleportEvent event) { if(Enderference.getLevel(event.getEntityLiving()) > 0) { event.setCanceled(true); } } }
@SubscribeEvent public void onPlayerJump(LivingJumpEvent event) { if(event.getEntityLiving() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.getEntityLiving(); ItemStack belt = BaublesApi.getBaublesHandler(player).getStackInSlot(3); if(!belt.isEmpty() && belt.getItem() instanceof ItemTravelBelt && ManaItemHandler.requestManaExact(belt, player, COST, false)) { player.motionY += ((ItemTravelBelt) belt.getItem()).jump; player.fallDistance = -((ItemTravelBelt) belt.getItem()).fallBuffer; } } }
@SubscribeEvent public void onLivingJump(LivingEvent.LivingJumpEvent event) { if(event.getEntity() == null) { return; } // check if we jumped from a slime block BlockPos pos = new BlockPos(event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ); if(event.getEntity().getEntityWorld().isAirBlock(pos)) { pos = pos.down(); } IBlockState state = event.getEntity().getEntityWorld().getBlockState(pos); Block block = state.getBlock(); if(block == TinkerCommons.blockSlimeCongealed) { bounce(event.getEntity(), 0.25f); } else if(block == TinkerCommons.blockSoil) { if(state.getValue(BlockSoil.TYPE) == BlockSoil.SoilTypes.SLIMY_MUD_GREEN || state.getValue(BlockSoil.TYPE) == BlockSoil.SoilTypes.SLIMY_MUD_BLUE) { bounce(event.getEntity(), 0.15f); } } else if(worldLoaded && (block == TinkerWorld.slimeDirt || block == TinkerWorld.slimeGrass)) { bounce(event.getEntity(), 0.06f); } }
@SubscribeEvent public void onXpDrop(LivingExperienceDropEvent event) { EntityPlayer player = event.getAttackingPlayer(); if(player != null) { if(TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { event.setDroppedExperience(getUpdateXP(event.getDroppedExperience())); } } }
@SubscribeEvent public void onSpawn(LivingSpawnEvent.CheckSpawn event) { if(event.getResult() != Result.ALLOW && event.getEntityLiving() instanceof IMob) { AxisAlignedBB aabb = new AxisAlignedBB(event.getX() - RANGE, event.getY() - RANGE, event.getZ() - RANGE, event.getX() + RANGE, event.getY() + RANGE, event.getZ() + RANGE); for(EntityPlayer player : event.getWorld().playerEntities) { if(hasEffect(player) && !hasEffect(player, ModPotions.emptiness) && player.getEntityBoundingBox().intersects(aabb)) { event.setResult(Result.ALLOW); return; } } } }
@SubscribeEvent public static void onDrops(LivingDropsEvent event) { if(event.getEntityLiving() instanceof EntityBlaze && event.getEntityLiving().getEntityData().getBoolean(TAG_FEL_SPAWNED)) if(event.getDrops().isEmpty()) event.getDrops().add(new EntityItem(event.getEntityLiving().world, event.getEntityLiving().posX, event.getEntityLiving().posY, event.getEntityLiving().posZ, new ItemStack(Items.BLAZE_POWDER, 6))); else for(EntityItem item : event.getDrops()) { ItemStack stack = item.getItem(); if(stack.getItem() == Items.BLAZE_ROD) item.setItem(new ItemStack(Items.BLAZE_POWDER, stack.getCount() * 10)); } }
public boolean effectOnDamage(LivingHurtEvent event, EntityPlayer player, ItemStack stack) { if(!event.getSource().isMagicDamage()) { event.setCanceled(true); 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 yellow = Math.random() > 0.5; Botania.proxy.sparkleFX(x, y, z, yellow ? 1F : 0.3F, yellow ? 1F : 0.3F, yellow ? 0.3F : 1F, 0.8F + (float) Math.random() * 0.4F, 3); } return true; } return false; }
@SubscribeEvent public void onDamageEntity(LivingHurtEvent event) { DamageSource source = event.getSource(); if(source.isProjectile() && !(source.getTrueSource() instanceof FakePlayer) && source.getTrueSource() instanceof EntityPlayerMP && source.getImmediateSource() instanceof EntityArrow) { grantAdvancement((EntityPlayerMP) source.getTrueSource(), ADVANCEMENT_SHOOT_ARROW); } }
@SubscribeEvent(priority = EventPriority.LOWEST) public static void onDrops(LivingDropsEvent event) { EntityLivingBase e = event.getEntityLiving(); if(e.getEntityData().hasKey(TAG_ITEMSTACK_TO_DROP)) { NBTTagCompound cmp = e.getEntityData().getCompoundTag(TAG_ITEMSTACK_TO_DROP); ItemStack stack = new ItemStack(cmp); event.getDrops().clear(); event.getDrops().add(new EntityItem(e.world, e.posX, e.posY, e.posZ, stack)); } } }