próbowałem napisać plugin na spectatowanei graczy, ale gdy go testuje w konsoli wyskakuje błąd podczas komendy, /unspectate
Kod oraz błąd:
package me.kuzja.spectatecommand;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.HashMap;
import java.util.Map;
public class SpectateCommand implements CommandExecutor {
Map<Player, Location> playerLocation = new HashMap<>();
Map<Player, GameMode> playerGamemode = new HashMap<>();
@Override
public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args) {
Player p = (Player) sender;
if (cmd.getName().equalsIgnoreCase("spectate")) {
if (p.hasPermission("spectatecommand.spectate")) {
if (args.length == 1) {
Player ps = Bukkit.getServer().getPlayer(args[0]);
if (ps.isOnline()) {
if (!ps.getName().equalsIgnoreCase(p.getName())) {
if (ps.getGameMode() != GameMode.SPECTATOR) {
playerLocation.put(p, p.getLocation());
playerGamemode.put(p, p.getGameMode());
p.teleport(ps.getLocation());
p.setGameMode(GameMode.SPECTATOR);
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&bSpectateCommand] &aSpectating player &7" + ps.getName() + "&a, to stop spectating type: &7/unspectate"));
} else {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&bSpectateCommand&8] &cYou can't spectate player, who's already spectating someone!"));
}
} else {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&bSpectateCommand&8] &cYou can't spectate yourself!"));
}
} else {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&bSpectateCommand&8] &cThis player is not online, or doesn't exists"));
}
} else {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&bSpectateCommand&8] &cYou have to provide player name!"));
}
} else {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&bSpectateCommand&8] &cYou don't have permission to execute this command!"));
}
} else if (cmd.getName().equalsIgnoreCase("unspectate")) {
if (p.getGameMode() == GameMode.SPECTATOR) {
p.teleport((Location) playerLocation);
p.setGameMode(playerGamemode.get(p));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&bSpectateCommand&8] &aStopped spectating!"));
playerLocation.clear();
playerGamemode.clear();
} else {
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[&bSpectateCommand&8] &cYou aren't spectating anyone!"));
}
}
return false;
}
}
[23:34:49 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'unspec' in plugin SpectateCommand v1.0
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[paper-api-1.20.1-R0.1-SNAPSHOT.jar:?]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:155) ~[paper-api-1.20.1-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.v1_20_R1.CraftServer.dispatchCommand(CraftServer.java:987) ~[paper-1.20.1.jar:git-Paper-196]
at org.bukkit.craftbukkit.v1_20_R1.command.BukkitCommandWrapper.run(BukkitCommandWrapper.java:64) ~[paper-1.20.1.jar:git-Paper-196]
at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:265) ~[paper-1.20.1.jar:?]
at net.minecraft.commands.Commands.performCommand(Commands.java:324) ~[?:?]
at net.minecraft.commands.Commands.performCommand(Commands.java:308) ~[?:?]
at net.minecraft.server.network.ServerGamePacketListenerImpl.performChatCommand(ServerGamePacketListenerImpl.java:2354) ~[?:?]
at net.minecraft.server.network.ServerGamePacketListenerImpl.lambda$handleChatCommand$21(ServerGamePacketListenerImpl.java:2314) ~[?:?]
at net.minecraft.util.thread.BlockableEventLoop.lambda$submitAsync$0(BlockableEventLoop.java:59) ~[?:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.20.1.jar:git-Paper-196]
at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?]
at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1338) ~[paper-1.20.1.jar:git-Paper-196]
at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:197) ~[paper-1.20.1.jar:git-Paper-196]
at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1315) ~[paper-1.20.1.jar:git-Paper-196]
at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1308) ~[paper-1.20.1.jar:git-Paper-196]
at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?]
at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1286) ~[paper-1.20.1.jar:git-Paper-196]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1174) ~[paper-1.20.1.jar:git-Paper-196]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:317) ~[paper-1.20.1.jar:git-Paper-196]
at java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: java.lang.ClassCastException: class java.util.HashMap cannot be cast to class org.bukkit.Location (java.util.HashMap is in module java.base of loader 'bootstrap'; org.bukkit.Location is in unnamed module of loader java.net.URLClassLoader @1b9e1916)
at me.kuzja.spectatecommand.SpectateCommand.onCommand(SpectateCommand.java:53) ~[SpectateCommand-1.0.jar:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[paper-api-1.20.1-R0.1-SNAPSHOT.jar:?]
... 23 more
Pytanie
iYowee 2
Hej,
próbowałem napisać plugin na spectatowanei graczy, ale gdy go testuje w konsoli wyskakuje błąd podczas komendy, /unspectate
Kod oraz błąd:
[23:34:49 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'unspec' in plugin SpectateCommand v1.0
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[paper-api-1.20.1-R0.1-SNAPSHOT.jar:?]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:155) ~[paper-api-1.20.1-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.v1_20_R1.CraftServer.dispatchCommand(CraftServer.java:987) ~[paper-1.20.1.jar:git-Paper-196]
at org.bukkit.craftbukkit.v1_20_R1.command.BukkitCommandWrapper.run(BukkitCommandWrapper.java:64) ~[paper-1.20.1.jar:git-Paper-196]
at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:265) ~[paper-1.20.1.jar:?]
at net.minecraft.commands.Commands.performCommand(Commands.java:324) ~[?:?]
at net.minecraft.commands.Commands.performCommand(Commands.java:308) ~[?:?]
at net.minecraft.server.network.ServerGamePacketListenerImpl.performChatCommand(ServerGamePacketListenerImpl.java:2354) ~[?:?]
at net.minecraft.server.network.ServerGamePacketListenerImpl.lambda$handleChatCommand$21(ServerGamePacketListenerImpl.java:2314) ~[?:?]
at net.minecraft.util.thread.BlockableEventLoop.lambda$submitAsync$0(BlockableEventLoop.java:59) ~[?:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.20.1.jar:git-Paper-196]
at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?]
at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1338) ~[paper-1.20.1.jar:git-Paper-196]
at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:197) ~[paper-1.20.1.jar:git-Paper-196]
at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1315) ~[paper-1.20.1.jar:git-Paper-196]
at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1308) ~[paper-1.20.1.jar:git-Paper-196]
at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?]
at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1286) ~[paper-1.20.1.jar:git-Paper-196]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1174) ~[paper-1.20.1.jar:git-Paper-196]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:317) ~[paper-1.20.1.jar:git-Paper-196]
at java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: java.lang.ClassCastException: class java.util.HashMap cannot be cast to class org.bukkit.Location (java.util.HashMap is in module java.base of loader 'bootstrap'; org.bukkit.Location is in unnamed module of loader java.net.URLClassLoader @1b9e1916)
at me.kuzja.spectatecommand.SpectateCommand.onCommand(SpectateCommand.java:53) ~[SpectateCommand-1.0.jar:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[paper-api-1.20.1-R0.1-SNAPSHOT.jar:?]
... 23 more
Odnośnik do komentarza
https://skript.pl/temat/58477-poprawa-pluginu-na-spectate/Udostępnij na innych stronach
5 odpowiedzi na to pytanie
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.