diff --git a/src/main/java/com/fusionflux/portalcubed/mixin/EntityMixin.java b/src/main/java/com/fusionflux/portalcubed/mixin/EntityMixin.java index 30e32849..e3eccf69 100644 --- a/src/main/java/com/fusionflux/portalcubed/mixin/EntityMixin.java +++ b/src/main/java/com/fusionflux/portalcubed/mixin/EntityMixin.java @@ -10,6 +10,7 @@ import com.fusionflux.portalcubed.entity.EntityAttachments; import com.fusionflux.portalcubed.entity.ExperimentalPortal; import com.fusionflux.portalcubed.entity.GelBlobEntity; +import com.fusionflux.portalcubed.items.PortalCubedItems; import com.fusionflux.portalcubed.listeners.WentThroughPortalListener; import com.fusionflux.portalcubed.mechanics.CrossPortalInteraction; import com.fusionflux.portalcubed.util.IPQuaternion; @@ -22,9 +23,12 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.Mth; +import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.ClipContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; @@ -46,6 +50,7 @@ import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import java.util.HashMap; import java.util.List; @@ -532,4 +537,14 @@ public void setCFG() { // final Vec3 newPos = PortalDirectionUtils.simpleTransformPassingVector((Entity)(Object)this, getPosition(tickDelta), original); // return newPos != null ? newPos : original; // } + + @Inject(method = "isInvulnerableTo", at = @At("HEAD"), cancellable = true) + public void portalCubed$letYouFallLonger(DamageSource damageSource, CallbackInfoReturnable cir) { + //noinspection ConstantValue + if (!((Object)this instanceof LivingEntity living)) return; + ItemStack stack = living.getItemBySlot(EquipmentSlot.FEET); + if (damageSource == DamageSource.FALL && (stack.is(PortalCubedItems.LONG_FALL_BOOTS))) { + cir.setReturnValue(true); + } + } } diff --git a/src/main/java/com/fusionflux/portalcubed/mixin/PlayerMixin.java b/src/main/java/com/fusionflux/portalcubed/mixin/PlayerMixin.java index 85e66167..4b89560c 100644 --- a/src/main/java/com/fusionflux/portalcubed/mixin/PlayerMixin.java +++ b/src/main/java/com/fusionflux/portalcubed/mixin/PlayerMixin.java @@ -17,7 +17,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; -import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; @@ -77,13 +76,6 @@ protected PlayerMixin(EntityType entityType, Level world @Override @Shadow public abstract float getSpeed(); - @Inject(method = "isInvulnerableTo", at = @At("HEAD"), cancellable = true) - public void portalCubed$letYouFallLonger(DamageSource damageSource, CallbackInfoReturnable cir) { - ItemStack itemStack5 = this.getItemBySlot(EquipmentSlot.FEET); - if (damageSource == DamageSource.FALL && (itemStack5.is(PortalCubedItems.LONG_FALL_BOOTS))) { - cir.setReturnValue(true); - } - } @ModifyVariable(method = "travel", at = @At("HEAD"), argsOnly = true) private Vec3 portalCubed$what(Vec3 travelVectorOriginal) { if (!this.isNoGravity()) {