Помогите Подтверждение администратора через консоль

  • Автор темы Автор темы Kloper
  • Дата начала Дата начала

Kloper

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
f3azzy
Привет!
Нужно чтобы игроку с определённым ником при входе блокировали все действия, чтобы он не смог двигаться, сломать/поставить блок, написать команду или что либо сделать.

Но так же можно было этот "эффект" снять, через консоль, я тут сделал как то, вроде работает, даёт при входе все нужные "эффекты", но вот снять их, не получается, что у меня не так?

code:
Код:
public class guard implements Listener, CommandExecutor{

     ArrayList<Player> guard = new ArrayList<Player>();
    
    @EventHandler
    public void guardind(PlayerJoinEvent e) {
        
        Player p = e.getPlayer();
                
        if(p.getName().equals("timqxikzz") || p.getName().equals("shqrkzz")) {
            guard.add(p);
            p.sendMessage("§cYou need confirmation.");
        }
        
    }
    
    @EventHandler
    public void move(PlayerMoveEvent e) {
        
        Player p = e.getPlayer();
        
        if (guard.contains(p)) {
            p.sendMessage("§cYou need confirmation.");
            e.setCancelled(true);
        }
        
    }
    
    @EventHandler
    public void cmd(PlayerCommandPreprocessEvent e) {
        
        Player p = e.getPlayer();
        
        if (guard.contains(p)) {
            p.sendMessage("§cYou need confirmation.");
            e.setCancelled(true);
        }
        
    }
    
    @EventHandler
    public void cmd(BlockPlaceEvent e) {
        
        Player p = e.getPlayer();
        
        if (guard.contains(p)) {
            p.sendMessage("§cYou need confirmation.");
            e.setCancelled(true);
        }
        
    }
    
    @EventHandler
    public void cmd(BlockBreakEvent e) {
        
        Player p = e.getPlayer();
        
        if (guard.contains(p)) {
            p.sendMessage("§cYou need confirmation.");
            e.setCancelled(true);
        }
        
    }
    
    @EventHandler
    public void cmd(AsyncPlayerChatEvent e) {
        
        Player p = e.getPlayer();
        
        if (guard.contains(p)) {
            p.sendMessage("§cYou need confirmation.");
            e.setCancelled(true);
        }
        
    }

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        
        if(!sender.hasPermission("server.adms")) {
            return true;
        }
        
        if(args.length == 0) {
            return true;
        }
        
        String name = args[0];
        Player target = Bukkit.getPlayer(name);
        if(target == null) {
            return true;
        }
        
        guard.add(target);
        
        guard.remove(target);
        
        target.sendMessage("§aYou are allowed access");
        
        return true;
    }
    
}
 
Привет!
Нужно чтобы игроку с определённым ником при входе блокировали все действия, чтобы он не смог двигаться, сломать/поставить блок, написать команду или что либо сделать.

Но так же можно было этот "эффект" снять, через консоль, я тут сделал как то, вроде работает, даёт при входе все нужные "эффекты", но вот снять их, не получается, что у меня не так?

code:
Код:
public class guard implements Listener, CommandExecutor{

     ArrayList<Player> guard = new ArrayList<Player>();
  
    @EventHandler
    public void guardind(PlayerJoinEvent e) {
      
        Player p = e.getPlayer();
              
        if(p.getName().equals("timqxikzz") || p.getName().equals("shqrkzz")) {
            guard.add(p);
            p.sendMessage("§cYou need confirmation.");
        }
      
    }
  
    @EventHandler
    public void move(PlayerMoveEvent e) {
      
        Player p = e.getPlayer();
      
        if (guard.contains(p)) {
            p.sendMessage("§cYou need confirmation.");
            e.setCancelled(true);
        }
      
    }
  
    @EventHandler
    public void cmd(PlayerCommandPreprocessEvent e) {
      
        Player p = e.getPlayer();
      
        if (guard.contains(p)) {
            p.sendMessage("§cYou need confirmation.");
            e.setCancelled(true);
        }
      
    }
  
    @EventHandler
    public void cmd(BlockPlaceEvent e) {
      
        Player p = e.getPlayer();
      
        if (guard.contains(p)) {
            p.sendMessage("§cYou need confirmation.");
            e.setCancelled(true);
        }
      
    }
  
    @EventHandler
    public void cmd(BlockBreakEvent e) {
      
        Player p = e.getPlayer();
      
        if (guard.contains(p)) {
            p.sendMessage("§cYou need confirmation.");
            e.setCancelled(true);
        }
      
    }
  
    @EventHandler
    public void cmd(AsyncPlayerChatEvent e) {
      
        Player p = e.getPlayer();
      
        if (guard.contains(p)) {
            p.sendMessage("§cYou need confirmation.");
            e.setCancelled(true);
        }
      
    }

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
      
        if(!sender.hasPermission("server.adms")) {
            return true;
        }
      
        if(args.length == 0) {
            return true;
        }
      
        String name = args[0];
        Player target = Bukkit.getPlayer(name);
        if(target == null) {
            return true;
        }
      
        guard.add(target);
      
        guard.remove(target);
      
        target.sendMessage("§aYou are allowed access");
      
        return true;
    }
  
}
Делаешь проверку отправителя команды не на наличие прав, а на то, является ли отправитель консолью. Дальше проверяешь игрока на наличие в этом списке и удаляешь его в том случае, если он там есть.
Код:
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (sender instanceof ConsoleCommandSender) {
            if (args.length == 0) {
                sender.sendMessage("Enter player nickname!");
            } else if (args.length == 1) {
                Player t = Bukkit.getPlayerExact(args[0]);
                if (t != null) {
                    if (plugin.guard.contains(t)) {
                        plugin.guard.remove(t);
                        t.sendMessage("§fYou're allowed access");
                        sender.sendMessage("Player " + args[0] + " has been removed from the list");
                    } else sender.sendMessage("This player is not on the protection list.");
                } else sender.sendMessage("Player " + args[0] + " not found!");
            } else sender.sendMessage("You entered too many arguments!");
        }
        return true;
    }

И тебе бы удалять игрока из этого списка при выходе из игры
Код:
    @EventHandler
    void onExit(PlayerQuitEvent e) {
        guard.remove(e.getPlayer());
    }
 
Делаешь проверку отправителя команды не на наличие прав, а на то, является ли отправитель консолью. Дальше проверяешь игрока на наличие в этом списке и удаляешь его в том случае, если он там есть.
Код:
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (sender instanceof ConsoleCommandSender) {
            if (args.length == 0) {
                sender.sendMessage("Enter player nickname!");
            } else if (args.length == 1) {
                Player t = Bukkit.getPlayerExact(args[0]);
                if (t != null) {
                    if (plugin.guard.contains(t)) {
                        plugin.guard.remove(t);
                        t.sendMessage("§fYou're allowed access");
                        sender.sendMessage("Player " + args[0] + " has been removed from the list");
                    } else sender.sendMessage("This player is not on the protection list.");
                } else sender.sendMessage("Player " + args[0] + " not found!");
            } else sender.sendMessage("You entered too many arguments!");
        }
        return true;
    }

И тебе бы удалять игрока из этого списка при выходе из игры
Код:
    @EventHandler
    void onExit(PlayerQuitEvent e) {
        guard.remove(e.getPlayer());
    }
<3
 
Назад
Верх