[Plugin programing] Nametag ohne fremends Plugin (z.B.: iTag; TagAPI, ProtcolHack) ändern

Status
Für weitere Antworten geschlossen.

Laatzo

Mitglied
3 Nov. 2014
22
2
570
der Zukunft
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:

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)
 
Status
Für weitere Antworten geschlossen.

Soziale Medien

  • X
  • TikTok

Über uns

  • GommeHD.net ist einer der größten Minecraft-Server der Welt. Dir gefällt unser Server? Dann unterstütze uns durch einen Kauf im Shop!
  • Shop