Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-15 11:00:06 +01:00
Improve horrible CraftChunk#getEntities performance (#5999)
Thanks Spigot, very cool.
Dieser Commit ist enthalten in:
Ursprung
0ad55267a3
Commit
e895403a10
@ -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
|
||||
|
29
patches/server/0721-Improve-CraftChunk-getEntities.patch
Normale Datei
29
patches/server/0721-Improve-CraftChunk-getEntities.patch
Normale Datei
@ -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 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
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren