• 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!

Zeichen aus einer List<String> entfernen

xXSchrandXx

Schafhirte
Registriert
16 September 2012
Beiträge
126
Diamanten
302
Minecraft
xXSchrandXx
Hi,

ich arbeite gerade an einer Teamliste für meinen Server. Ich bekomme in der Liste immer '[' vor und ']' nach der Liste. Zum Beispiel: "[Spieler1, Spieler2, ...]"
Jetzt möchte ich '[' und ']', bevor der Spieler diese Liste angezeigt bekommt, entfernen.
Dazu kommt noch das ich die angezeigten Namen mit einer anderen Farbe hinterlegen möchte. Das wäre auch schön, wenn mir da jemand etwas vorsagen könnte.

Ich bedanke mich schon mal im Voraus für die Hilfe.

Mit freundlichem Gruß
xXSchrandXx
 

BlackHole

Workaholic
Registriert
1 Juli 2012
Beiträge
752
Diamanten
0
Minecraft
BlackHole
Du könntest das z.B. so lösen:
Code:
String result = spielerliste.stream().collect(Collectors.joining(ChatColor.RESET + ", " + ChatColor.GOLD, ChatColor.GOLD + "", ""));

Collectors.joining() erwartet als erstes Argument die Trennzeichenkette, dann die Zeichenkette für den Anfang und dann für das Ende.
 

BlackHole

Workaholic
Registriert
1 Juli 2012
Beiträge
752
Diamanten
0
Minecraft
BlackHole
Das könnte man z.B. so machen:
Code:
String result = spielerliste.stream().map(name -> Bukkit.getPlayerExact(name) == null ? ChatColor.RED + name : ChatColor.GREEN + name).collect(Collectors.joining(ChatColor.RESET + ", ", "", ""));
 

xXSchrandXx

Schafhirte
Registriert
16 September 2012
Beiträge
126
Diamanten
302
Minecraft
xXSchrandXx
Eine Frage hätte ich noch, kann ich eine HoverMessage über einen Spielernamen setzen, welcher online ist? Diese sollte dann nur beinhalten, das dieser Spieler auf irgendeinem Server ist.
 
Zuletzt bearbeitet:

BlackHole

Workaholic
Registriert
1 Juli 2012
Beiträge
752
Diamanten
0
Minecraft
BlackHole
Dann muss man die ganze Nachricht als BaseComponent zusammen setzen, z.B. so:
Code:
ComponentBuilder builder = new ComponentBuilder("");
Iterator<String> iterator = spielerliste.iterator();
while (iterator.hasNext()) {
    String name = iterator.next();
    builder.append(name);
    ProxiedPlayer player = ProxyServer.getInstance().getPlayer(name);
    if (player == null) {
        builder.color(ChatColor.RED);
    } else {
        builder.color(ChatColor.GREEN);
        builder.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText(ChatColor.GREEN + "Ist online")));
    }
    if (iterator.hasNext()) {
        builder.append(", ", FormatRetention.NONE);
    }
}

BaseComponent[] result = builder.create();

Man bekommt es sicher auch mit Stream.reduce() hin, aber da müsste man etwas experimentieren.
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Registriert
19 Mai 2014
Beiträge
1.675
Diamanten
830
Dein Fehler ist, dass du keine Ahnung von Java oder dem Programmieren hast. Ich hab den Thread jetzt genüsslich seit Gestern verfolgt. Eigentlich wollte ich dich gestern schon darauf hinweisen, dass du vielleicht ein wenig Eigenrecherche an den Tag legen solltest. Hier sieht man nämlich wunderbar, warum man niemals jemandem eine fertige Lösung präsentieren sollte.

@BlackHole Hat dir mehrfach vollständig dein Problem gelöst. Gelernt hast du dabei allerdings absolut nichts. Stattdessen bist du immer und immer wieder hier her gekommen und wieder von jemand anderen deine Probleme gelöst zu bekommen. Das ist zwar extrem einfach, aber du hast dabei absolut nichts gelernt. Dein aktuelles Problem ist exakt das selbe, wie im Einstiegspost

Wenn @BlackHole weiterhin bereit ist dir jeden einzelnen Schritt vorzukauen, dann hast du Glück, ich würde das jedenfalls an seiner Stelle nicht tun. Dein Problem ist übrigens Seit deinem ersten Post unverändert: Du hast keine Ahnung von Strings. Du benutzt unbemerkt die .toString() Methode deiner Objekte. Das hat für deine Liste noch irgendwie funktioniert, da Java hier eine sinnvolle Standardimplementierung mitliefert, aber für die BaseComponent Klasse gibt es das nicht. Ich würde dich ja gerne auf einen konkreten Link verweisen, aber das ist schlicht ein Anfängerproblem. Arbeite ein komplettes Tutorial durch. Wie du über die Elemente einer Liste iterierst scheinst du auch nicht verstanden zu haben. Grundlegende Konzepte aus der Programmierung, absolut nichts was irgendwie anspruchsvoll ist. Du kannst dir entweder weiterhin Code zusammen kopieren und darauf hoffen, dass es dir irgendwer schon vorkaut oder du lernst es selbst.

Zudem ist die Lösung von BlackHole mit der Stream API zwar irgendwie hübsch, aber für einen Anfänger absolut unverständlich und m.M.n. auch ein bisschen overkill.
 
Oben