diff --git a/sources/src/main/java/io/akarin/server/mixin/optimization/MixinEntity.java b/sources/src/main/java/io/akarin/server/mixin/optimization/MixinEntity.java new file mode 100644 index 000000000..5c34c28a6 --- /dev/null +++ b/sources/src/main/java/io/akarin/server/mixin/optimization/MixinEntity.java @@ -0,0 +1,30 @@ +package io.akarin.server.mixin.optimization; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; + +import net.minecraft.server.AxisAlignedBB; +import net.minecraft.server.Entity; +import net.minecraft.server.Material; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.World; + +@Mixin(value = Entity.class, remap = false) +public abstract class MixinEntity { + @Shadow public World world; + @Shadow public abstract AxisAlignedBB getBoundingBox(); + + private boolean isInLava; + private int lastLavaCheck = Integer.MIN_VALUE; + + @Overwrite // PAIL: isInLava + public boolean au() { + int currentTick = MinecraftServer.currentTick; + if (this.lastLavaCheck != currentTick) { + this.lastLavaCheck = currentTick; + this.isInLava = this.world.a(this.getBoundingBox().grow(-0.10000000149011612D, -0.4000000059604645D, -0.10000000149011612D), Material.LAVA); + } + return this.isInLava; + } +} \ No newline at end of file diff --git a/sources/src/main/java/io/akarin/server/mixin/realtime/MixinEntity.java b/sources/src/main/java/io/akarin/server/mixin/realtime/MixinEntity.java index 2cb7d7ba1..5f9ce0ea8 100644 --- a/sources/src/main/java/io/akarin/server/mixin/realtime/MixinEntity.java +++ b/sources/src/main/java/io/akarin/server/mixin/realtime/MixinEntity.java @@ -33,7 +33,7 @@ import io.akarin.api.internal.mixin.IMixinRealTimeTicking; import net.minecraft.server.Entity; import net.minecraft.server.World; -@Mixin(value = Entity.class, remap = false) +@Mixin(value = Entity.class, remap = false, priority = 1001) public abstract class MixinEntity { private static final String ENTITY_RIDABLE_COOLDOWN_FIELD = "Lnet/minecraft/entity/Entity;j:I"; // PUTFIELD: rideCooldown private static final String ENTITY_PORTAL_COUNTER_FIELD = "Lnet/minecraft/entity/Entity;al:I"; // PUTFIELD: portalCounter diff --git a/sources/src/main/resources/mixins.akarin.core.json b/sources/src/main/resources/mixins.akarin.core.json index cf428281e..4224d8e61 100644 --- a/sources/src/main/resources/mixins.akarin.core.json +++ b/sources/src/main/resources/mixins.akarin.core.json @@ -34,6 +34,7 @@ "nsc.OptimisticNetworkManager", "nsc.NonblockingServerConnection", + "optimization.MixinEntity", "optimization.WeakBigTree", "optimization.WeakEnchantmentManager", "optimization.MixinEntityHorseAbstract",