Я хочу использовать 3 аргумента Команда должна выглядеть следующим образом: / event pop on - PullRequest
0 голосов
/ 05 февраля 2019

Как я уже сказал в заголовке, я хочу сделать следующие 2 команды: / событие pvp на

и / событие всплывающее окно не работает.Помоги мне, пожалуйста.Кстати, я новичок в кодировании Java

это мой код:

public boolean onCommand(CommandSender sender, Command command, String label, String[] args, String arg2) {

    Player player = (Player) sender;
    if(label.equalsIgnoreCase("event")) {
        if(args.length == 0) {
            player.sendMessage("Syntax: /event (Event) on/off");
            return true;
        } else if(args.length == 1) {
            String mode = args[0];
            if(mode.equalsIgnoreCase("pvp")) {
                if(arg2.length() == 1) {
                    String Modus = arg2;
                    if(Modus.equalsIgnoreCase("on")) {


               new PlayerRDEvent(this);


                for(Player onps : Bukkit.getOnlinePlayers()){
                    onps.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD +  "PvP" + ChatColor.YELLOW + "Event" + ChatColor.DARK_GRAY + "]" + ChatColor.GRAY + "Das PvP Event hat begonnen!");
                     onps.playSound(onps.getLocation(), Sound.ARROW_HIT, 2, 0);
                }}}
                return true;
            } else if(mode.equalsIgnoreCase("off")) {
                 for(Player onps2 : Bukkit.getOnlinePlayers()){
                    onps2.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD +  "PvP" + ChatColor.YELLOW + "Event" + ChatColor.DARK_GRAY + "]" + ChatColor.GRAY + "Das PvP Event ist zu ende!");
                     onps2.playSound(onps2.getLocation(), Sound.ARROW_HIT, 2, 0);}
                HandlerList.unregisterAll();




                return true;
            } else {
                player.sendMessage("Use: /event (event) on/off");

            }
        }
    }
    return false;
}

1 Ответ

0 голосов
/ 05 февраля 2019

Вы использовали mode в качестве переменной для args[0] и не использовали его для проверки, включен ли он.Чтобы проверить строку включения / выключения, приравните mode к args[1] (второй элемент в массиве, потому что первым будет pvp) и проверьте перед условиями, если args[0] равно pvp

Кроме того, вы не можете добавить параметр String arg2, если переопределяете метод из JavaPlugin - поэтому просто используйте параметры по умолчанию для метода onCommand , см .: Метод Bukkit OnCommand

Код:

 Player player = (Player) sender;
    if (label.equalsIgnoreCase("event")) {
        if (args[0].equals("pvp")) { //check if args[0] is pvp, you can add an else statement to send an error message if it is not pvp, or manipulate it differently
            if (args.length != 2) { //if it does not contain both [pvp] and [off/on]
                player.sendMessage("Syntax: /event (Event) on/off");
                return true;
            } else { //if args length = 2
                String mode = args[1]; //[off/on]
                if (mode.equalsIgnoreCase("on")) { //if args[1] is "on"


                    for (Player onps : Bukkit.getOnlinePlayers()) {
                        onps.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD + "PvP" + ChatColor.YELLOW + "Event" + ChatColor.DARK_GRAY + "]" + ChatColor.GRAY + "Das PvP Event hat begonnen!");
                        onps.playSound(onps.getLocation(), Sound.ARROW_HIT, 2, 0);
                    }
                    return true;


                } else if (mode.equalsIgnoreCase("off")) { //if args[1] is "off"
                    for (Player onps2 : Bukkit.getOnlinePlayers()) {
                        onps2.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.GOLD + "PvP" + ChatColor.YELLOW + "Event" + ChatColor.DARK_GRAY + "]" + ChatColor.GRAY + "Das PvP Event ist zu ende!");
                        onps2.playSound(onps2.getLocation(), Sound.ARROW_HIT, 2, 0);
                    }
                    HandlerList.unregisterAll();
                    return true;


                } else {
                    player.sendMessage("Use: /event (event) on/off");
                }
            }
        }
    }

    return false;
}
}

Я действительно предлагаю вам в ближайшем будущем внедрить какой-нибудь прослушиватель команд вместо проверки каждой команды в методе onCommand, поскольку это делает ваш код чищеи легче читать

...