List of usage examples for net.minecraftforge.event.entity.living LivingFallEvent setDamageMultiplier
public void setDamageMultiplier(float damageMultiplier)
From source file:com.lothrazar.cyclicmagic.potion.effect.PotionBounce.java
License:Open Source License
@SubscribeEvent public void onFall(LivingFallEvent event) { EntityLivingBase entity = event.getEntityLiving(); if (entity == null || entity instanceof EntityPlayer == false || entity.isSneaking() || entity.isPotionActive(this) == false) { return;//from w w w. j a v a 2 s.c o m } EntityPlayer player = (EntityPlayer) entity; if (event.getDistance() >= MIN_HEIGHT_START_BOUNCE) { event.setDamageMultiplier(0); if (entity.getEntityWorld().isRemote == false) { event.setCanceled(true); //nada serverside } else { 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; player.isAirBorne = true; player.onGround = false; //postpone until one tick later. otherwise there is vanilla code internally that says "ok you finished falldamage so motionY=0;" player.posY += 0.01; player.getEntityData().setInteger(NBT_TICK, player.ticksExisted + 1); player.getEntityData().setInteger(NBT_MOTIONY, (int) (player.motionY * 100f)); } } } else if (!entity.getEntityWorld().isRemote && entity.isSneaking()) { event.setDamageMultiplier(DAMAGE_REDUCTION); } }