2023-07-07 05:18:33 +02:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
|
|
|
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
|
2024-01-20 23:13:41 +01:00
|
|
|
index 44660b9f3d8ef6df42dc05e774a5804fdbfa5d14..3ccc0a8d2091d45100198f2853c17edf62c27728 100644
|
2023-07-07 05:18:33 +02:00
|
|
|
--- a/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/level/block/entity/BeaconBlockEntity.java
|
2023-09-23 00:33:14 +02:00
|
|
|
@@ -329,7 +329,22 @@ public class BeaconBlockEntity extends BlockEntity implements MenuProvider, Name
|
2024-01-20 23:13:41 +01:00
|
|
|
double d0 = blockEntity != null ? blockEntity.getEffectRange() : (i * 10 + 10); // Paper - Custom beacon ranges
|
2023-07-07 05:18:33 +02:00
|
|
|
|
|
|
|
AABB axisalignedbb = (new AABB(blockposition)).inflate(d0).expandTowards(0.0D, (double) world.getHeight(), 0.0D);
|
|
|
|
- List<Player> list = world.getEntitiesOfClass(Player.class, axisalignedbb);
|
2024-01-16 12:41:40 +01:00
|
|
|
+ // Paper start - Perf: optimize player lookup for beacons
|
2023-07-07 05:18:33 +02:00
|
|
|
+ List<Player> list;
|
|
|
|
+ if (d0 <= 128.0) {
|
|
|
|
+ list = world.getEntitiesOfClass(Player.class, axisalignedbb);
|
|
|
|
+ } else {
|
2023-09-23 00:33:14 +02:00
|
|
|
+ list = new java.util.ArrayList<>();
|
|
|
|
+ for (Player player : world.players()) {
|
|
|
|
+ if (player.isSpectator()) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ if (player.getBoundingBox().intersects(axisalignedbb)) {
|
|
|
|
+ list.add(player);
|
|
|
|
+ }
|
|
|
|
+ }
|
2023-07-07 05:18:33 +02:00
|
|
|
+ }
|
2024-01-16 12:41:40 +01:00
|
|
|
+ // Paper end - Perf: optimize player lookup for beacons
|
2023-07-07 05:18:33 +02:00
|
|
|
|
|
|
|
return list;
|
|
|
|
}
|