Помогите Не кикает игрока при входе

Статус
Закрыто для дальнейших ответов.

adodvstudios

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Jenka20091
Код:
public class BanCommand implements CommandExecutor, Listener {

    public static ArrayList<Player> bannedPlayers = new ArrayList<Player>();
  
    String banSchablon = ChatColor.translateAlternateColorCodes('&', BanConfig.getSchablon());
    String reason = ChatColor.translateAlternateColorCodes('&', "\n &6&lПричина&7&l: "+BanConfig.getReason());
  
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String alias, String[] args) {
        Player p = Bukkit.getPlayer(args[0]);
        if(p == null)
        {
            sender.sendMessage(ChatColor.RED + "ОШИБКА!");
            return true;
        }
        bannedPlayers.add(p);
        sender.sendMessage(ChatColor.GREEN + "✔" + ChatColor.GRAY + " Игрок" + ChatColor.AQUA + p.getName() + ChatColor.GREEN + " Успешно забанен!");
        p.kickPlayer(banSchablon + reason);
        return true;
    }
  
    @EventHandler
    public void onBan(PlayerJoinEvent e)
    {
        for(Player players : bannedPlayers)
        {
            players.kickPlayer(banSchablon + reason);
        }
    }

}

Код:
loadclass(new BanCommand());

public void loadclass(Listener c)
    {
        Bukkit.getPluginManager().registerEvents(c, this);
    }

getCommand("ban").setExecutor(new BanCommand());
/\
| Это в Main классе
Не кикает при входе!
 
1) Не нужно хранить игроков объектами Player. При перезаходе эти объекты пересоздаются. Храни UUID или на крайний случай никнеймы
2) Не нужно при заходе игрока кликать весь список. Кикай лишь того, кто заходит, если он находится в списке
3) Вместо кика в PlayerJoinEvent можно просто отменять PlayerLoginEvent, который вызывается раньше. На кик в PlayerJoinEvent некоторые плагины реагируют некорректно. Да и так будет чуть безопаснее
 
Последнее редактирование:
Ты не правильно делаешь
Код:
    @EventHandler
    public void on(PlayerLoginEvent или AsyncPlayerPreLoginEvent e) {
        Какое то условие.
        e.disallow(Result.KICK_BANNED, "message");
    }
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх