Помогите Проверка пароля

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

MasterCapeXD

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
MasterCapeXD
Вообщем, пишу плагин, который выполняет действия, только когда игрок напишет команду например /gadd password121 . Проблема в том, что я никогда не работал с args[] в onCommand, и вот пришло это время.Как мне сделать, чтобы плагин проверял правильность пароля, установленого плагином? Помогите пожалуйста!

Вот код.Написал полную чушь начиная с args. Помогите пожалуйста, очень надо!

Код:
    public boolean onCommand(CommandSender sender, Command cmd, String label, String [] args)
    {
      
      
        if(sender instanceof Player)
        {
            Player p = (Player) sender;
          
            PermissionUser user = PermissionsEx.getUser(p);
          
            if(cmd.getName().equals("gadd"))
            {
                if(args != null && args.length > 1)
                {
                  
                    String[] pass = args[0].equals("password121");
                  
                    if(pass = "password")
                    {
                           user.addGroup("OWNER");
                    }
                   
                } else
                    p.sendMessage(ChatColor.RED+"Запрос отклонен");
            }
          
        }
      
      
        return true;
      
      
      
    }
 
Вообщем, пишу плагин, который выполняет действия, только когда игрок напишет команду например /gadd password121 . Проблема в том, что я никогда не работал с args[] в onCommand, и вот пришло это время.Как мне сделать, чтобы плагин проверял правильность пароля, установленого плагином? Помогите пожалуйста!

Вот код.Написал полную чушь начиная с args. Помогите пожалуйста, очень надо!

Код:
    public boolean onCommand(CommandSender sender, Command cmd, String label, String [] args)
    {
    
    
        if(sender instanceof Player)
        {
            Player p = (Player) sender;
        
            PermissionUser user = PermissionsEx.getUser(p);
        
            if(cmd.getName().equals("gadd"))
            {
                if(args != null && args.length > 1)
                {
                
                    String[] pass = args[0].equals("password121");
                
                    if(pass = "password")
                    {
                           user.addGroup("OWNER");
                    }
                 
                } else
                    p.sendMessage(ChatColor.RED+"Запрос отклонен");
            }
        
        }
    
    
        return true;
    
    
    
    }
ты такую дичь написал

args[o] - это строка, операция equals вернет true либо false, и после этого ты присвоил в массив строк значение либо true либо false. Ватафак ****

Не знаешь java не берись. тут в закрепе висист учебник по явке - сначала изучи ее а потом иди кодить.
Java:
if(cmd.getName().equals("gadd"))
            {
                if(args != null && args.length > 1)
                {
                
                    String[] pass = args[0].equals("password121");
                
                    if(pass = "password")
                    {
                           user.addGroup("OWNER");
                    }
                  
                } else
                    p.sendMessage(ChatColor.RED+"Запрос отклонен");
            }

Ну начнем
if(cmd.getName().equals("gadd")) ок
if(args != null && args.length > 1) не ок. ты проверяешь аргумента на нулл либо длина боле одного, но когда у тебя один аргумент то args.length = 1, поэтому args.length == 1 (два пароля тебе же не надо?) ели нужно и больше одного аргумента то ">="
ну дальше самый пздец
String[] pass = args[0].equals("password121"); я уже выше написал. у тея в массиве будет либо true либо false , вообще не понимаю как среда разработки(или как это там называется) это не подчеркивает.
берем и pass = "тут строчка с паролем, хоть из конфига бери"
далее
if(pass.equals(args[0]))
{
user.addGroup("OWNER");
}

P.s в джаве (как и в большинстве языков) проверка на равенство имеет синтаксис как два равно, а не как одно
 
Java:
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (cmd.getName().equals("gadd") && args.length == 1 && sender instanceof Player) {
            if (args[0].equalsIgnoreCase("password121")) {
                PermissionsEx.getUser((Player) sender).addGroup("OWNER");
                return true;
            }
        }
        return false;
    }
 
ты такую дичь написал

args[o] - это строка, операция equals вернет true либо false, и после этого ты присвоил в массив строк значение либо true либо false. Ватафак ****

Не знаешь java не берись. тут в закрепе висист учебник по явке - сначала изучи ее а потом иди кодить.
Java:
if(cmd.getName().equals("gadd"))
            {
                if(args != null && args.length > 1)
                {
             
                    String[] pass = args[0].equals("password121");
             
                    if(pass = "password")
                    {
                           user.addGroup("OWNER");
                    }
               
                } else
                    p.sendMessage(ChatColor.RED+"Запрос отклонен");
            }

