Помогите Я пишу плагин на подцветку игроков в радиусе 30 блоков.

TheKrealisYT

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
_TheKrealisYT_
Пишу плагин, команда /wh. Суть плагина в том, что когда ты пишешь команду /wh(wallhack), все игроки в радиусе 30 блоков подсвечиваются. Самая банальная проблема у меня, я затупил, сразу прошу прощения за тупой вопрос. Как мне сделать так, чтобы если игроков в радиусе 30 блоков нет, то игроку писалось, что нет игроков. Иначе просто игрок пишет команду, никого в радиусе нет и ему не пишет ничего!

Вот код:
package ru.main.addon.commands;
import java.util.ArrayList;
import java.util.List;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;

import net.md_5.bungee.api.ChatColor;

public class WallHack implements CommandExecutor {

@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(!(sender instanceof Player)) {
sender.sendMessage("Команду можно использовать только от имени игрока!");
if(!sender.hasPermission("kaddon.wh")) {
sender.sendMessage(ChatColor.RED + "Недостаточно прав!");
}
}
final Player player = (Player)sender;
List<Entity> near = player.getNearbyEntities(30.0D, 30.0D, 30.0D);
for(Entity entity : near) {
if(entity instanceof Player) {
Player nearPlayer = (Player) entity;
player.sendMessage(ChatColor.GREEN + "WallHack активирован.");
nearPlayer.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 300, 1));

}
final List<Player> players = new ArrayList<Player>();
for (final Player player1 : Bukkit.getOnlinePlayers()) {
if (player1.getWorld() == ((Player)sender).getWorld() && player1 != sender) {
players.add(player1);
}
}
if (players.size() == 0) {
sender.sendMessage(ChatColor.RED + "На сервере нет игроков!");
return true;
}
}
return false;
}
}
 
Вот тебе волшебный метод

PHP:
public static List<Player> getNearbyPlayers(Player player, int distance) {
        List<Player> list = new ArrayList<>();

        for (Player p : Bukkit.getServer().getOnlinePlayers()) {
            if (player.getWorld().equals(p.getWorld()) && p.getLocation().distance(player.getLocation()) <= distance) {
                list.add(p);
            }
        }

        return list;
}
Надеюсь разберёшься)

Кстати игрок которого ты подсвечиваешь будет виден всем!
 
Вот тебе волшебный метод

PHP:
public static List<Player> getNearbyPlayers(Player player, int distance) {
        List<Player> list = new ArrayList<>();

        for (Player p : Bukkit.getServer().getOnlinePlayers()) {
            if (player.getWorld().equals(p.getWorld()) && p.getLocation().distance(player.getLocation()) <= distance) {
                list.add(p);
            }
        }

        return list;
}
Надеюсь разберёшься)

Кстати игрок которого ты подсвечиваешь будет виден всем!
А сообщение то игроку как отправить? Куда sendmessage писать?
 
И тебе нужно отправлять пакет игроку на подсветку другого игрока.

PHP:
nearPlayer.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 300, 1));
Иначе nearPlayer будет виден всем
 
Назад
Верх