Помогите Как сделать аргумент в под-команде?

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

Lexonix

Новичок
Баллы
6
Помогите, я хочу сделать в своей команде /lex под-под команды (ну 2-ой аргумент).
Главное, чтобы другие аргументы не нарушались.
Я пытался делать /lex errors 2, но не получилось, и сделал /lex errors2


К примеру я хочу сделать так, чтобы работали следующие команды:
/lex (информация)
/lex new (нововведения)
/lex errors 2 (2 страница всех ошибок)

Вот код команды /lex:

Код:
package ru.lexonix.lexonixcore.Commands;

import ru.lexonix.lexonixcore.LexonixCore;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;

public class CommandsLex implements CommandExecutor {
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (!sender.hasPermission("LexonixCore.Command.Lex.Info")) {
            sender.sendMessage(LexonixCore.getInstance().getConfig().getString("dont_perms"));
            return true;
        } else if (args.length < 1) {
            sender.sendMessage(LexonixCore.getInstance().getConfig().getString("lex_info"));
            return true;
        } else if (args[0].equalsIgnoreCase("help")) {
            if (!sender.hasPermission("LexonixCore.Command.Lex.Help")) {
                sender.sendMessage(LexonixCore.getInstance().getConfig().getString("dont_perms"));
                return true;
            } else {
                sender.sendMessage(LexonixCore.getInstance().getConfig().getString("lex_help"));
                return true;
            }
        } else if (args[0].equalsIgnoreCase("new")) {
            if (!sender.hasPermission("LexonixCore.Command.Lex.New")) {
                sender.sendMessage(LexonixCore.getInstance().getConfig().getString("dont_perms"));
                return true;
            } else {
                sender.sendMessage(LexonixCore.getInstance().getConfig().getString("lex_new"));
                return true;
            }
        } else if (args[0].equalsIgnoreCase("errors")) {
            if (!sender.hasPermission("LexonixCore.Command.Lex.Errors")) {
                sender.sendMessage(LexonixCore.getInstance().getConfig().getString("dont_perms"));
                return true;
            } else {
                sender.sendMessage(LexonixCore.getInstance().getConfig().getString("lex_errors"));
                return true;
            }
        } else if (args[0].equalsIgnoreCase("errors2")) {
            if (!sender.hasPermission("LexonixCore.Command.Lex.Errors")) {
                sender.sendMessage(LexonixCore.getInstance().getConfig().getString("dont_perms"));
                return true;
            } else {
                sender.sendMessage(LexonixCore.getInstance().getConfig().getString("lex_errors2"));
                return true;
            }
        } else if (args[0].equalsIgnoreCase("aliases")) {
            if (!sender.hasPermission("LexonixCore.Command.Lex.Aliases")) {
                sender.sendMessage(LexonixCore.getInstance().getConfig().getString("dont_perms"));
                return true;
            } else {
                sender.sendMessage(LexonixCore.getInstance().getConfig().getString("lex_aliases"));
                return true;
            }
        } else if (args[0].equalsIgnoreCase("aliases2")) {
            if (!sender.hasPermission("LexonixCore.Command.Lex.Aliases")) {
                sender.sendMessage(LexonixCore.getInstance().getConfig().getString("dont_perms"));
                return true;
            } else {
                sender.sendMessage(LexonixCore.getInstance().getConfig().getString("lex_aliases2"));
                return true;
            }
        } else {
            return false;
        }
    }
}

Гл. Класс:

Код:
package ru.lexonix.lexonixcore;

import ru.lexonix.lexonixcore.Commands.*;
import ru.lexonix.lexonixcore.Events.Chat;
import ru.lexonix.lexonixcore.Events.Events;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;

