mirror of
https://github.com/PaperMC/Paper.git
synced 2025-02-07 08:02:13 +01:00
Use WorldServer#entitesById for entity iteration
WorldServer#globalEntityList is not the actual list of entities in a world
This commit is contained in:
parent
54388d8715
commit
c0f92870ab
@ -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();
|
||||||
|
@ -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 {
|
||||||
|
@ -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
|
||||||
+
|
+
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user