Solved Kick all Players from the Server only sometimes work???

Discussion in 'Plugin Development' started by RedstonecraftHD, Jun 16, 2019.

Thread Status:
Not open for further replies.
  1. How can I kick every Player except of players with a Permission? I tried:
    Code:
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
            Player p = (Player)sender;
            for(Player po : Bukkit.getServer().getOnlinePlayers()) {
            if(sender instanceof Player) {
                if (p.hasPermission("dt.slock") || p.hasPermission("dt.*")) {
                 if (args.length == 1) {
                    if (args[0].equalsIgnoreCase("off")) {
                        Main.slock = false;
                        Bukkit.broadcastMessage("§a§lDer Server wurde erfolgreich entsperrt!");
                    } else
                        if (args[0].equalsIgnoreCase("on")) {
                            Main.slock = true;
                            Bukkit.broadcastMessage("§c§lDer Server wurde gesperrt alle normalen Spieler werden in kürze gekickt!");
                            if (!po.hasPermission("dt.tester") || !po.hasPermission("dt.*")) {
                                po.kickPlayer("§4§lDer Server wurde gesperrt!");
                            }
                        } else
                            p.sendMessage("[Server] §bMeintest du /slock [off/on] ?");
                } else
                    p.sendMessage("[Server] §bMeintest du /slock [off/on] ?");
            } else
                p.sendMessage("[Server] §4§lDu hast kein Recht um diesen Befehl auszuführen!");
            }
          
          
          
          
          
            return false;
        }
            return false;
        }
    but it only sometimes work. (Spigot 1.14.2)
     
    Last edited by a moderator: Jun 16, 2019
  2. Online

    timtower Administrator Administrator Moderator

    @RedstonecraftHD Why not make a method that kicks everybody?
    Because currently your checks are wrong.
    First you are looping over all players, then checking the arguments and permissions from the sender. Then you broadcast.
    If you have 100 players online then you also get 100 broadcasts.
     

  3. Thanks :D
     
Thread Status:
Not open for further replies.

Share This Page