1
0
Fork 0
mirror of https://github.com/PaperMC/Paper.git synced 2025-01-31 03:50:36 +01:00

Improve horrible CraftChunk#getEntities performance ()

Thanks Spigot, very cool.
This commit is contained in:
Jake Potrebic 2021-06-28 05:53:28 -07:00
parent 4c515198bb
commit cecb38e6ed
2 changed files with 32 additions and 0 deletions

View file

@ -225,3 +225,6 @@ public net.minecraft.world.entity.animal.Fox setFaceplanted(Z)V
# Cook speed multipler API
public net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity recipeType
# Improve CraftChunk#getEntities
public net.minecraft.world.level.entity.PersistentEntitySectionManager sectionStorage

View file

@ -0,0 +1,29 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
@@ -0,0 +0,0 @@ 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