Bei einem Minecraft Plugin einen Spieler genau definieren?

2 Antworten

Wenn ein Spieler angegeben wird, hast du zwei Argumente. Aktuell prüfst du nur auf eines. Also machst du eine neue (else) if, ob ein zweites Argument mitgegeben wurde. Den Rest solltest du dann selber hinbekommen.

Kurzes Feedback noch: Nutze zur Bestimmung des Spielmodus (0, 1, 2, 3) nicht elseifs sondern einen Switch. Das ist übersichtlicher. Übrigens: Gamemode 2 ist Adventure, nicht Survival.

Woher ich das weiß:Berufserfahrung – Informatiker Applikationsentwicklung
LikeLukas725 
Fragesteller
 20.12.2021, 19:53

vielen dank und das mit den gamemode 2 ist nicht Survival ist mir klar ich wollte nur schnell das haben und die frage dan damit stellen ich verstehe jedoch noch nicht ganz genau was ich jetzt machen soll wenn es dir nichts ausmachst könntest du mir die line code schreiben ich bin ziemlich neu im coding bereich es tut mir leid wenn ich deine Hilfe zu sehr in Anspruch nehme

0
Lezurex  20.12.2021, 20:22
@LikeLukas725

Nach dem if-Block, wo du die Länge der Argumente prüfst, machst du einen zweiten if-Block, welcher auf die Länge 2 prüft:

if (args.length == 2) {

Somit weisst du dann, dass zwei Argumente (Spielmodus und Spieler) vorhanden sind und kannst somit auch auf das zweite Element des Arrays zugreifen. Der Spieler gibt den Spielernamen als String ein, du musst dann aus diesem Spielernamen als String ein Spielerobjekt machen.

Da bin ich aber an dem Punkt, wo ich mich mit der Spigot-API nicht mehr so auskenne, dieses Wissen habe ich schon länger nicht mehr gebraucht.

Laut meinen Recherchen soll dies aber mit Bukkit.getPlayer() gehen. Die Methode gibt null zurück, wenn der Spielername nicht existiert, das musst du also auch einprogrammieren und dann eine entsprechende Fehlermeldung ausgeben.

0

Wenn ich es richtig verstanden habe versuche es mal mit dem Code habe ihn aus dem Kopf geschrieben und nicht getestet sollte aber funktionieren :)

Damit kannst du mit /gamemode 1 [Spielername] den ausgewählten Spieler im Creative Modus setzen.

if(args.length == 2) {

  if (args[0].equalsIgnoreCase("1")) {

     Player target = Bukkit.getPlayer(args[1]);
  
     if(target != null) {
        target.setGameMode(GameMode.CREATIVE);
        player.sendMessage(ChatColor.BOLD + "Du hast "+ target.getName() + " in den Creative Modus gesetzt!");
        target.sendMessage(ChatColor.BOLD + player.getName() + " hat dich in den Creative Modus gesetzt!");

     } else {
         player.sendMessage(ChatColor.RED + "Der Spieler ist nicht online");
     }
   }
}
Woher ich das weiß:eigene Erfahrung