From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> Date: Fri, 22 Apr 2016 20:34:21 -0500 Subject: [PATCH] Check entity count additions and mark entities removed diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -0,0 +0,0 @@ public class Chunk { k = this.entitySlices.length - 1; } + // Paper start - Try to catch plugins doing indecent things + if (entity.aa) { + boolean thisChunk = entity.getChunkX() == this.locX && entity.getChunkY() == k && entity.getChunkZ() == this.locZ; + String chunkName = entity.getWorld().getWorld().getName() + ":" + entity.getChunkX() + "," + entity.getChunkY() + "," + entity.getChunkZ(); + if (!thisChunk) { + throw new IllegalStateException("Entity Already in another chunk: " + chunkName); + } else if (this.entitySlices[k].contains(entity)) { + throw new IllegalStateException("Double Chunk Add to: " + chunkName); + } else { + for (int i1 = 0; i1 < this.entitySlices.length; i1++) { + if (this.entitySlices[i1].contains(entity)) { + throw new IllegalStateException("Entity was found in another slice of this chunk, tried: " + k + ", was in: " + chunkName); + } + } + new Throwable("Improperly detected double chunk add. Was not actually in this chunk.").printStackTrace(); + } + } + // Paper end + entity.aa = true; entity.ab = this.locX; entity.ac = k; @@ -0,0 +0,0 @@ public class Chunk { } else if (entity instanceof IInventory) { inventoryEntityCounts[i]--; } + entity.aa = false; // You aren't added to chunk anymore // Paper end // Spigot start - decrement creature type count // Keep this synced up with World.a(Class) --