Помогите Команда в консоле выдаёт ошибку

  • Автор темы Автор темы EgorXeXe
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

EgorXeXe

Активный участник
Пользователь
Баллы
66
Проблема заключается в том что если с сервера игрок пишет комманду то тогда всё работает как положено, но если в консоле прописать то выдаёт ошибку.
PHP:
>rvreload
[23:06:13] [Server thread/WARN]: Unexpected exception while parsing console command "rvreload"
org.bukkit.command.CommandException: Unhandled exception executing command 'rvreload' in plugin Review v1.0-SNAPSHOT
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.v1_18_R1.CraftServer.dispatchCommand(CraftServer.java:821) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3395-Spigot-f4ff00f-cc86ab1]
        at org.bukkit.craftbukkit.v1_18_R1.CraftServer.dispatchServerCommand(CraftServer.java:806) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3395-Spigot-f4ff00f-cc86ab1]
        at net.minecraft.server.dedicated.DedicatedServer.bf(DedicatedServer.java:453) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3395-Spigot-f4ff00f-cc86ab1]
        at net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:429) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3395-Spigot-f4ff00f-cc86ab1]
        at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1206) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3395-Spigot-f4ff00f-cc86ab1]
        at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1034) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3395-Spigot-f4ff00f-cc86ab1]
        at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:304) ~[spigot-1.18.1-R0.1-SNAPSHOT.jar:3395-Spigot-f4ff00f-cc86ab1]
        at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.ClassCastException: class org.bukkit.craftbukkit.v1_18_R1.command.ColouredConsoleSender cannot be cast to class org.bukkit.entity.Player (org.bukkit.craftbukkit.v1_18_R1.command.ColouredConsoleSender and org.bukkit.entity.Player are in unnamed module of loader java.net.URLClassLoader @3fa77460)
        at review.review.CommandReload.onCommand(CommandReload.java:17) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[spigot-api-1.18.1-R0.1-SNAPSHOT.jar:?]



PHP:
package review.review;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class CommandReload implements CommandExecutor {
    Review main;

    public CommandReload(Review plugin){
        main = plugin;
    }
    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {

                Player executor = (Player) sender;
                    if (executor.hasPermission("review.reload") == false) {
                        executor.sendMessage(String.valueOf(main.getConfig().getString("noperms")));
                        return true;
                    }
                    main.reloadConfig();
                    sender.sendMessage(String.valueOf(main.getConfig().getString("reload")));
          return true;
    }
}
 
Player executor = (Player) sender;
Эта строка - проблема. Отправитель должен быть игроком, а консоль - не игрок.
Запрети консоли выполнять команду

Код:
if (!(sender instanceof Player)) {
        Bukkit.getLogger().info("Только для игроков");
        return true;
      }
 
Эта строка - проблема. Отправитель должен быть игроком, а консоль - не игрок.
Запрети консоли выполнять команду

Код:
if (!(sender instanceof Player)) {
        Bukkit.getLogger().info("Только для игроков");
        return true;
      }

Пробывал так сделать но тогда либо пишет при выполнении комманды null
ещё может ничего не измениться
и ещё может не работать пермишен и комманда выполняется без него либо пишет что выполнилась но конфиг не перезагружает.
p.s.
Может я туплю и не в том месте писал похожий код, но не мог бы кто помочь и добавить в мой код строчки чтобы всё работало. Буду очень благодарен))
 
Эта строка - проблема. Отправитель должен быть игроком, а консоль - не игрок.
Запрети консоли выполнять команду

Код:
if (!(sender instanceof Player)) {
        Bukkit.getLogger().info("Только для игроков");
        return true;
      }
Спасибо за ответ. Решил проблему. Написал заного. Понял что рил тупанул и писал без }else{

PHP:
package review.review;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;

public class CommandReload implements CommandExecutor {
    Review main;

    public CommandReload(Review plugin) {
        main = plugin;
    }

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

        if (sender instanceof ConsoleCommandSender == true) {
            main.reloadConfig();
            sender.sendMessage(String.valueOf(main.getConfig().getString("reload")));
            //Bukkit.getLogger().info("Только для игроков");
        }else {
            Player executor = (Player) sender;
            if (executor.hasPermission("review.reload") == false) {
                executor.sendMessage(String.valueOf(main.getConfig().getString("noperms")));
                return true;
            }
            main.reloadConfig();
            sender.sendMessage(String.valueOf(main.getConfig().getString("reload")));
            return true;
        }
        return true;
}
}
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Назад
Верх