mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-19 15:09:25 +00:00
optimise getNearestPlayer
This commit is contained in:
@@ -20,10 +20,10 @@ One-time operation: Convert distance to squared distance
|
||||
Total operations: ~3 × n (in the no-predicate case) or ~4 × n (with predicate)
|
||||
|
||||
diff --git a/net/minecraft/world/level/EntityGetter.java b/net/minecraft/world/level/EntityGetter.java
|
||||
index 670860df81a3abfc1b8b53be505fce0ee32ee2c4..083a2b5da246113913bcd5d0b2b9be42cf0554d9 100644
|
||||
index 670860df81a3abfc1b8b53be505fce0ee32ee2c4..308e00947da3fe4888fb1b1b9fa11ac5da46663b 100644
|
||||
--- a/net/minecraft/world/level/EntityGetter.java
|
||||
+++ b/net/minecraft/world/level/EntityGetter.java
|
||||
@@ -201,23 +201,42 @@ public interface EntityGetter extends ca.spottedleaf.moonrise.patches.chunk_syst
|
||||
@@ -201,23 +201,43 @@ public interface EntityGetter extends ca.spottedleaf.moonrise.patches.chunk_syst
|
||||
}
|
||||
// Paper end - Affects Spawning API
|
||||
|
||||
@@ -41,9 +41,10 @@ index 670860df81a3abfc1b8b53be505fce0ee32ee2c4..083a2b5da246113913bcd5d0b2b9be42
|
||||
|
||||
- for (Player player1 : this.players()) {
|
||||
- if (predicate == null || predicate.test(player1)) {
|
||||
+ List<? extends Player> players = this.players();
|
||||
+ if (predicate == null) {
|
||||
+ for (int i = 0; i < this.players().size(); i++) {
|
||||
+ Player player1 = this.players().get(i);
|
||||
+ for (int i = 0, playersSize = players.size(); i < playersSize; i++) {
|
||||
+ Player player1 = players.get(i);
|
||||
double d1 = player1.distanceToSqr(x, y, z);
|
||||
- if ((distance < 0.0 || d1 < distance * distance) && (d == -1.0 || d1 < d)) {
|
||||
- d = d1;
|
||||
@@ -53,8 +54,8 @@ index 670860df81a3abfc1b8b53be505fce0ee32ee2c4..083a2b5da246113913bcd5d0b2b9be42
|
||||
}
|
||||
}
|
||||
+ } else {
|
||||
+ for (int i = 0; i < this.players().size(); i++) {
|
||||
+ Player player1 = this.players().get(i);
|
||||
+ for (int i = 0, playersSize = players.size(); i < playersSize; i++) {
|
||||
+ Player player1 = players.get(i);
|
||||
+ if (predicate.test(player1)) {
|
||||
+ double d1 = player1.distanceToSqr(x, y, z);
|
||||
+ if (d1 < distance) {
|
||||
|
||||
Reference in New Issue
Block a user