diff --git a/CHANGELOG.md b/CHANGELOG.md index dbbfed6..696520b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +**1.0.3** +* Fix Gravity Crash + **1.0.2** * Attempt To Fix Structure Generation Crash diff --git a/gradle.properties b/gradle.properties index ff018c7..dfb2e52 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ org.gradle.jvmargs = -Xmx1G fabric_loader_version = 0.9.2+build.206 # Mod Properties - mod_version = 1.0.2 + mod_version = 1.0.3 maven_group = com.thebrokenrail # Dependencies diff --git a/src/main/java/com/thebrokenrail/energonrelics/mixin/MixinEntity.java b/src/main/java/com/thebrokenrail/energonrelics/mixin/MixinEntity.java index ab56915..9693429 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/mixin/MixinEntity.java +++ b/src/main/java/com/thebrokenrail/energonrelics/mixin/MixinEntity.java @@ -5,6 +5,7 @@ import com.thebrokenrail.energonrelics.block.forcefield.util.BeamBlock; import com.thebrokenrail.energonrelics.block.portal.PortalCooldownEntity; import com.thebrokenrail.energonrelics.config.HardcodedConfig; import net.minecraft.block.Block; +import net.minecraft.block.BlockState; import net.minecraft.entity.Entity; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.MinecraftServer; @@ -26,6 +27,8 @@ import java.util.function.Predicate; public abstract class MixinEntity implements PortalCooldownEntity { @Unique private int energyPortalCooldown = 0; + @Unique + private boolean touchingBeam = false; @Shadow public abstract Box getBoundingBox(); @@ -53,7 +56,8 @@ public abstract class MixinEntity implements PortalCooldownEntity { for (int q = k; q < l; ++q) { for (int r = m; r < n; ++r) { pos.set(p, q, r); - if (test.test(getEntityWorld().getBlockState(pos).getBlock())) { + BlockState state = getEntityWorld().getBlockState(pos); + if (state.getCollisionShape(getEntityWorld(), pos).isEmpty() && test.test(state.getBlock())) { getEntityWorld().getProfiler().pop(); return true; } @@ -71,7 +75,7 @@ public abstract class MixinEntity implements PortalCooldownEntity { @Inject(at = @At("HEAD"), method = "hasNoGravity", cancellable = true) public void hasNoGravity(CallbackInfoReturnable info) { - if (!saving && isTouching(block -> block instanceof BeamBlock)) { + if (!saving && touchingBeam) { info.setReturnValue(true); } } @@ -92,8 +96,13 @@ public abstract class MixinEntity implements PortalCooldownEntity { energyPortalCooldown = tag.getInt(EnergonRelics.NAMESPACE + ":EnergyPortalCooldown"); } + @Inject(at = @At("HEAD"), method = "tick") + public void tickHead(CallbackInfo info) { + touchingBeam = isTouching(block -> block instanceof BeamBlock); + } + @Inject(at = @At("RETURN"), method = "tick") - public void tick(CallbackInfo info) { + public void tickReturn(CallbackInfo info) { energyPortalCooldown--; }