public class LexonixCore extends JavaPlugin {
    private static LexonixCore instance;
    public void onEnable() {
        Bukkit.getPluginCommand("broadcast").setExecutor(new CommandBroadCast());
        Bukkit.getPluginCommand("clearchat").setExecutor(new CommandClearChat());
        Bukkit.getPluginCommand("donatechat").setExecutor(new CommandDonateChat());
        Bukkit.getPluginCommand("gamemode").setExecutor(new CommandGamemode());
        Bukkit.getPluginCommand("hack").setExecutor(new CommandHack());
        Bukkit.getPluginCommand("kill").setExecutor(new CommandKill());
        Bukkit.getPluginCommand("lexonixcore").setExecutor(new CommandsLex());
        Bukkit.getPluginCommand("lreload").setExecutor(new CommandLexReload());
        Bukkit.getPluginCommand("message").setExecutor(new CommandMessage());
        Bukkit.getPluginCommand("staffchat").setExecutor(new CommandStaffChat());
        Bukkit.getPluginCommand("serversay").setExecutor(new CommandServerSay());
        Bukkit.getPluginCommand("suicide").setExecutor(new CommandSuicide());
        Bukkit.getPluginCommand("teleport").setExecutor(new CommandTeleport());
        Bukkit.getPluginManager().registerEvents(new Events(), this);
        Bukkit.getPluginManager().registerEvents(new Chat(), this);
        instance = this;
        saveDefaultConfig();
    }
    public static LexonixCore getInstance() {
        return instance;
    }
}
 
if (args.lenght > 1) {
String subCommand2 = args[1];
//Получаем второй аргумент команды если длина массива больше одного аргумента.
}
 
В
Код:
if (args[0].equalsIgnoreCase("errors")) {
            if (!sender.hasPermission("LexonixCore.Command.Lex.Errors")) {
                sender.sendMessage(LexonixCore.getInstance().getConfig().getString("dont_perms"));
                return true;
            } else {
                sender.sendMessage(LexonixCore.getInstance().getConfig().getString("lex_errors"));
                return true;
            }
?
Куда же еще?
 
А если я буду делать страницу 3, 4... 2454, то то-же самое?
Я хочу страницы как в /help
/help
/help 2
/help 3...
/help 3454


И да, твое не работает. Вот лог:
Unexpected exception while parsing console command "lex errors"
org.bukkit.command.CommandException: Unhandled exception executing command 'lex' in plugin LexonixCore v1.2.2 s7
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:648) ~[spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:634) [spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:444) [spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:407) [spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
at ru.lexonix.lexonixcore.Commands.CommandsLex.onCommand(CommandsLex.java:41) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
... 8 more
 
А если я буду делать страницу 3, 4... 2454, то то-же самое?
Я хочу страницы как в /help
/help
/help 2
/help 3...
/help 3454


И да, твое не работает. Вот лог:
Unexpected exception while parsing console command "lex errors"
org.bukkit.command.CommandException: Unhandled exception executing command 'lex' in plugin LexonixCore v1.2.2 s7
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:648) ~[spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:634) [spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:444) [spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:407) [spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
at ru.lexonix.lexonixcore.Commands.CommandsLex.onCommand(CommandsLex.java:41) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
... 8 more
Ты серьезно собираешься каждую страницу ручками делать?))
 
А если я буду делать страницу 3, 4... 2454, то то-же самое?
Я хочу страницы как в /help
/help
/help 2
/help 3...
/help 3454


И да, твое не работает. Вот лог:
Unexpected exception while parsing console command "lex errors"
org.bukkit.command.CommandException: Unhandled exception executing command 'lex' in plugin LexonixCore v1.2.2 s7
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:648) ~[spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:634) [spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:444) [spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:407) [spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
at ru.lexonix.lexonixcore.Commands.CommandsLex.onCommand(CommandsLex.java:41) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.12.2.jar:git-Spigot-eb3d921-2b93d83]
... 8 more
Без прямых рук работать и не будет.

Делай команду, создавай int page = 1;
далее чекай по выше логике, есть ли второй аргумент. Если есть, парси из строки int число а потом присваивай ей page. А далее используй page что бы получить страницу. Если второй аргумент не указан (потому что него нет), то будет использована страница 1 "по умолчанию". Все просто донельзя.
 
Без прямых рук работать и не будет.

Делай команду, создавай int page = 1;
далее чекай по выше логике, есть ли второй аргумент. Если есть, парси из строки int число а потом присваивай ей page. А далее используй page что бы получить страницу. Если второй аргумент не указан (потому что него нет), то будет использована страница 1 "по умолчанию". Все просто донельзя.
Я тебя не понял, как это сделать. Можно кодом?
Я просто новичок.
 
Я тебя не понял, как это сделать. Можно кодом?
Я просто новичок.

if (args.lenght == 0) {
return true;
}

if (args[0].equalsIgnoreCase("errors")) {

int page = 1;

if (args.lenght > 2) {
return true;
}

if (args.lenght > 1) {
page = Integer.parseInt(args[1]);
}

//Открывай игроку страницу page

}
 
Назад
Верх