Помогите Не работает блокировка команды

anton3312578859

Активный участник
Пользователь
Баллы
66
Если есть аргументы команды то блокирует, если нет то не блокирует, скажите пожалуйста, что делать?

Код:
public void OnShitCommand(PlayerCommandPreprocessEvent e) {
        Player p = e.getPlayer();
        String cmd = e.getMessage();
        //getLogger().info(cmd);
        if((cmd == "/kit") | (cmd.startsWith("/kit "))) {
            if(!p.hasPermission("myanticmds.bypass")) {
                p.sendMessage("Может тебе ещё креатив выдать?");
                e.setCancelled(true);
            }
        }
}
 
Во-первых, cmd == "/kit" - эта твоя проблемы, и строки обычно так не сравнивают. Вместо этого cmd.equals("/kit).
Во-вторых, вместо | в данном случае (да и зачастую в принципе)лучше использовать ||. При использовании одной | результат проверки пускай и правильный, но проверяться будет всё условие, т.е. и запуск методов.
В-третьих, ты можешь в принципе обойтись одной проверкой cmd.startsWith("/kit"), т.к. это в любом случае проверит их равенство.
 
Если есть аргументы команды то блокирует, если нет то не блокирует, скажите пожалуйста, что делать?

Код:
public void OnShitCommand(PlayerCommandPreprocessEvent e) {
        Player p = e.getPlayer();
        String cmd = e.getMessage();
        //getLogger().info(cmd);
        if((cmd == "/kit") | (cmd.startsWith("/kit "))) {
            if(!p.hasPermission("myanticmds.bypass")) {
                p.sendMessage("Может тебе ещё креатив выдать?");
                e.setCancelled(true);
            }
        }
}
Код:
    List<String> list = ConfigManager.getStringList("Лист с командами, которые будут блокироваться");
    String message = ConfigManager.getString("Сообщение, которое будет выводиться при вводе команды из list");

    @EventHandler
    public void onCommand (PlayerCommandPreprocessEvent e) {

        Player p = e.getPlayer();
        String cmd = e.getMessage().split(" ")[0].toLowerCase();

        if(p.hasPermission("ТВОИ ПРАВА") || p.isOp()) return;

        if(!getBoolean("СТРОКА С БООЛЕАНОМ, ЕСЛИ ЕСТЬ КФГ")) return;

        for(int i = 0; i == cmd.length(); i++ ){
            if(!list.contains(cmd)) return;
            p.sendMessage(ChatColor.translateAlternateColorCodes('&', message));
            e.setCancelled(true);
        }
    }

Не нужно поливать говном качество кода)). Хочу помочь)
 
В-третьих, ты можешь в принципе обойтись одной проверкой cmd.startsWith("/kit"), т.к. это в любом случае проверит их равенство.
Я так делал, он блокирует все команды, к примеру будет какая-то команда, которая начинается со /kit и он её тоже заблокирует. Представь, игрок пишет /kitkat (к примеру), и ему пишет "Может тебе ещё креатив выдать"

Вместо этого cmd.equals("/kit)
Спасибо, сейчас попробую

Код:
    List<String> list = ConfigManager.getStringList("Лист с командами, которые будут блокироваться");
    String message = ConfigManager.getString("Сообщение, которое будет выводиться при вводе команды из list");

    @EventHandler
    public void onCommand (PlayerCommandPreprocessEvent e) {

        Player p = e.getPlayer();
        String cmd = e.getMessage().split(" ")[0].toLowerCase();

        if(p.hasPermission("ТВОИ ПРАВА") || p.isOp()) return;

        if(!getBoolean("СТРОКА С БООЛЕАНОМ, ЕСЛИ ЕСТЬ КФГ")) return;

        for(int i = 0; i == cmd.length(); i++ ){
            if(!list.contains(cmd)) return;
            p.sendMessage(ChatColor.translateAlternateColorCodes('&', message));
            e.setCancelled(true);
        }
    }

Не нужно поливать говном качество кода)). Хочу помочь)

Спс за помощь, но конфиг я делать для этого плагина не хочу
 
Если есть аргументы команды то блокирует, если нет то не блокирует, скажите пожалуйста, что делать?

Код:
public void OnShitCommand(PlayerCommandPreprocessEvent e) {
        Player p = e.getPlayer();
        String cmd = e.getMessage();
        //getLogger().info(cmd);
        if((cmd == "/kit") | (cmd.startsWith("/kit "))) {
            if(!p.hasPermission("myanticmds.bypass")) {
                p.sendMessage("Может тебе ещё креатив выдать?");
                e.setCancelled(true);
            }
        }
}
Команда не так блокируются, отбери пермишенс и все команда перестает работать у игрока. К чему этот велик? Все уже придумано за тебя и как надо.
 
ну вдруг диванные критики будут высирать что-то типа "ы сервер гавно кит старта нет"
Ну и шли их подальше, пусть на своем критичном серваке и играют и на чужой не смотрят.
А для игроков распиши в лоби за что и какие права даются.
 
Во-первых, cmd == "/kit" - эта твоя проблемы, и строки обычно так не сравнивают. Вместо этого cmd.equals("/kit).
Во-вторых, вместо | в данном случае (да и зачастую в принципе)лучше использовать ||. При использовании одной | результат проверки пускай и правильный, но проверяться будет всё условие, т.е. и запуск методов.
Огромное спасибо!
 
Назад
Верх