Minecraft Coding - Offline Spieler casten?
Heyy, ich versuche momentan ein Plugin zu coden bei dem man auch die Permissions von Offlinespielern entfernen kann, als Hilfe dazu benutze ich PermissionsEX, allerdings kriege ich es irgendwie nicht hin den OfflinePlayer zu casten. Übrigens sind Anmerkungen wie "Bevor man überhaupt das coden anfängt soll man erstmal lernen wie das geht" nicht wirklich hilfreich. :)
Ich hoffe ihr könnt helfen:
Player target = Bukkit.getPlayer(args[0]);
if(target.isOnline()) {
p.sendMessage(Prefixes.team + "§7" + target.getName() + " §7ist nun nichtmehr im Team.");
target.sendMessage(Prefixes.team + "§7Du bist nun nichtmehr im Server-Team.");
PermissionsEx.getUser(target).removePermission("d.admin");
PermissionsEx.getUser(target).removePermission("d.mod");
PermissionsEx.getUser(target).removePermission("d.support");
} else {
OfflinePlayer offlinetarget = Bukkit.getOfflinePlayer(args[0]);
PermissionsEx.getUser(offlinetarget.getPlayer()).removePermission("d.admin");
PermissionsEx.getUser(offlinetarget.getPlayer()).removePermission("d.mod");
PermissionsEx.getUser(offlinetarget.getPlayer()).removePermission("d.support");
p.sendMessage(Prefixes.team + "§f" + offlinetarget.getName() + "§7 wurden offline alle Teamrechte entzogen.");
}
2 Antworten
![](https://images.gutefrage.net/media/user/Franky12345678/1538404851165_nmmslarge__17_20_160_160_db2fc2b022bc8db92b487c2361323af8.png?v=1538404851000)
Du bekommst den OfflinePlayer auch dann, wenn der Player online ist (klingt erst blöd, ist aber so). Also quasi immer. Er ist genau für sowas da, wo man nur ein paar Informationen wie UUID braucht, aber der Spieler off ist, so dass du den Player nicht bekommst.
Du kannst auch einen Player zu einem OfflinePlayer casten, um ihn zu bekommen.
Also der Teil (ohne if) sollte ausreichend sein (das PermissionEx.getUser() solltest du nur einmal aufrufen und eine Zwischenvariable verwenden).
OfflinePlayer offlinetarget = Bukkit.getOfflinePlayer(args[0]);
PermissionsEx.getUser(offlinetarget.getPlayer()).removePermission("d.admin");
PermissionsEx.getUser(offlinetarget.getPlayer()).removePermission("d.mod");
PermissionsEx.getUser(offlinetarget.getPlayer()).removePermission("d.support");
p.sendMessage(Prefixes.team + "§f" + offlinetarget.getName() + "§7 wurden offline alle Teamrechte entzogen.");
Unabhängig davon solltest du vermeiden, einen Spieler per Namen abzurufen (egal ob OfflinePlayer oder Player), wenn der Spieler nicht online ist, da er den Namen wechseln kann, dann ein anderer den Namen annimmt und du auf einmal einen ganz anderen Spieler ansprichst.
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
Braucht PeX das Spielerobjekt oder nur den Namen oder UUID?