Jump to content

Minecraft Programmieren Textausgabe


Empfohlene Beiträge

Hallo ich programmiere noch nicht so lange und kenn nur die Basics um ein Minecraft Plugin zu schreiben

Ich habe mein Team/Group im grunde fertig aber die textausgabe sieht ein wenig langweilig und unprofessionell aus.

Ich habe es so geschrieben.

List Owner = plugin.getConfig().getStringList("owner");

p.sendMessage(utils.owner + "?6" + Owner.toString());

und ausgegeben wird [Owner] [name1, name2, ...]

Das sieht mir zu langweilig aus und egal was ich versuche es bleiben immer diese blöden Klammern []

Ich stelle mir etwas in der Richtung vor , wo ich auch zb die Farbe ändern kann wenn der Spieler Online ist oder nicht (ging mit toString leider nicht):

[Owner] Name1 | Name2 | ...

Bitte um eine gute Antwort, wie ich dieses "Schönheitsproblem" beheben kann.

Danke im Vorraus!

bearbeitet von MasterProgram
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

bevor ich zu deinem eigentlichen Problem komme; CODE STYLE! (eine kleine Übersicht => http://www.javaranch.com/style.jsp )

Die Methode toString() ist in jedem Objekt vorhanten weil sie durch java.lang.Object definiert ist und von Klassen überschrieben wird.

Die Dokumentation ( https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html) sagt:

String toString()

Returns a string representation of the object.

Arrays werden sehr oft durch [ ] definiert.

Das war ein bisschen Vorgeschichte.

LÖSUNG

Du kannst jedes Element aus der Liste abfragen und dann daraus einen String bauen der deine Separatoren hat.

ZB so:

List<String> owners = getConfig().getStringList("owner");StringBuffer ownerListStringBuffer = new StringBuffer();for (String owner : owners) {    ownerListStringBuffer.append(" | ");    ownerListStringBuffer.append(owner);}if (ownerListStringBuffer.toString().isEmpty()) {    p.sendMessage(utils.owner + "?6Currently none!");} else {    p.sendMessage(utlis.owner + "?6" + ownerListStringBuffer.toString().substring(3);}

Erklärung:

List ist eine Klasse instanceof Iterable, d.h. sie kann mit einer foreach Schleife durchlaufen werden.

Der Doppelpunkt in der Schleife sorgt dafür, dass die Variable owner jedes Element in der Liste owners einmal ist. Damit wird der StringBuffer immer mit deinem Separator und dem Namen des Owners gefüllt.

Die Abfrage auf toString().isEmpty() ist notwendig weil du den ersten Separator ja nich mit in der Meldung haben willst (deshalb auch .substring(3)) und der Aufruf .substring(3) bei einem leeren String eine StringArrayIndexOutOfBoundsException werfen würde.

Lg

idk.java

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...
B
B