- Баллы
- 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 + "Добро пожаловать на сервер!");
}
}