@SubscribeEvent public void onFall(LivingFallEvent event) { EntityLivingBase entity = event.getEntityLiving(); if(entity == null) { return; if(!entity.isSneaking() && event.getDistance() > 2) { event.setDamageMultiplier(0); entity.fallDistance = 0; if(isClient) { event.setCanceled(true); // we don't care about previous cancels, since we just bounceeeee event.setDamageMultiplier(0.2f);
@SubscribeEvent public void onPlayerFall(LivingFallEvent event) { if(event.getEntityLiving() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.getEntityLiving(); if(ItemStackHelpers.hasPlayerItem(player, this)) { event.setDistance(event.getDistance() - FALLDISTANCE_REDUCTION); } } }
@Override public void onLivingEvent(AndroidPlayer androidPlayer, int level, LivingEvent event) { if (event instanceof LivingFallEvent) { ((LivingFallEvent) event).setDamageMultiplier(((LivingFallEvent) event).getDamageMultiplier() * Math.max(0, 1 - level * 0.5f)); if ((int) ((LivingFallEvent) event).getDistance() > 4) { androidPlayer.extractEnergyScaled((int) (((LivingFallEvent) event).getDistance() * level * 0.5f)); } } }
@SubscribeEvent public static void onFall(LivingFallEvent event) { float distance = event.getDistance(); if (distance > 3) { ItemStack boots = event.getEntityLiving().getItemStackFromSlot(EntityEquipmentSlot.FEET); if (boots.getItem() instanceof IDarkSteelItem) { int energyStored = EnergyUpgradeManager.getEnergyStored(boots); if (energyStored > 0) { float toMitigate = distance - 3; int energyCost = (int) Math.min(energyStored, Math.ceil(toMitigate * DarkSteelConfig.fallDistanceCost.get())); float mitigated = energyCost / (float) DarkSteelConfig.fallDistanceCost.get(); if (!event.getEntity().world.isRemote) { EnergyUpgradeManager.extractEnergy(boots, (IDarkSteelItem) boots.getItem(), energyCost, false); } if (mitigated < toMitigate) { // Log.debug("Mitigating fall damage partially: original=", distance, " mitigated=", mitigated, " remaining=", distance - mitigated, " power used=", // energyCost); event.setDistance(distance - mitigated); } else { // Log.debug("Canceling fall damage: original=", distance, " power used=", energyCost); event.setCanceled(true); } } } } }
@SubscribeEvent(priority = EventPriority.LOWEST, receiveCanceled = true) public void fall(LivingFallEvent e) { EntityLivingBase entitySource = e.getEntityLiving(); PotionEffect crash = entitySource.getActivePotionEffect(this); if (crash == null) return; float damage = MathHelper.clamp((e.getDistance() - 3.0f - f) * e.getDamageMultiplier() * 2, 0, 10f); e.setDamageMultiplier(e.getDamageMultiplier() / (crash.getAmplifier() + 2)); List<EntityLivingBase> entities = entitySource.world.getEntitiesWithinAABB(EntityLivingBase.class, entitySource.getEntityBoundingBox().grow(range * 2)); entities.stream().filter(entity -> entity != entitySource && entity.onGround).forEach(entity -> {
@SubscribeEvent public static void fall(LivingFallEvent event) { float scale = timeScale(event.getEntity()); if (scale > 0) event.setDistance(event.getDistance() * scale); }
/** * On event. * * @param event the event */ @SubscribeEvent(priority = EventPriority.NORMAL, receiveCanceled = true) public static void onEvent(LivingFallEvent event) { if (event.getEntityLiving() instanceof EntityPlayer) { for (ItemStack stack : event.getEntityLiving().getArmorInventoryList()) { NBTTagList tagList = stack.getEnchantmentTagList(); for (int i = 0; i < tagList.tagCount(); i++) { NBTTagCompound idTag = tagList.getCompoundTagAt(i); if (idTag.getShort("id") == Enchantment.getEnchantmentID(ModEnchantments.safe_falling)) { // // DEBUG // System.out.println("Boots of safe falling cushioned fall"); event.setDistance(0); event.setDamageMultiplier(0); } } } } }
@SubscribeEvent public void onEntityFall(LivingFallEvent event) { if(event.getEntityLiving() instanceof EntityPlayer){ MiscPlayerProperties properties = EntityPropertiesHandler.INSTANCE.getProperties(event.getEntityLiving(), MiscPlayerProperties.class); if(properties.hasDismountedDragon){ event.setDamageMultiplier(0); properties.hasDismountedDragon = false; } } } @SubscribeEvent
@SubscribeEvent public void fall(LivingFallEvent e){ e.setCanceled(e.getEntity().getRidingEntity() instanceof HelicopterEntity); } @SubscribeEvent
@SubscribeEvent public void onLivingFallEvent(LivingFallEvent event) { if (event.getEntityLiving() instanceof EntityPlayer) { AndroidPlayer androidPlayer = MOPlayerCapabilityProvider.GetAndroidCapability(event.getEntityLiving()); if (androidPlayer.isAndroid()) { androidPlayer.onEntityFall(event); } } }
@Override public void onLivingEvent(AndroidPlayer androidPlayer, int level, LivingEvent event) { if ((event instanceof LivingFallEvent || event instanceof PlayerFlyableFallEvent) && event.getEntityLiving().isSneaking() && this.equals(androidPlayer.getActiveStat())) { if (event instanceof LivingFallEvent) { createShockwave(androidPlayer, event.getEntityLiving(), ((LivingFallEvent) event).getDistance()); } else { createShockwave(androidPlayer, event.getEntityLiving(), ((PlayerFlyableFallEvent) event).getDistance()); } } }
@SubscribeEvent public void onLivingFall(LivingFallEvent event) { if (event.getEntity() instanceof EntityPlayer) { event.setDistance(event.getDistance() - VampirePlayer.get((EntityPlayer) event.getEntity()).getSpecialAttributes().getJumpBoost()); } }
@SubscribeEvent public static void onEntityFall(LivingFallEvent event) { if (event.getEntityLiving() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.getEntityLiving(); if (player.isPotionActive(RegistrarBloodMagic.BOUNCE) && !player.isSneaking() && event.getDistance() > 2) { event.setDamageMultiplier(0); if (player.getEntityWorld().isRemote) { player.motionY *= -0.9; player.fallDistance = 0; bounceMap.put(player, player.motionY); } else { player.fallDistance = 0; event.setCanceled(true); } } } }
@SubscribeEvent public void fall(LivingFallEvent event) { EntityLivingBase entity = event.getEntityLiving(); if (!entity.isPotionActive(this)) return; PotionEffect effect = entity.getActivePotionEffect(this); if (effect == null) return; event.setDistance((float) (event.getDistance() / (effect.getAmplifier() + 0.5))); } }
@SubscribeEvent public void onFall(LivingFallEvent event) { EntityLivingBase entity = event.getEntityLiving(); if (entity == null || entity instanceof EntityPlayer == false || entity.isSneaking() || entity.isPotionActive(this) == false) { if (event.getDistance() >= MIN_HEIGHT_START_BOUNCE) { event.setDamageMultiplier(0); if (entity.getEntityWorld().isRemote == false) { event.setCanceled(true); //nada serverside UtilSound.playSound(player, player.getPosition(), SoundEvents.BLOCK_SLIME_FALL, SoundCategory.PLAYERS, UtilSound.VOLUME / event.getDistance()); UtilParticle.spawnParticle(player.world, EnumParticleTypes.SLIME, player.getPosition()); event.setDistance(0);// fall distance if (player.isElytraFlying() == false) { player.motionY *= -PERCENT_HEIGHT_BOUNCED; event.setDamageMultiplier(DAMAGE_REDUCTION);
EntityLivingBase entity = event.getEntityLiving(); if (entity == null) { return; if (event.getDistance() > 2) { event.setDamageMultiplier(0); entity.fallDistance = 0; if (isClient) { PacketHandler.NETWORK.sendToServer(new PacketBounce()); } else { event.setCanceled(true);