Помогите Команду можно выполнить только от консоли

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

Kloper

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
f3azzy
Как сделать так чтобы команду можно было выполнить ТОЛЬКО от консоли..

Вот мой вариант команды:

Код:
        if(cmd.getName().equalsIgnoreCase("makeadmin")) {
            if(sender == Bukkit.getConsoleSender()) {
                if(args.length == 0) {
                    sender.sendMessage("[gavnoponos] Укажи ник игрока!");
                    return true;
                } else {
                    if(args.length > 4 || args.length < 4) {
                        sender.sendMessage("[gavnoponos] Укажи аргументы!");
                        return true;
                    } else {
                        Integer lvl = parse(args[1]);
                        Integer pass = parse(args[2]);
                        if(lvl == null || pass == null) {
                            sender.sendMessage("[gavnoponos] Укажи аргументы!");
                            return true;
                        } else {
                            Player target = Bukkit.getPlayerExact(args[0]);
                            if(target == null) {
                                sender.sendMessage("[gavnoponos] Укажи ник игрока!");
                                return true;
                            } else {
                                String admGiveCheck = plugin.getConfig().getString("Admins." + target.getName());
                                if(admGiveCheck == null) {
                                    plugin.getConfig().set("Admins." + target.getName() + ".Admin Password", pass);
                                    plugin.getConfig().set("Admins." + target.getName() + ".Admin Level", lvl);
                                    plugin.getConfig().set("Admins." + target.getName() + ".Admin Auth", false);
                                    plugin.getConfig().set("Admins." + target.getName() + ".First IP", target.getAddress());
                                    plugin.saveConfig();
                                    target.sendMessage("§6[Информация] §fВас повысили/понизили до " + lvl + " уровня администратора!");
                                    sender.sendMessage("[gavnoponos] Админка выдана.");
                                } else {
                                    plugin.getConfig().set("Admins." + target.getName() + ".Admin Level", lvl);
                                    plugin.getConfig().set("Admins." + target.getName() + ".Admin Password", pass);
                                    plugin.getConfig().set("Admins." + target.getName() + ".Admin Auth", false);
                                    target.sendMessage("§6[Информация] §fВас повысили/понизили до " + lvl + " уровня администратора!");
                                    target.sendMessage("§4[Ошибка] §cАдмин-пароль поменялся, необходимо вновь авторизоваться..");
                                    sender.sendMessage("[gavnoponos] Админка выдана.");
                                }
                            }
                        }
                    }
                }
            } else {
                sender.sendMessage("§4[Ошибка] §cУ вас недостаточно прав!");
                return true;
            }
        }

Но в таком случае выходит ошибка:

Код:
[00:42:34] [Server thread/WARN]: Unexpected exception while parsing console command "makeadmin"
org.bukkit.command.CommandException: Unhandled exception executing command 'makeadmin' in plugin ShrekAC v0.1
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit.jar:git-Bukkit-e60fc34]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:140) ~[craftbukkit.jar:git-Bukkit-e60fc34]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:628) ~[craftbukkit.jar:git-Bukkit-e60fc34]
    at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:614) [craftbukkit.jar:git-Bukkit-e60fc34]
    at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:408) [craftbukkit.jar:git-Bukkit-e60fc34]
    at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:372) [craftbukkit.jar:git-Bukkit-e60fc34]
    at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:651) [craftbukkit.jar:git-Bukkit-e60fc34]
    at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:555) [craftbukkit.jar:git-Bukkit-e60fc34]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_261]
Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_12_R1.command.ColouredConsoleSender cannot be cast to org.bukkit.entity.Player
    at t1mqxikzz.main.Administration.onCommand(Administration.java:38) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[craftbukkit.jar:git-Bukkit-e60fc34]
    ... 8 more

Как я понял проблема в 38 строке, вот что написано там

Код:
if(lvl == null || pass == null) {
return true;
} else {
конкретно в 38 строке написано
Код:
} else {
 
Не кастуй сендера к игроку и все. Будет работать и от консоли.
 
Не кастуй сендера к игроку и все. Будет работать и от консоли.
так я и не кастую, никакого упоминания игрока у меня нету, кроме этого:
Код:
Player target = Bukkit.getPlayerExact(args[0]);
 
так я и не кастую, никакого упоминания игрока у меня нету, кроме этого:
Код:
Player target = Bukkit.getPlayerExact(args[0]);
Сервак так не считает.

Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_12_R1.command.ColouredConsoleSender cannot be cast to org.bukkit.entity.Player
at t1mqxikzz.main.Administration.onCommand(Administration.java:38) ~[?:?]
 
Ответ на сабж
if (!(sender instanceof Player)) {
return;
}
 
Сервак так не считает.

Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_12_R1.command.ColouredConsoleSender cannot be cast to org.bukkit.entity.Player
at t1mqxikzz.main.Administration.onCommand(Administration.java:38) ~[?:?]
Так в том то и прикол что мне так и так надо брать игрока из аргумента :(
 
Назад
Верх