Craftplayer 1.16.1 Fehler?
int ping = ((CraftPlayer)player).getHandle().ping;
Wie muss ich diese Line umschreiben, weil in der 1.16 gibt es ja kein Craftplayer mehr
3 Antworten
Vom Fragesteller als hilfreich ausgezeichnet
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer, Technik, programmieren
Das geht in 1.16 so:
try {
Object entityPlayer = player.getClass().getMethod("getHandle").invoke(player);
int ping = (int) entityPlayer.getClass().getField("ping").get(entityPlayer);
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException | NoSuchFieldException e) {
e.printStackTrace();
}
Quelle: https://www.spigotmc.org/threads/getting-a-players-ping.276272/
Woher ich das weiß:eigene Erfahrung – Minecraft-Experte. Aktiver Spieler seit 2011.
Ist das von einem Bukkit plugin?
Würde mal so vorschlagen, weiss aber nicht genau, weil meine Kentnisse recht verrostet sind...
public static int getPing(Player player) {
EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
return entityPlayer.ping;
}
Wo ist da jetzt der Unterschied zu seinem Code???
Du hast das ganze in eine Funktion gepackt, aber inwiefern soll ihm das jz weiterhelfen, es ist genau das selbe...
Entsprechend des Source Codes vermute ich mal, dass es sich um die Klasse CraftOfflinePlayer handelt.
Falls nicht kannst du auch einfach player.getClass().getName() in die Konsole ausgeben und schauen, was es ist.