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)
|
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
|
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
|
--- a/net/minecraft/world/level/EntityGetter.java
|
||||||
+++ b/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
|
// Paper end - Affects Spawning API
|
||||||
|
|
||||||
@@ -41,9 +41,10 @@ index 670860df81a3abfc1b8b53be505fce0ee32ee2c4..083a2b5da246113913bcd5d0b2b9be42
|
|||||||
|
|
||||||
- for (Player player1 : this.players()) {
|
- for (Player player1 : this.players()) {
|
||||||
- if (predicate == null || predicate.test(player1)) {
|
- if (predicate == null || predicate.test(player1)) {
|
||||||
|
+ List<? extends Player> players = this.players();
|
||||||
+ if (predicate == null) {
|
+ if (predicate == null) {
|
||||||
+ for (int i = 0; i < this.players().size(); i++) {
|
+ for (int i = 0, playersSize = players.size(); i < playersSize; i++) {
|
||||||
+ Player player1 = this.players().get(i);
|
+ Player player1 = players.get(i);
|
||||||
double d1 = player1.distanceToSqr(x, y, z);
|
double d1 = player1.distanceToSqr(x, y, z);
|
||||||
- if ((distance < 0.0 || d1 < distance * distance) && (d == -1.0 || d1 < d)) {
|
- if ((distance < 0.0 || d1 < distance * distance) && (d == -1.0 || d1 < d)) {
|
||||||
- d = d1;
|
- d = d1;
|
||||||
@@ -53,8 +54,8 @@ index 670860df81a3abfc1b8b53be505fce0ee32ee2c4..083a2b5da246113913bcd5d0b2b9be42
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
+ } else {
|
+ } else {
|
||||||
+ for (int i = 0; i < this.players().size(); i++) {
|
+ for (int i = 0, playersSize = players.size(); i < playersSize; i++) {
|
||||||
+ Player player1 = this.players().get(i);
|
+ Player player1 = players.get(i);
|
||||||
+ if (predicate.test(player1)) {
|
+ if (predicate.test(player1)) {
|
||||||
+ double d1 = player1.distanceToSqr(x, y, z);
|
+ double d1 = player1.distanceToSqr(x, y, z);
|
||||||
+ if (d1 < distance) {
|
+ if (d1 < distance) {
|
||||||
|
|||||||
Reference in New Issue
Block a user