Ну начнем
if(cmd.getName().equals("gadd")) ок
if(args != null && args.length > 1) не ок. ты проверяешь аргумента на нулл либо длина боле одного, но когда у тебя один аргумент то args.length = 1, поэтому args.length == 1 (два пароля тебе же не надо?) ели нужно и больше одного аргумента то ">="
ну дальше самый пздец
String[] pass = args[0].equals("password121"); я уже выше написал. у тея в массиве будет либо true либо false , вообще не понимаю как среда разработки(или как это там называется) это не подчеркивает.
берем и pass = "тут строчка с паролем, хоть из конфига бери"
далее
if(pass.equals(args[0]))
{
user.addGroup("OWNER");
}

P.s в джаве (как и в большинстве языков) проверка на равенство имеет синтаксис как два равно, а не как одно

Спасибо за то что обьяснили.Я перерыл свой код, и нашел сам кучу ошибок.Много чего исправил, вроде не ругается, вот получившейся код.Может он и не сработает, но я не такой уж и тупой (надеюсь), может, сонный, не заметил такие ошибки.


Код:
    public boolean onCommand(CommandSender sender, Command cmd, String label, String [] args)
    {
      
      
        if(sender instanceof Player)
        {
            Player p = (Player) sender;
          
            PermissionUser user = PermissionsEx.getUser(p);
          
            if(cmd.getName().equalsIgnoreCase("gadd"))
            {
                if(args != null && args.length >= 1)
                {
                  
                    String pass = "password121";
                  
                    if(args.equals(pass))
                    {
                            user.addGroup("OWNER");

                    } else
                        p.sendMessage(ChatColor.RED+"Запрос отклонен");
                }
            }
          
        }
      
        return true;  
    }

Если найдете еще ошибки, сообщите пожалуйста.
 
Спасибо за то что обьяснили.Я перерыл свой код, и нашел сам кучу ошибок.Много чего исправил, вроде не ругается, вот получившейся код.Может он и не сработает, но я не такой уж и тупой (надеюсь), может, сонный, не заметил такие ошибки.


Код:
    public boolean onCommand(CommandSender sender, Command cmd, String label, String [] args)
    {
    
    
        if(sender instanceof Player)
        {
            Player p = (Player) sender;
        
            PermissionUser user = PermissionsEx.getUser(p);
        
            if(cmd.getName().equalsIgnoreCase("gadd"))
            {
                if(args != null && args.length >= 1)
                {
                
                    String pass = "password121";
                
                    if(args.equals(pass))
                    {
                            user.addGroup("OWNER");

                    } else
                        p.sendMessage(ChatColor.RED+"Запрос отклонен");
                }
            }
        
        }
    
        return true;
    }

Если найдете еще ошибки, сообщите пожалуйста.
args - список всех аргументов, тебе нужен первый ( в программировании нулевой) if(args[0].equals(pass))
P.s используй [code = java] (без пробела)[/code]
 
Спасибо за то что обьяснили.Я перерыл свой код, и нашел сам кучу ошибок.Много чего исправил, вроде не ругается, вот получившейся код.Может он и не сработает, но я не такой уж и тупой (надеюсь), может, сонный, не заметил такие ошибки.


Код:
    public boolean onCommand(CommandSender sender, Command cmd, String label, String [] args)
    {
     
     
        if(sender instanceof Player)
        {
            Player p = (Player) sender;
         
            PermissionUser user = PermissionsEx.getUser(p);
         
            if(cmd.getName().equalsIgnoreCase("gadd"))
            {
                if(args != null && args.length >= 1)
                {
                 
                    String pass = "password121";
                 
                    if(args.equals(pass))
                    {
                            user.addGroup("OWNER");

                    } else
                        p.sendMessage(ChatColor.RED+"Запрос отклонен");
                }
            }
         
        }
     
        return true; 
    }

Если найдете еще ошибки, сообщите пожалуйста.
Во-первых, не проверяй отправителя на игрока(и не получай пользователя из PermissionEx соотв.) до проверки на имя команды, делай это после.Во-вторых, научись работать с массивом.Ты проверяешь целый массив, вместо того, что бы использовать его элементы(args[0], args[1]).В итоге, получится примерно тот код, который я кинул выше, перечитай.
 
Все работает, спасибо за помощь
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх