Skip to content
This repository was archived by the owner on Feb 17, 2026. It is now read-only.

Commit 0b330aa

Browse files
committed
Improve noPlayers performance
- Use World#getPlayers instead of World#getNearbyEntities
1 parent f683a82 commit 0b330aa

1 file changed

Lines changed: 18 additions & 27 deletions

File tree

paper/src/main/java/com/badbones69/blockparticles/Particles.java

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.bukkit.entity.Entity;
99
import org.bukkit.entity.LivingEntity;
1010
import org.bukkit.entity.Player;
11+
import org.bukkit.util.NumberConversions;
1112
import org.bukkit.util.Vector;
1213
import java.util.ArrayList;
1314
import java.util.Collection;
@@ -1114,37 +1115,27 @@ private ArrayList<Location> getCircleReverse(Location center, double radius, int
11141115

11151116
return locations;
11161117
}
1117-
1118-
private Collection<Entity> getNearbyEntities(Location location, double x, double y, double z) {
1119-
final World world = location.getWorld();
1120-
1121-
try {
1122-
return world.getNearbyEntities(location, x, y, z);
1123-
} catch (Exception ignored) {}
1124-
1125-
return new ArrayList<>();
1126-
}
1127-
1128-
private boolean noPlayers(Location location, int range) {
1129-
try {
1130-
Collection<Entity> out = getNearbyEntities(location, range, range, range);
1131-
1132-
if (!out.isEmpty()) {
1133-
for (Entity e : out) {
1134-
if (e instanceof LivingEntity en) {
1135-
if (en instanceof Player) {
1136-
return false;
1137-
}
1138-
}
1139-
}
1140-
}
1141-
} catch (Exception ignored) {}
11421118

1119+
private boolean noPlayers(Location location, double range) {
1120+
double rangeSquared = range * range;
1121+
World world = location.getWorld();
1122+
1123+
for (Player player : world.getPlayers()) {
1124+
if (distanceSquared(player.getX(), player.getY(), player.getZ(), location) <= rangeSquared) {
1125+
return false;
1126+
}
1127+
}
11431128
return true;
11441129
}
1145-
1130+
1131+
private static double distanceSquared(double x, double y, double z, Location location) {
1132+
return NumberConversions.square(x - location.getX())
1133+
+ NumberConversions.square(y - location.getY())
1134+
+ NumberConversions.square(z - location.getZ());
1135+
}
1136+
11461137
private int randomColor() {
11471138
return random.nextInt(255);
11481139
}
11491140

1150-
}
1141+
}

0 commit comments

Comments
 (0)