Was ist falsch an diesem Code (JAVA, Spigot, Minecraft)?
Hey Leute,Ich habe vor ein paar tagen schon einmal eine Frage zu meinem Problem gestellt. Die hat mir bei der Verständnis, aber noch nicht bei der lösung des Problems geholfen. Ich bin Anfänger im coden mit Spigot, und habe auch nach langer Recherche keine Lösung gefunden. Hier der Code:
public class ReadyCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
String world = "world";
Player player = Bukkit.getOnlinePlayers();
Bukkit.getWorld(world).setPVP(false);
player.setGameMode(GameMode.ADVENTURE);
Bukkit.broadcastMessage(ChatColor.WHITE + "[" + ChatColor.GOLD + "Geclxpt" + ChatColor.WHITE + "]" + ChatColor.GRAY + " Pvp & Abbauen ist nun deaktiviert!");
return false;
}
}
Es geht darum das ich mit dem Command jeden in den Adventure Mode setzten möchte.
Player player = Bukkit.getOnlinePlayers();
Wird jedoch rot unterstrichen. Wenn ich einen Cast einsetzte kommt jedoch eine Fehlermeldung (Kann ich leider nicht zeigen da die frage dann zu lange ist) .
Ich hoffe ihr könnt mir helfen.
Danke schon einmal im Voraus :)
3 Antworten
Hey,
Bukkit.getOnlinePlayers();
gibt dir eine Collection<Player> zurück, keinen Player.
Wenn du etwas für jeden Player der Collection ausführen möchtest, musst du über diese iterieren.
Mfg Jannick (L1nd)
Danke, ich denke ich verstehe es nun. Du hast mir echt sehr weiter geholfen :)
Bukkit.getOnlinePlayers() gibt eine Liste zurück, demnach musst du auch eine Liste erstellen, z.B. so:
ArrayList<Player> onlinePlayers = Bukkit.getOnlinePlayers();
Dann musst noch durch diese durchiterieren.
for (Player p : onlinePlayers()) {
p.setGameMode(GameMode.ADVENTURE);
}
Alternativ kannst du auch direkt Bukkit.getOnlinePlayers() benutzen:
for (Player p : Bukkit.getOnlinePlayers()) {
p.setGameMode(GameMode.ADVENTURE);
}
Hast du irgendwo oben namespace org.bukkit hingeschrieben ? Ansonsten heißt das
org.bukkit.Bukkit.getOnlinePlayers()
Alternativ:
org.bukkit.Bukkit.getServer().getOnlinePlayers()
Nein habe ich nicht. Aber es wird trotzdem noch rot unterstrichen.
Danke, ich glaube ich verstehe es langsam. Du hast mir sehr geholfen :)