diff --git a/src/main/java/net/minecraft/entity/Entity.java b/src/main/java/net/minecraft/entity/Entity.java index d311a2a..a279ad2 100644 --- a/src/main/java/net/minecraft/entity/Entity.java +++ b/src/main/java/net/minecraft/entity/Entity.java @@ -2490,6 +2490,7 @@ private final EntityType cachedEntityType = computeEntityType(); private GameProfile owner; + public boolean removeThisTick; public final void setObjectOwner(GameProfile owner) { diff --git a/src/main/java/net/minecraft/tileentity/TileEntity.java b/src/main/java/net/minecraft/tileentity/TileEntity.java index b83ef05..70b26a2 100644 --- a/src/main/java/net/minecraft/tileentity/TileEntity.java +++ b/src/main/java/net/minecraft/tileentity/TileEntity.java @@ -380,6 +380,7 @@ /* ======================================== ULTRAMINE START ===================================== */ private GameProfile owner; + public boolean removeThisTick; public final void setObjectOwner(GameProfile owner) { diff --git a/src/main/java/net/minecraft/world/World.java b/src/main/java/net/minecraft/world/World.java index ec4881f..eea905c 100644 --- a/src/main/java/net/minecraft/world/World.java +++ b/src/main/java/net/minecraft/world/World.java @@ -1915,6 +1915,7 @@ if (entity.isDead) { // this.weatherEffects.remove(i--); + entity.removeThisTick = true; } } weatherEffects.removeIf(LambdaHolder.ENTITY_REMOVAL_PREDICATE); @@ -2008,6 +2009,7 @@ } // this.loadedEntityList.remove(i--); + entity.removeThisTick = true; this.onEntityRemoved(entity); } @@ -2061,6 +2063,7 @@ if (tileentity.isInvalid()) { // iterator.remove(); + tileentity.removeThisTick = true; if (this.chunkExists(tileentity.xCoord >> 4, tileentity.zCoord >> 4)) { diff --git a/src/main/java/org/ultramine/server/internal/LambdaHolder.java b/src/main/java/org/ultramine/server/internal/LambdaHolder.java index 22c6cad..a6416e9 100644 --- a/src/main/java/org/ultramine/server/internal/LambdaHolder.java +++ b/src/main/java/org/ultramine/server/internal/LambdaHolder.java @@ -7,6 +7,6 @@ public class LambdaHolder { - public static final Predicate ENTITY_REMOVAL_PREDICATE = o -> ((Entity)o).isDead; - public static final Predicate TILE_ENTITY_REMOVAL_PREDICATE = o -> ((TileEntity)o).isInvalid(); + public static final Predicate ENTITY_REMOVAL_PREDICATE = o -> ((Entity)o).removeThisTick; + public static final Predicate TILE_ENTITY_REMOVAL_PREDICATE = o -> ((TileEntity)o).removeThisTick; }