Optimizes lava check

This commit is contained in:
Sotr
2018-07-16 03:38:16 +08:00
parent ff00b7556e
commit 5f6671cd50
3 changed files with 32 additions and 1 deletions

View File

@@ -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;
}
}

View File

@@ -33,7 +33,7 @@ import io.akarin.api.internal.mixin.IMixinRealTimeTicking;
import net.minecraft.server.Entity; import net.minecraft.server.Entity;
import net.minecraft.server.World; import net.minecraft.server.World;
@Mixin(value = Entity.class, remap = false) @Mixin(value = Entity.class, remap = false, priority = 1001)
public abstract class MixinEntity { 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_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 private static final String ENTITY_PORTAL_COUNTER_FIELD = "Lnet/minecraft/entity/Entity;al:I"; // PUTFIELD: portalCounter

View File

@@ -34,6 +34,7 @@
"nsc.OptimisticNetworkManager", "nsc.OptimisticNetworkManager",
"nsc.NonblockingServerConnection", "nsc.NonblockingServerConnection",
"optimization.MixinEntity",
"optimization.WeakBigTree", "optimization.WeakBigTree",
"optimization.WeakEnchantmentManager", "optimization.WeakEnchantmentManager",
"optimization.MixinEntityHorseAbstract", "optimization.MixinEntityHorseAbstract",