@SubscribeEvent
 public void onCreativeFall(PlayerFlyableFallEvent event) {
   ZSSPlayerSkills skills = ZSSPlayerSkills.get(event.entityPlayer);
   if (skills.isSkillActive(SkillBase.leapingBlow)) {
     ((LeapingBlow) skills.getPlayerSkill(SkillBase.leapingBlow))
         .onImpact(event.entityPlayer, event.distance);
   }
 }
  /**
   * NOTE: LivingFallEvent is not called in Creative mode, so must also listen for {@link
   * PlayerFlyableFallEvent} Should receive canceled to make sure LeapingBlow triggers/deactivates
   */
  @SubscribeEvent(receiveCanceled = true)
  public void onFall(LivingFallEvent event) {
    if (event.entity instanceof EntityPlayer) {
      EntityPlayer player = (EntityPlayer) event.entity;
      ZSSPlayerInfo info = ZSSPlayerInfo.get(player);
      ZSSPlayerSkills skills = info.getPlayerSkills();
      if (skills.isSkillActive(SkillBase.leapingBlow)) {
        ((LeapingBlow) skills.getPlayerSkill(SkillBase.leapingBlow))
            .onImpact(player, event.distance);
      }

      if (!event.isCanceled() && info.reduceFallAmount > 0.0F) {
        event.distance -= info.reduceFallAmount;
        info.reduceFallAmount = 0.0F;
      }
    }
  }