88import org .bukkit .entity .Entity ;
99import org .bukkit .entity .LivingEntity ;
1010import org .bukkit .entity .Player ;
11+ import org .bukkit .util .NumberConversions ;
1112import org .bukkit .util .Vector ;
1213import java .util .ArrayList ;
1314import 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