diff --git a/paper/src/main/java/com/badbones69/blockparticles/Particles.java b/paper/src/main/java/com/badbones69/blockparticles/Particles.java index 5dc80db..f9b5be7 100644 --- a/paper/src/main/java/com/badbones69/blockparticles/Particles.java +++ b/paper/src/main/java/com/badbones69/blockparticles/Particles.java @@ -8,6 +8,7 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; +import org.bukkit.util.NumberConversions; import org.bukkit.util.Vector; import java.util.ArrayList; import java.util.Collection; @@ -1114,37 +1115,27 @@ private ArrayList getCircleReverse(Location center, double radius, int return locations; } - - private Collection getNearbyEntities(Location location, double x, double y, double z) { - final World world = location.getWorld(); - - try { - return world.getNearbyEntities(location, x, y, z); - } catch (Exception ignored) {} - - return new ArrayList<>(); - } - - private boolean noPlayers(Location location, int range) { - try { - Collection out = getNearbyEntities(location, range, range, range); - - if (!out.isEmpty()) { - for (Entity e : out) { - if (e instanceof LivingEntity en) { - if (en instanceof Player) { - return false; - } - } - } - } - } catch (Exception ignored) {} + private boolean noPlayers(Location location, double range) { + double rangeSquared = range * range; + World world = location.getWorld(); + + for (Player player : world.getPlayers()) { + if (distanceSquared(player.getX(), player.getY(), player.getZ(), location) <= rangeSquared) { + return false; + } + } return true; } - + + private static double distanceSquared(double x, double y, double z, Location location) { + return NumberConversions.square(x - location.getX()) + + NumberConversions.square(y - location.getY()) + + NumberConversions.square(z - location.getZ()); + } + private int randomColor() { return random.nextInt(255); } -} \ No newline at end of file +}