die meisten NickPlugins verwendet so etwas:
p.setDisplayName(name_);
p.setPlayerListName(name_);
p.setCustomName(name_);
in der Klasse "CraftPlayer" (Bukkit) passiert in der Methode "setPlayerListName" sowas in etwa:
playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.UPDATE_DISPLAY_NAME, new EntityPlayer[] { getHandle() }));
Also wird dem Client kein gefaketer Player geschickt, sondern der echte (also unnicked) und dann wird dem Clinet gesagt, dass er alle Sichtbaren Namen ändern soll (sieht genickt aus)
der Client kann das ganze verhindern und ändert den Namen nicht
(ich weiß nicht, ob das bei großen Netzwerken anders gemacht wird, aber bei den meisten normalen Nick-Plugins wird es eben so gemacht