1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Ошибка в плагине

Тема в разделе "Разработка плагинов для новичков", создана пользователем Conorfish, 10 авг 2020.

Статус темы:
Закрыта.
  1. Автор темы
    Conorfish

    Conorfish Активный участник Пользователь

    Баллы:
    76
    Ошибка в плагине, Eclipse не дает ошибок. Суть плагина наблюдение над игроками("/spec <Player>"). По консоли я понял что ошибка в строчке 42. Срочка 42 это каст первого аргумента в игрока. Как сделать это?
    Ошибка в консоли:
    Код:
    org.bukkit.command.CommandException: Unhandled exception executing command 'spec' in plugin SioRP-Spectate v1.0
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot.jar:git-Spigot-4df3c0c-03f1e37]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot.jar:git-Spigot-4df3c0c-03f1e37]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:644) ~[spigot.jar:git-Spigot-4df3c0c-03f1e37]
            at net.minecraft.server.v1_12_R1.PlayerConnection.handleCommand(PlayerConnection.java:1385) [spigot.jar:git-Spigot-4df3c0c-03f1e37]
            at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1220) [spigot.jar:git-Spigot-4df3c0c-03f1e37]
            at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot.jar:git-Spigot-4df3c0c-03f1e37]
            at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot.jar:git-Spigot-4df3c0c-03f1e37]
            at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-4df3c0c-03f1e37]
            at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_51]
            at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_51]
            at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [spigot.jar:git-Spigot-4df3c0c-03f1e37]
            at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:747) [spigot.jar:git-Spigot-4df3c0c-03f1e37]
            at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:405) [spigot.jar:git-Spigot-4df3c0c-03f1e37]
            at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot.jar:git-Spigot-4df3c0c-03f1e37]
            at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot.jar:git-Spigot-4df3c0c-03f1e37]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_51]
    Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_12_R1.CraftWorld cannot be cast to org.bukkit.Server
            at me.qbert.SioRP.SioRP.onCommand(SioRP.java:42) ~[?:?]
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot.jar:git-Spigot-4df3c0c-03f1e37]
            ... 15 more
    Код:
    Код:
    package me.qbert.SioRP;
    
    import org.bukkit.Bukkit;
    import org.bukkit.GameMode;
    import org.bukkit.Location;
    import org.bukkit.Server;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerQuitEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import net.md_5.bungee.api.ChatColor;
    
    public class SioRP extends JavaPlugin implements Listener{
        
        FileConfiguration config = getConfig();
        
        public void onEnable() {
            Bukkit.getServer().getPluginManager().registerEvents(this, this);
        }
        
    
        public void onDisable() {
            
        }
        public boolean onCommand (CommandSender sender, Command cmd, String label, String[] args) {
            if (cmd.getName().equalsIgnoreCase("spec")) {
                if (!(sender instanceof Player)) {
                    sender.sendMessage(ChatColor.WHITE + "Команду могут выполнить только игроки!");
                    return true;
                }
                if (args.length == 0) {
                    sender.sendMessage(ChatColor.WHITE + "/spec " + ChatColor.GREEN + "[Игрок]");
                    return true;
                }
                Player target = ((Server) ((Entity) sender).getWorld()).getPlayer(args[0]);
                Player p = (Player) sender;
                if (!p.hasPermission("SioRP-Spectate.spec")) {
                    p.sendMessage(ChatColor.WHITE + "У вас нет прав для вылонения этой команды!");
                    return true;
                }
                config.set("spec." + p.getName() + ".spec", "true");
                config.set("spec." + p.getName() + ".gamemode", p.getGameMode());
                config.set("spec." + p.getName() + "world", p.getWorld().getName());
                config.set("spec." + p.getName() + ".x", p.getLocation().getX());
                config.set("spec." + p.getName() + ".y", p.getLocation().getY());
                config.set("spec." + p.getName() + ".z", p.getLocation().getZ());
                saveConfig();
                p.setSpectatorTarget(Bukkit.getPlayerExact(target.getName()));
            }
            if (cmd.getName().equalsIgnoreCase("specoff")) {
                if (!(sender instanceof Player)) {
                    sender.sendMessage(ChatColor.WHITE + "Команду могут выполнить только игроки!");
                    return true;
                }
                Player p = (Player) sender;
                if (!config.getString("spec." + p.getName() + ".spec").equals("true")) {
                    p.sendMessage(ChatColor.WHITE + "Вы не за кем не наблюдаете!");
                    return true;
                }
                Location nospec = new Location(Bukkit.getWorld(config.getString("spec." + p.getName() + "world")),
                        config.getDouble("spec." + p.getName() + ".x"),
                        config.getDouble("spec." + p.getName() + ".y"),
                        config.getDouble("spec." + p.getName() + ".z"));
                p.teleport(nospec);
                if (config.getString("spec." + p.getName() + ".gamemode").equals("CREATIVE")) {
                    p.setGameMode(GameMode.CREATIVE);
                }
                if (config.getString("spec." + p.getName() + ".gamemode").equals("ADVENTURE")) {
                    p.setGameMode(GameMode.ADVENTURE);
                }
                if (config.getString("spec." + p.getName() + ".gamemode").equals("SURVIVAL")) {
                    p.setGameMode(GameMode.SURVIVAL);
                }
                config.set("spec." + p.getName() + ".spec", "false");
                config.set("spec." + p.getName() + ".gamemode", null);
                config.set("spec." + p.getName() + "world", null);
                config.set("spec." + p.getName() + ".x", null);
                config.set("spec." + p.getName() + ".y", null);
                config.set("spec." + p.getName() + ".z", null);
                saveConfig();
            }
            return false;
            
        }
        
        @EventHandler
        public void onPlayerQuit (PlayerQuitEvent e) {
            Player p = e.getPlayer();
            if (!config.getString("spec." + p.getName() + ".spec").equals("false")) {
                Location nospec = new Location(Bukkit.getWorld(config.getString("spec." + p.getName() + "world")),
                        config.getDouble("spec." + p.getName() + ".x"),
                        config.getDouble("spec." + p.getName() + ".y"),
                        config.getDouble("spec." + p.getName() + ".z"));
                p.teleport(nospec);
            }
            if (config.getString("spec." + p.getName() + ".gamemode").equals("CREATIVE")) {
                p.setGameMode(GameMode.CREATIVE);
            }
            if (config.getString("spec." + p.getName() + ".gamemode").equals("ADVENTURE")) {
                p.setGameMode(GameMode.ADVENTURE);
            }
            if (config.getString("spec." + p.getName() + ".gamemode").equals("SURVIVAL")) {
                p.setGameMode(GameMode.SURVIVAL);
            }
            config.set("spec." + p.getName() + ".gamemode", null);
            config.set("spec." + p.getName() + "world", null);
            config.set("spec." + p.getName() + ".x", null);
            config.set("spec." + p.getName() + ".y", null);
            config.set("spec." + p.getName() + ".z", null);
            config.set("spec." + p.getName() + ".spec", "false");
            saveConfig();
        }
        
        @EventHandler
        public void onPlayerJoin (PlayerJoinEvent e) {
            Player p = e.getPlayer();
            config.set("spec." + p.getName() + ".spec", "false");
            saveConfig();
            p.sendMessage(ChatColor.GREEN + "Добро пожаловать на сервер!");
        }
    }
    
     
  2. Sneyzi

    Sneyzi Активный участник Пользователь

    Баллы:
    76
    Код:
    Player target = Bukkit.getPlayerExact(args[0]);
     
  3. deadanykey

    deadanykey Активный участник Пользователь

    Баллы:
    96
    Это за гранью моего понимания. Как можно кастовать world в Server? Где логика?
     
  4. Sneyzi

    Sneyzi Активный участник Пользователь

    Баллы:
    76
    ты просто не видел сервера на мультимирах :lol:
     
  5. Автор темы
    Conorfish

    Conorfish Активный участник Пользователь

    Баллы:
    76
    Еще ошибка в строчке p.setSpectatorTarget(Bukkit.getPlayerExact(target.getName()));
    Что нужно между скобками в p.setSpectatorTarget();??
     
  6. Автор темы
    Conorfish

    Conorfish Активный участник Пользователь

    Баллы:
    76
    Ну если без ((World) ((Server) то дает ошибку, нажимаю на нее, добавляеться вот это.
     
Статус темы:
Закрыта.

Поделиться этой страницей