From 50de1ce52949613ed8e55600e6c5c86f48dd795e Mon Sep 17 00:00:00 2001 From: bconlon Date: Sat, 18 Jul 2020 21:10:45 -0700 Subject: [PATCH] Backported fall damage cancellation rework. --- .../com/legacy/aether/AetherEventHandler.java | 17 +++++++++++++++++ .../aether/player/abilities/AbilityArmor.java | 6 ------ .../aether/player/abilities/AbilityFlight.java | 2 -- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/legacy/aether/AetherEventHandler.java b/src/main/java/com/legacy/aether/AetherEventHandler.java index 07d1e87..793b71d 100644 --- a/src/main/java/com/legacy/aether/AetherEventHandler.java +++ b/src/main/java/com/legacy/aether/AetherEventHandler.java @@ -1,5 +1,7 @@ package com.legacy.aether; +import com.legacy.aether.api.AetherAPI; +import com.legacy.aether.api.player.IPlayerAether; import com.legacy.aether.entities.passive.mountable.EntityAerbunny; import com.legacy.aether.entities.projectile.darts.EntityDartBase; import com.legacy.aether.network.AetherNetwork; @@ -41,6 +43,7 @@ import net.minecraftforge.event.entity.EntityStruckByLightningEvent; import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.LivingDropsEvent; +import net.minecraftforge.event.entity.living.LivingFallEvent; import net.minecraftforge.event.entity.player.*; import com.legacy.aether.blocks.BlocksAether; @@ -365,6 +368,20 @@ AetherEventHandler { } } + @SubscribeEvent + public void onFall(LivingFallEvent event) + { + if (event.entityLiving instanceof EntityPlayer) + { + IPlayerAether playerAether = PlayerAether.get((EntityPlayer) event.entityLiving); + + if (playerAether.getAccessoryInventory().wearingArmor(new ItemStack(ItemsAether.sentry_boots)) || playerAether.getAccessoryInventory().isWearingGravititeSet() || playerAether.getAccessoryInventory().isWearingValkyrieSet()) + { + event.setCanceled(true); + } + } + } + private void performTimeSet(PlayerWakeUpEvent event, World world, WorldServer worldServer) { if (world.getGameRules().getGameRuleBooleanValue("doDaylightCycle") && event.entityPlayer.isPlayerFullyAsleep()) diff --git a/src/main/java/com/legacy/aether/player/abilities/AbilityArmor.java b/src/main/java/com/legacy/aether/player/abilities/AbilityArmor.java index e8efe0f..334e0c8 100644 --- a/src/main/java/com/legacy/aether/player/abilities/AbilityArmor.java +++ b/src/main/java/com/legacy/aether/player/abilities/AbilityArmor.java @@ -44,8 +44,6 @@ public class AbilityArmor implements IAetherAbility { this.player.getEntity().motionY = 1D; this.jumpBoosted = true; } - - this.player.getEntity().fallDistance = -1F; } if (this.player.getEntity().isWet()) { @@ -75,10 +73,6 @@ public class AbilityArmor implements IAetherAbility { } } - if (this.player.getAccessoryInventory().wearingArmor(new ItemStack(ItemsAether.sentry_boots))) { - this.player.getEntity().fallDistance = 0F; - } - if (!this.player.isJumping() && this.player.getEntity().onGround) { this.jumpBoosted = false; } diff --git a/src/main/java/com/legacy/aether/player/abilities/AbilityFlight.java b/src/main/java/com/legacy/aether/player/abilities/AbilityFlight.java index 2b05f9a..3487b00 100644 --- a/src/main/java/com/legacy/aether/player/abilities/AbilityFlight.java +++ b/src/main/java/com/legacy/aether/player/abilities/AbilityFlight.java @@ -45,8 +45,6 @@ public class AbilityFlight implements IAetherAbility { this.flightMod = 1.0D; } - this.player.getEntity().fallDistance = -1F; - if (this.player.getEntity().onGround) { this.flightCount = 0; this.flightMod = 1.0D;