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 08a5fabb1d13db26014bb5751aa271c0a0bdcb7a..40d6dfe30e8f388fb2014ba81f9ea4a986354b88 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