Example usage for net.minecraftforge.event.entity.living LivingFallEvent getDistance

List of usage examples for net.minecraftforge.event.entity.living LivingFallEvent getDistance

Introduction

In this page you can find the example usage for net.minecraftforge.event.entity.living LivingFallEvent getDistance.

Prototype

public float getDistance() 

Source Link

Usage

From source file:com.crowsofwar.avatar.common.FallAbsorptionHandler.java

License:Open Source License

@SubscribeEvent
public void onFall(LivingFallEvent e) {
    Entity entity = e.getEntity();
    if (entity instanceof EntityPlayer && !entity.worldObj.isRemote) {
        EntityPlayer player = (EntityPlayer) entity;
        AvatarPlayerData data = AvatarPlayerData.fetcher().fetch(player);
        if (data.getFallAbsorption() != 0) {
            e.setDistance(e.getDistance() - data.getFallAbsorption());
            if (e.getDistance() < 0)
                e.setDistance(0);/*from w w  w  .  ja v a 2 s .c  o m*/
            data.setFallAbsorption(0);
        }
    }
}

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  ww w .  ja  va  2s  .co 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);
    }
}

From source file:com.sr2610.steampunkd.handlers.PlayerMovementHandler.java

License:Creative Commons License

@SubscribeEvent
public void livingFall(LivingFallEvent event) {
    if ((event.getEntity() instanceof EntityPlayer)) {
        final EntityPlayer eventPlayer = (EntityPlayer) event.getEntity();
        if (eventPlayer.getItemStackFromSlot(EntityEquipmentSlot.FEET) != null) {
            final ItemStack boots = eventPlayer.getItemStackFromSlot(EntityEquipmentSlot.FEET);
            if (boots.getItem() == ModItems.pistonBoots) {
                final int d = (int) (event.getDistance() / 2);
                if (((ISteamUser) boots.getItem()).getCurrentSteam(boots) > d) {
                    ((ISteamUser) boots.getItem()).useSteam(d, boots);
                    event.setDistance(0);
                }// ww  w .  j a va 2 s.co  m

            }
        }
    }

}

From source file:de.canitzp.rarmor.module.jump.ItemModuleJump.java

@SubscribeEvent
public static void onFall(LivingFallEvent event) {
    Entity entity = event.getEntity();
    if (entity instanceof EntityPlayer) {
        EntityPlayer player = (EntityPlayer) entity;
        if (!player.isSneaking()) {
            IRarmorData data = RarmorAPI.methodHandler.getDataForChestplate(player, false);
            if (data != null) {
                if (data.getInstalledModuleWithId(ActiveModuleJump.IDENTIFIER) != null
                        && RarmorAPI.methodHandler.getHasRarmorInSlot(player,
                                EntityEquipmentSlot.FEET) != null) {
                    event.setDistance(event.getDistance() - 2F);
                }// w w  w .  j  a va2 s  . com
            }
        }
    }
}