From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Fri, 25 Jun 2021 12:06:35 -0700 Subject: [PATCH] Improve CraftChunk#getEntities diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java index 591a66dcdb717ad041120ab27de8f2f3a1975358..0a76032b48af4327580b99730e534f628924fe35 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java @@ -110,11 +110,13 @@ public class CraftChunk implements Chunk { this.getWorld().getChunkAt(x, z); // Transient load for this tick } - Location location = new Location(null, 0, 0, 0); - return this.getWorld().getEntities().stream().filter((entity) -> { - entity.getLocation(location); - return location.getBlockX() >> 4 == this.x && location.getBlockZ() >> 4 == this.z; - }).toArray(Entity[]::new); + // Paper start - improve CraftChunk#getEntities + return this.worldServer.entityManager.sectionStorage.getExistingSectionsInChunk(ChunkPos.asLong(this.x, this.z)) + .flatMap(net.minecraft.world.level.entity.EntitySection::getEntities) + .map(net.minecraft.world.entity.Entity::getBukkitEntity) + .filter(entity -> entity != null && entity.isValid()) + .toArray(Entity[]::new); + // Paper end } @Override