diff options
Diffstat (limited to 'patches/server/0963-Optimize-player-lookups-for-beacons.patch')
-rw-r--r-- | patches/server/0963-Optimize-player-lookups-for-beacons.patch | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/patches/server/0963-Optimize-player-lookups-for-beacons.patch b/patches/server/0963-Optimize-player-lookups-for-beacons.patch new file mode 100644 index 0000000000..5245e38833 --- /dev/null +++ b/patches/server/0963-Optimize-player-lookups-for-beacons.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Spottedleaf <[email protected]> +Date: Thu, 6 Jul 2023 20:17:37 -0700 +Subject: [PATCH] Optimize player lookups for beacons + +For larger ranges, it's better to iterate over the player list +than the entity slices. + +diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +index 2f12a1054c9c9e311e02dc5c3244ad3688db15ba..f13943db6f2fb923c52dcf9e8bf7000041d0a362 100644 +--- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java ++++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java +@@ -329,7 +329,22 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name + double d0 = blockEntity != null ? blockEntity.getEffectRange() : (i * 10 + 10);// Paper - custom beacon ranges + + AABB axisalignedbb = (new AABB(blockposition)).inflate(d0).expandTowards(0.0D, (double) world.getHeight(), 0.0D); +- List<Player> list = world.getEntitiesOfClass(Player.class, axisalignedbb); ++ // Paper start - optimize player lookup for beacons ++ List<Player> list; ++ if (d0 <= 128.0) { ++ list = world.getEntitiesOfClass(Player.class, axisalignedbb); ++ } else { ++ list = new java.util.ArrayList<>(); ++ for (Player player : world.players()) { ++ if (player.isSpectator()) { ++ continue; ++ } ++ if (player.getBoundingBox().intersects(axisalignedbb)) { ++ list.add(player); ++ } ++ } ++ } ++ // Paper end - optimize player lookup for beacons + + return list; + } |