• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Wie bekommt man aus einer String List bestimmte Argumente

AconTM

Schafhirte
Registriert
15 Juni 2015
Beiträge
118
Alter
29
Diamanten
260
Minecraft
AconTM
Tagchen,

ich hab aktuell ein Projekt bei dem ich versuche bestimmte Spielernamen aus einer Stringlist
auszulesen. Das brauche ich in so fern, das ich gerne eine art "list" Befehl machen würde
der mir dann z.b alle Spieler geordnet ausgibt. Meine Stringlist sieht in der Config so aus:

Code:
  Members:
  - AconTM
  - BaconTM

Ich hoffe ich konnte mich halbwegs gut ausdrücken ^^ Anregungen sind gerne gesehen.

Lg. AconTM
 

moinless

Schafhirte
Registriert
4 Oktober 2013
Beiträge
103
Diamanten
302
In Java 8 kannst du ein List<String> Objekt mittels der Methode String#join() ganz einfach in einen String umwandeln. (So habe ich jetzt deine Frage verstanden. Falls nicht, einfach melden)

Java:
List<String> list = Arrays.asList("AconTM", "BaconTM"); //Hier musst du natürlich deine Liste aus der Config laden

String member = String.join(", ", list) //Gibt dann "AconTM, BaconTM" aus
 
Zuletzt bearbeitet:

AconTM

Schafhirte
Registriert
15 Juni 2015
Beiträge
118
Alter
29
Diamanten
260
Minecraft
AconTM
Das was du geschrieben hast hat bisher gut geklappt :) Jetzt stellt sich mir nur die Frage:
Kann ich diese Namen auch irgendwie untereinander angezeigt bekommen? Und ggf.
irgendwie die UUID dieser Spieler raus bekommen? Ich versuche etwas das am Ende
"zirka" so aussieht ^^:

eyA5dab.png
 

Taminoful

Schafhirte
Registriert
3 August 2012
Beiträge
137
Diamanten
390
Minecraft
Taminoful
@AconTM
Du solltest dich wirklich mehr mit den Dokumentationen der Libraries und APIs die du nutzt auseinandersetzen.
Spigot bringt mit dem ConfigurationSection Interface eine Methode namens getStringList() mit.

Diese könnte beispielsweise so angewendet werden:

Code:
String path = "your.path";
List<String> listOfStrings = this.getConfig().getStringList(path);

Mit der 1.7.5 wurde folgende Methode, um an die UUID eines "OfflinePlayers" zu kommen, implementiert:
Code:
UUID playerUUID = Bukkit.getServer().getOfflinePlayer(playerNameAsString).getUniqueID();

Alternativ dazu dürftest du diese auch durch die java.util Klasse UUID bekommen.
Code:
UUID playerUUID = UUID.fromString(playerNameAsString);

Natürlich empfiehlt es sich, wenn du die UUID jedes Spielers haben möchtest eine Liste mit UUIDs anzulegen und diese durch einen for-each Loop der Spielernamen Liste zu befüllen. Wobei beides zu speichern recht unsinnig ist.
 
D

deleted196100

Guest
Das was du geschrieben hast hat bisher gut geklappt :) Jetzt stellt sich mir nur die Frage:
Kann ich diese Namen auch irgendwie untereinander angezeigt bekommen? Und ggf.
irgendwie die UUID dieser Spieler raus bekommen? Ich versuche etwas das am Ende
"zirka" so aussieht ^^:

eyA5dab.png

Du könntest versuchen mit \n zu joinen, wobei ich nicht glaube, dass das der Minecraft Chat mitmacht.
Ansonsten einfach mit ner Schleife über die Liste gehen und nacheinander ausgeben.
 

moinless

Schafhirte
Registriert
4 Oktober 2013
Beiträge
103
Diamanten
302
Und ggf.
irgendwie die UUID dieser Spieler raus bekommen?
Wenn du tatsächlich für jedes Objekt aus der Liste individuell etwas machen möchtest, wäre die Stream-API aus Java 8 der richtige Ansatzpunkt hierfür (Hier mal eine kleine Einführung dazu). Dann kannst du deine Liste theoretisch auch noch nach bestimmten Kriterien filtern (#filter()) oder Ordnen und anschließend mittels der Methode #forEach() etwas ausführen, für die Objekte, welche den Filter überlebt haben.

Du könntest versuchen mit \n zu joinen, wobei ich nicht glaube, dass das der Minecraft Chat mitmacht
Ich denke, dass das sogar funktionieren würde.
 

BlackHole

Workaholic
Registriert
1 Juli 2012
Beiträge
752
Diamanten
0
Minecraft
BlackHole
Man kann Zeilenumbrüche verwenden, aber der resultierende JSON-String darf nicht länger als 32767 Zeichen sein, sonst trennt der Client die Verbindung. Man könnte auch alle Zeilen einzeln verschicken. Spielernamen persistent zu speichern ist eine ganz schlechte Idee, da sich diese jederzeit ändern können und möglicherweise mittlerweile ein ganz anderer Spieler diesen Namen verwendet.
 

UnityGaming

Workaholic
Registriert
25 Oktober 2015
Beiträge
527
Alter
26
Diamanten
312
Minecraft
FastFelix771
Ich denke, dass das sogar funktionieren würde.
Tut es auch. ;)

aber der resultierende JSON-String darf nicht länger als 32767 Zeichen sein
Naja, da hat man ja dennoch einiges an Spielraum; Außerdem kann man den String ja zur Not kürzen vor dem Versenden. Allerdings sollte man natürlich auch einen Puffer einrechnen für die JSON Notationen, damit man sich mit diesen 32767 Zeichen nicht doch verkalkuliert am Ende.

@AconTM
Du solltest, sofern du irgendwelche Rechte oder Güter an diesen Config-Eintrag bindest, auf jeden Fall die UUID anstatt dem Spielernamen speichern. Man ist eigentlich generell auf die UUID umgestiegen um einen Spieler eindeutig zuzuordnen - aus offensichtlichen Gründen.
 

SirYwell

PlotSquared Entwickler
Registriert
30 Juni 2017
Beiträge
540
Diamanten
488
Minecraft
SirYwell
Alternativ dazu dürftest du diese auch durch die java.util Klasse UUID bekommen.
Um hier nochmal etwas Klarheit zu schaffen: Mit UUID.fromString(string) wandelt man einen UUID-String (Ergebnis aus UUID#toString()) in ein UUID-Objekt um. Diese Methode ist also optimal mal, um aus einer Liste mit UUID-Strings letztendlich die OfflinePlayers herauszubekommen.
 
Oben