Hallo Leute,
ich bin gerade dabei ein Nick-Plugin zu programmieren, mein Problem ist, dass ich nicht den Nametag (Das ist der Name über dem Kopf) ändern kann.
Ich habe hier man den Code:
Leider kommt ein Fehler, den ich mir nicht erklären kann, da er die UUID nicht setzen kann:
Die Zeile 20 in der Class NickPlayer ist folgende:
Bei der NickCommand Class in Zeile 27 wird folgendes auf gerufen:
Ich hoffe das Mein Problem nachvollziehbar ist
Laatzo
//EDIT
Spigot Version 1.8.8 - R3 // Released: 02.12.2015 (Vor 1 Monat, 17 Tage)
ich bin gerade dabei ein Nick-Plugin zu programmieren, mein Problem ist, dass ich nicht den Nametag (Das ist der Name über dem Kopf) ändern kann.
Ich habe hier man den Code:
PHP:
[...]
private Player p;
public NickPlayer(Player p) {
this.p = p;
}
public void setPlayerTagName(String name) {
EntityHuman eh = ((CraftPlayer)p).getHandle();
PacketPlayOutEntityDestroy p29 = new PacketPlayOutEntityDestroy(p.getEntityId());
PacketPlayOutNamedEntitySpawn p20 = new PacketPlayOutNamedEntitySpawn(eh);
try {
Field profileField = p20.getClass().getDeclaredField("b");
profileField.setAccessible(true);
profileField.set(p20, new GameProfile(p.getUniqueId(), name));
} catch (Exception e) {
e.printStackTrace();
}
for(Player o : Bukkit.getOnlinePlayers()) {
if(!o.getName().equals(p.getName())) {
((CraftPlayer)o).getHandle().playerConnection.sendPacket(p29);
((CraftPlayer)o).getHandle().playerConnection.sendPacket(p20);
}
}
}
[...]
Leider kommt ein Fehler, den ich mir nicht erklären kann, da er die UUID nicht setzen kann:
PHP:
[14:41:50] [Server thread/WARN]: java.lang.IllegalArgumentException: Can not set java.util.UUID field net.minecraft.server.v1_8_R3.PacketPlayOutNamedEntitySpawn.b to java.lang.String
[14:41:50] [Server thread/WARN]: at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
[14:41:50] [Server thread/WARN]: at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
[14:41:50] [Server thread/WARN]: at sun.reflect.UnsafeObjectFieldAccessorImpl.set(Unknown Source)
[14:41:50] [Server thread/WARN]: at java.lang.reflect.Field.set(Unknown Source)
[14:41:50] [Server thread/WARN]: at de.laatzo.api.NickPlayer.setPlayerTagName(NickPlayer.java:60)
[14:41:50] [Server thread/WARN]: at de.laatzo.commands.NickCommand.onCommand(NickCommand.java:27)
[14:41:50] [Server thread/WARN]: at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
[14:41:50] [Server thread/WARN]: at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141)
[14:41:50] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641)
[14:41:50] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162)
[14:41:50] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997)
[14:41:50] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45)
[14:41:50] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1)
[14:41:50] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13)
[14:41:50] [Server thread/WARN]: at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
[14:41:50] [Server thread/WARN]: at java.util.concurrent.FutureTask.run(Unknown Source)
[14:41:50] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44)
[14:41:50] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715)
[14:41:50] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374)
[14:41:50] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654)
[14:41:50] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557)
[14:41:50] [Server thread/WARN]: at java.lang.Thread.run(Unknown Source)
Die Zeile 20 in der Class NickPlayer ist folgende:
PHP:
[...]
profileField.set(p20, new GameProfile(p.getUniqueId(), name));
[...]
Bei der NickCommand Class in Zeile 27 wird folgendes auf gerufen:
PHP:
Player p = (Player)sender;
NickPlayer np = new NickPlayer(p);
[...]
String nickname = np.randomNick();
np.setDisplayName(nickname);
np.setPlayerListName(nickname);
np.setPlayerTagName(nickname); // Zeile 27
[...]
Ich hoffe das Mein Problem nachvollziehbar ist
Laatzo
//EDIT
Spigot Version 1.8.8 - R3 // Released: 02.12.2015 (Vor 1 Monat, 17 Tage)