From 330a563d22844f2203fcffc960dea38a6f8a846c Mon Sep 17 00:00:00 2001 From: Taiyou06 Date: Fri, 12 Jul 2024 01:28:46 +0300 Subject: [PATCH] NoFallDamage check at ground --- .../entity/fall_damage/NoFallDamageMixin.java | 31 +++++++++++++++++++ src/main/resources/mixins.core.json | 1 + 2 files changed, 32 insertions(+) create mode 100644 src/main/java/net/gensokyoreimagined/nitori/mixin/entity/fall_damage/NoFallDamageMixin.java diff --git a/src/main/java/net/gensokyoreimagined/nitori/mixin/entity/fall_damage/NoFallDamageMixin.java b/src/main/java/net/gensokyoreimagined/nitori/mixin/entity/fall_damage/NoFallDamageMixin.java new file mode 100644 index 0000000..0ccf756 --- /dev/null +++ b/src/main/java/net/gensokyoreimagined/nitori/mixin/entity/fall_damage/NoFallDamageMixin.java @@ -0,0 +1,31 @@ +package net.gensokyoreimagined.nitori.mixin.entity.fall_damage; + +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.core.BlockPos; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Entity.class) +public abstract class NoFallDamageMixin { + + @Shadow public abstract boolean onGround(); + + @Shadow public abstract void resetFallDistance(); + + + @Inject(method = "checkFallDamage", at = @At("HEAD"), cancellable = true) + private void cancelFallDamage(double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition, CallbackInfo ci) { + if (!(((Entity)(Object)this) instanceof LivingEntity)) { + if (this.onGround()) { + this.resetFallDistance(); + } + ci.cancel(); + } + } + +} \ No newline at end of file diff --git a/src/main/resources/mixins.core.json b/src/main/resources/mixins.core.json index 78acb17..aa2e35c 100755 --- a/src/main/resources/mixins.core.json +++ b/src/main/resources/mixins.core.json @@ -41,6 +41,7 @@ "collections.mob_spawning.SpawnSettingsMixin", "entity.fast_hand_swing.LivingEntityMixin", "entity.fast_retrieval.SectionedEntityCacheMixin", + "entity.fall_damage.NoFallDamageMixin", "logic.fast_bits_blockpos.OptimizedBlockPosBitsMixin", "math.fast_blockops.BlockPosMixin", "math.fast_blockops.DirectionMixin",