From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: JellySquid Date: Sun, 24 Jan 2021 22:55:55 +0100 Subject: [PATCH] lithium entity Co-authored-by: Hugo Planque diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java index f37094c158ec564133008d5cf195fd670c8639c4..769f520fb180f8b7091a63c67ca41c8d17d5976e 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLiving.java +++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java @@ -276,6 +276,9 @@ public abstract class EntityLiving extends Entity { this.bg = this.a(new Dynamic(dynamicopsnbt, dynamicopsnbt.createMap((Map) ImmutableMap.of(dynamicopsnbt.createString("memories"), dynamicopsnbt.emptyMap())))); } + private IBlockData lastStateAtFeet = null; + + private long lastPos = Long.MIN_VALUE; public BehaviorController getBehaviorController() { return this.bg; } @@ -350,6 +353,10 @@ public abstract class EntityLiving extends Entity { @Override public void entityBaseTick() { + // Yatopia start - port lithium + this.lastStateAtFeet = null; + this.lastPos = Long.MIN_VALUE; + // Yatopia end this.ar = this.as; if (this.justCreated) { this.getBedPosition().ifPresent(this::a); @@ -1767,7 +1774,24 @@ public abstract class EntityLiving extends Entity { // Airplane end public IBlockData ds() { - return this.world.getBlockStateIfLoaded(this.getChunkCoordinates()); // Yatopia + // Yatopia start - port lithium + int x = MathHelper.floor(this.locX()); + int y = MathHelper.floor(this.locY()); + int z = MathHelper.floor(this.locZ()); + + long pos = getChunkCoordinates().asLong(); + + if (this.lastPos == pos) { + return this.lastStateAtFeet; + } + + IBlockData state = this.world.getBlockStateIfLoaded(this.getChunkCoordinates()); + + this.lastPos = pos; + this.lastStateAtFeet = state; + + return state; + // Yatopia end } private boolean c(BlockPosition blockposition, IBlockData iblockdata) {