Use WorldServer#entitesById for entity iteration

WorldServer#globalEntityList is not the actual list of entities in a world
This commit is contained in:
Spottedleaf 2019-05-07 18:49:41 -07:00
parent 54388d8715
commit c0f92870ab
4 changed files with 11 additions and 24 deletions

View File

@ -6,12 +6,12 @@ Subject: [PATCH] Add MinecraftKey Information to Objects
Stores the reference to the objects respective MinecraftKey Stores the reference to the objects respective MinecraftKey
diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java
index 841edd010f..3354fdd60d 100644 index b5f318c00d..ce190d88d6 100644
--- a/src/main/java/com/destroystokyo/paper/PaperCommand.java --- a/src/main/java/com/destroystokyo/paper/PaperCommand.java
+++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java +++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java
@@ -0,0 +0,0 @@ public class PaperCommand extends Command { @@ -0,0 +0,0 @@ public class PaperCommand extends Command {
List<Entity> entities = world.globalEntityList; Collection<Entity> entities = world.entitiesById.values();
entities.forEach(e -> { entities.forEach(e -> {
- MinecraftKey key = new MinecraftKey(""); // TODO: update in next patch - MinecraftKey key = new MinecraftKey(""); // TODO: update in next patch
+ MinecraftKey key = e.getMinecraftKey(); + MinecraftKey key = e.getMinecraftKey();

View File

@ -11,11 +11,11 @@ This will ensure that dead entities are skipped from iteration since
they shouldn't of been in the list in the first place. they shouldn't of been in the list in the first place.
diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java
index 3354fdd60d..ab09104542 100644 index ce190d88d6..352a39dcb3 100644
--- a/src/main/java/com/destroystokyo/paper/PaperCommand.java --- a/src/main/java/com/destroystokyo/paper/PaperCommand.java
+++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java +++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java
@@ -0,0 +0,0 @@ public class PaperCommand extends Command { @@ -0,0 +0,0 @@ public class PaperCommand extends Command {
List<Entity> entities = world.globalEntityList; Collection<Entity> entities = world.entitiesById.values();
entities.forEach(e -> { entities.forEach(e -> {
MinecraftKey key = e.getMinecraftKey(); MinecraftKey key = e.getMinecraftKey();
+ if (e.shouldBeRemoved) return; // Paper + if (e.shouldBeRemoved) return; // Paper
@ -51,7 +51,7 @@ index d787a4ab30..d313b9b3ca 100644
if (oclass.isInstance(t0) && t0.getBoundingBox().c(axisalignedbb) && (predicate == null || predicate.test(t0))) { // Spigot - instance check if (oclass.isInstance(t0) && t0.getBoundingBox().c(axisalignedbb) && (predicate == null || predicate.test(t0))) { // Spigot - instance check
list.add(t0); list.add(t0);
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index cbd7793c53..a217cb0fe7 100644 index f8e837faec..aac0146fd2 100644
--- a/src/main/java/net/minecraft/server/Entity.java --- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@ -63,7 +63,7 @@ index cbd7793c53..a217cb0fe7 100644
private float av; private float av;
private float aw; private float aw;
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index cc8d80e95d..2843a61315 100644 index d9f8223fec..fc04e736a4 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java --- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -0,0 +0,0 @@ public class WorldServer extends World { @@ -0,0 +0,0 @@ public class WorldServer extends World {
@ -91,7 +91,7 @@ index cc8d80e95d..2843a61315 100644
} }
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 209e726485..3b0f9c86f1 100644 index 19fa15d793..79a5adf482 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -0,0 +0,0 @@ public class CraftWorld implements World { @@ -0,0 +0,0 @@ public class CraftWorld implements World {

View File

@ -6,7 +6,7 @@ Subject: [PATCH] Paper config files
diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java
new file mode 100644 new file mode 100644
index 0000000000..841edd010f index 0000000000..b5f318c00d
--- /dev/null --- /dev/null
+++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java +++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java
@@ -0,0 +0,0 @@ @@ -0,0 +0,0 @@
@ -185,7 +185,7 @@ index 0000000000..841edd010f
+ } + }
+ WorldServer world = ((CraftWorld) Bukkit.getWorld(worldName)).getHandle(); + WorldServer world = ((CraftWorld) Bukkit.getWorld(worldName)).getHandle();
+ +
+ List<Entity> entities = world.globalEntityList; + Collection<Entity> entities = world.entitiesById.values();
+ entities.forEach(e -> { + entities.forEach(e -> {
+ MinecraftKey key = new MinecraftKey(""); // TODO: update in next patch + MinecraftKey key = new MinecraftKey(""); // TODO: update in next patch
+ +

View File

@ -6,21 +6,8 @@ Subject: [PATCH] Provide E/TE/Chunk count stat methods
Provides counts without the ineffeciency of using .getEntities().size() Provides counts without the ineffeciency of using .getEntities().size()
which creates copy of the collections. which creates copy of the collections.
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index f32c4913c5..606ec3c482 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -0,0 +0,0 @@ import org.bukkit.event.weather.LightningStrikeEvent;
public class WorldServer extends World {
private static final Logger LOGGER = LogManager.getLogger();
- private final List<Entity> globalEntityList = Lists.newArrayList();
+ public final List<Entity> globalEntityList = Lists.newArrayList(); // Paper - private -> public
public final Int2ObjectMap<Entity> entitiesById = new Int2ObjectLinkedOpenHashMap();
private final Map<UUID, Entity> entitiesByUUID = Maps.newHashMap();
private final Queue<Entity> entitiesToAdd = Queues.newArrayDeque();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index b8de760079..c79b0f42a6 100644 index b8de760079..b3a77ec3c5 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -0,0 +0,0 @@ public class CraftWorld implements World { @@ -0,0 +0,0 @@ public class CraftWorld implements World {
@ -30,7 +17,7 @@ index b8de760079..c79b0f42a6 100644
+ // Paper start - Provide fast information methods + // Paper start - Provide fast information methods
+ // TODO review these changes + // TODO review these changes
+ public int getEntityCount() { + public int getEntityCount() {
+ return world.globalEntityList.size(); + return world.entitiesById.size();
+ } + }
+ public int getTileEntityCount() { + public int getTileEntityCount() {
+ // We don't use the full world tile entity list, so we must iterate chunks + // We don't use the full world tile entity list, so we must iterate chunks