Texte filtern

Lasnik

Mitglied
Ich arbeite hier mit Minecraft. Denke aber, dass es unnötig ist dies im Gamingforum zu posten, da das Problem in jedem anderen Programm auch entstehen kann.
Wie man in der Konsole sehen kann, lasse ich mir den Text von dem Minecraft Befehl ausgeben. Leider macht er dies nicht als simplen String von dem Text, sondern mit unendlich viel unnötigen Infos. Ich will nur die Information, die nach "text" kommt mir ausgeben lassen (in dem Beispiel 22 und 6666...). Dabei soll aber das, was dort drinnen steht keine Rolle spielen, da es sich jedes Mal verändern kann. Wie kann ich mir also nur das was ich will ausgeben lassen, ohne Minecrafts Source Code (rechtes Fenster) zu verändern? (Ein Teil von meinem Programm ist links)
 

Anhänge

  • Screenshot (56).png
    Screenshot (56).png
    184,5 KB · Aufrufe: 31

mihe7

Top Contributor
Ins Blaue geraten, mal ein Helferein schreiben:
Java:
public String getText(Text txt) {
    StringBuilder b = new StringBuilder();
    txt.toPlainText(b);
    return b.toString();
}
Und dann verwenden:
Java:
// ersetze
// System.out.println(txt); 
// durch
System.out.println(getText(txt));
 

Lasnik

Mitglied
Das funktioniert leider nicht, es entstehen viele Fehler. Brauchst du vielleicht noch mehr Informationen?

Und gibt es vielleicht einfach irgendeine Funktion, mit der man sich einfach nur das nach "text", zwischen den beiden ' Zeichen ausgeben lassen kann?
 

mihe7

Top Contributor
Finde ich im Google auf die Schnelle nicht; ein Link zur API-Doku wäre nicht schlecht. Ansonsten probier einfach mal einfach txt.getText() (bzw. nutze mal die autovervollständigen-Funktion der IDE, vielleicht siehst Du was passendes).
 

MoxxiManagarm

Top Contributor
TextComponent{text='666666666', ... ist eigentlich eine typische toString Implementierung, wie sie z.B. IntelliJ per default zusammenbaut. Ich gehe davon aus, dass diese eine Subklasse oder eine implementierende Klasse von Text ist. Wie dem auch sei, hat diese das Attribut 'text', also vermutlich wiederum auch den entsprechenden getter. Ich würde es daher mit System.out.println(txt.getText()); versuchen.
 

Lasnik

Mitglied
Keine Person, die Eclipse IDE besitzt dieses QuickFix feature.

Übrigens will ich mich korrigieren, es hat nicht nur kein Text augegeben, sondern mich sofort aus der Welt/dem Server ausgeloggt sobald ein title Text erschien. Irgendwas lief da wohl garnicht richtig :(
 

mihe7

Top Contributor
Naja, der Spaß enthält doch zig Methoden, die einen String liefern: asString(), getString(), asTruncatedString(), asFormattedString() - such Dir eine aus :)
 

Lasnik

Mitglied
Oh Gott peinlich. Mit asString() hat es sofort geklappt. Ich habe viel zu kompliziert gedacht. VIEEELEN Dank

Edit: Irrtum, im Singleplayer läuft alles einwandfrei. Im Multiplayer stürzt mein Spiel dann einfach vom Server. Ist wohl doch kein allgemeines Java Problem sondern mehr mit Minecraft zusammenhängend
 

Lasnik

Mitglied
Alles funktioniert super mit dem abfangen (egal welche Farbe, Schriftart etc.), außer man setzt Zeiten ein (kann man in Minecraft durch
/title [PLAYERNAME] times [FADE IN] [STAY] [FADE OUT]
Sollte der title Befehl so konfiguriert sein (so ist es auf Servern), stürzt es ab
Ist sicherlich nicht dein Fachbereich, trotzdem irgendeine Idee?
 

mihe7

Top Contributor
Mir sagt das ganze Minecraft-Zeug leider gar nichts. Bekommst Du eine Exception? Vielleicht ist ja in dem Fall eine andere Variable statt getText() abzufragen.
 

Lasnik

Mitglied
Okay, im game steht "Internal Exception: net.minecraft.util.crash.CrashEception: Firing Wurst Event" und in der Konsole steht "java.lang.NullPointerException"
Kann man darauf irgendwelche Rückschlüsse ziehen?
 

Lasnik

Mitglied
Es gibt eine riesige Menge an Infos aus. Das einzig vielversprechende war folgendes:
Internal Exception: java.lang.ClassCastException: net.minecraft.server.network.ServerPlayNetworkHandler cannot be cast to net.minecraft.network.listener.ClientPlayPacketListener
 

Lasnik

Mitglied
Code:
[22:45:48] [Server thread/INFO]: [Player927: Changed title display times for Player927]
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]: java.lang.NullPointerException
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at net.wurstclient.hacks.MinerwareHack.onReceivedPacket(MinerwareHack.java:77)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at net.wurstclient.events.PacketInputListener$PacketInputEvent.fire(PacketInputListener.java:40)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at net.wurstclient.event.EventManager.fire(EventManager.java:55)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at net.minecraft.network.ClientConnection.handler$zdn000$onChannelRead0(ClientConnection.java:536)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at net.minecraft.network.ClientConnection.channelRead0(ClientConnection.java:131)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at net.minecraft.network.ClientConnection.channelRead0(ClientConnection.java:373)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at io.netty.channel.local.LocalChannel.readInbound(LocalChannel.java:304)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at io.netty.channel.local.LocalChannel.finishPeerRead0(LocalChannel.java:446)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at io.netty.channel.local.LocalChannel.access$400(LocalChannel.java:51)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at io.netty.channel.local.LocalChannel$5.run(LocalChannel.java:404)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at io.netty.channel.DefaultEventLoop.run(DefaultEventLoop.java:54)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
[22:45:48] [Netty Local Client IO #3/INFO]: [STDERR]:  at java.lang.Thread.run(Thread.java:745)
[22:45:48] [Server thread/INFO]: Player927 lost connection: Internal Exception: java.lang.ClassCastException: net.minecraft.server.network.ServerPlayNetworkHandler cannot be cast to net.minecraft.network.listener.ClientPlayPacketListener
[22:45:48] [Server thread/INFO]: Player927 left the game
[22:45:48] [Server thread/INFO]: Stopping singleplayer server as player logged out
[22:45:48] [Server thread/INFO]: Stopping server
 

Lasnik

Mitglied
Ich habe den Crash gefixt bekommen, indem ich getestet habe, ob die Aktion der Timer ist. Es funktioniert überall, außer auf dem Server, auf dem ich es brauche.
Code:
@Override
public void onReceivedPacket(PacketInputEvent event)
{
  Packet<?> packet = event.getPacket();
  if(packet instanceof TitleS2CPacket)
  {
   TitleS2CPacket title = (TitleS2CPacket)packet;
   Action action = title.getAction();
  
   if(!(action == TitleS2CPacket.Action.TIMES)) {
   String txt = title.getText().asString();
   }
  }
Auf dem Server wird mir eine Lehre Antwort ausgegeben, es macht Sinn, da es irgendwie zwei Texte in einem sind, also:
Normalerweise wird ohne die .asSting() Funktion folgendes ausgegeben:
Code:
TextComponent{text='AUSGABETEXT', siblings=[], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}
Auf dem Server allerdings:
Code:
 TextComponent{text='', siblings=[TextComponent{text='AUSGABETEXT', siblings=[], style=Style{hasParent=true, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}
 
K

kneitzel

Gast
Also du zeigst es doch selbst in Deinem Post: wenn Text leer ist, dann kannst du die die Siblings ansehen, ob diese eine TextComponent enthalten wessen Text Attribut du dann nutzen könntest....
 

Lasnik

Mitglied
Könntest du bitte ein Beispiel geben, wie das in Java aussehen würde?
Wie greift man z.B. auf die siblings und dann auf den TextComponent zu?
 
K

kneitzel

Gast
Also die API kenne ich nicht, aber die Info hast du ja selbst als eine Ausgabe gekostet. Der habe ich es entnommen...

Also schau doch einmal, was die IDE dir an Methoden anbietet. Ein getSibling oder so wird es evtl. geben.

Auf dem Ergenmis kann man prüfen, ob es null ist oder nicht und man kann instanceof Text opponent prüfen ... so es ein TextComponent ist erfolgt ein Cast und der Zugriff auf das Element ....

Das sind 08/15 Dinge, die du dir aneignen solltest. Es ist in meinen Augen kontraproduktiv Java auf die von dir gewählte Methode zu wählen, wenn es hier so wenig Doku und so viele Stolpersteine gibt ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
B Texte umdrehen Java Basics - Anfänger-Themen 4
M Erste Schritte Mit Variable verschiedene Texte in Textfeld einfügen Java Basics - Anfänger-Themen 27
J Texte für Java Programmierung besser verstehen? Java Basics - Anfänger-Themen 2
I Texte mit Absätzen in Dateien speichern und auslesen Java Basics - Anfänger-Themen 1
I Texte an bestimmten Stellen ausgeben. Java Basics - Anfänger-Themen 3
L vergleich zweier texte Java Basics - Anfänger-Themen 18
M Java-Prog soll Texte innerhalb Bildern erkennen Java Basics - Anfänger-Themen 2
G Texte innerhalb von Dateien suchen Java Basics - Anfänger-Themen 9
W Texte kodieren Java Basics - Anfänger-Themen 33
V JSON-Objs aus JSON-Obj filtern und löschen (Manipulation ohne Kenntnis der vollst. Struktur) Java Basics - Anfänger-Themen 12
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
L Zahlungen nach Monat filtern Java Basics - Anfänger-Themen 2
CptK Bestimmten Integer Wert aus Array filtern Java Basics - Anfänger-Themen 2
S Integer aus Array filtern Java Basics - Anfänger-Themen 4
P Signal Filtern Java Basics - Anfänger-Themen 1
J Objekttypen vergleichen und filtern Java Basics - Anfänger-Themen 6
K Lambda - kompliziertes filtern Java Basics - Anfänger-Themen 5
MrSnake ObservableList filtern Java Basics - Anfänger-Themen 5
N Collection sortieren/ filtern Java Basics - Anfänger-Themen 7
J Textdatei filtern und bearbeiten Java Basics - Anfänger-Themen 1
B Sortieren und Filtern von Tabellen Java Basics - Anfänger-Themen 6
B Input/Output output Datenstrom filtern Java Basics - Anfänger-Themen 0
B Klassen Doppelte werte Filtern XML, Datenbank und DOM Java Basics - Anfänger-Themen 3
Java-DAU String filtern Java Basics - Anfänger-Themen 22
L Palindrome aus Sätzen filtern Java Basics - Anfänger-Themen 53
S Liste speziell filtern Java Basics - Anfänger-Themen 20
Kaniee CharArrayWriter filtern Java Basics - Anfänger-Themen 4
S Datensätze filtern Java Basics - Anfänger-Themen 3
A String mittels RegEx filtern Java Basics - Anfänger-Themen 13
F String filtern und Systeminfos Java Basics - Anfänger-Themen 19
X Strings filtern? Java Basics - Anfänger-Themen 10
J Aus einem String unbekannte zeichen filtern Java Basics - Anfänger-Themen 11
J Regex + Match Zahlen filtern Java Basics - Anfänger-Themen 5
S LinkedList<String[]> filtern und sortieren Java Basics - Anfänger-Themen 9
S String filtern mit replace -> Problem Java Basics - Anfänger-Themen 6
M Filtern von Dateinamen Java Basics - Anfänger-Themen 7
G Zahlen aus String filtern? Java Basics - Anfänger-Themen 3
G Filtern von nicht-darstellbaren Zeichen Java Basics - Anfänger-Themen 3
M ordner überwachen und dateien filtern Java Basics - Anfänger-Themen 3
M Quelltext - Urls filtern Java Basics - Anfänger-Themen 4
G String "filtern" Java Basics - Anfänger-Themen 2
S Liste oder Array filtern Java Basics - Anfänger-Themen 2
N Textdatei einlesen, Filtern und Splitten Java Basics - Anfänger-Themen 4
J Mailadresse aus String filtern Java Basics - Anfänger-Themen 2
C Dateinamen Filtern Java Basics - Anfänger-Themen 10
M Kann man im Filter nach mehreren Strings filtern lassen Java Basics - Anfänger-Themen 11
M Dateien aus Verzeichnis filtern, aber nicht nach Endung Java Basics - Anfänger-Themen 59
G Filtern einer 3stelligen Zahl Java Basics - Anfänger-Themen 7
G aufsteigenden Teilstring aus String filtern? Java Basics - Anfänger-Themen 2
D RGB-Frabmodell filtern Java Basics - Anfänger-Themen 9
G Reguläre Ausdrücke zum Filtern von logfiles Java Basics - Anfänger-Themen 2
M java sonderzeichen filtern Java Basics - Anfänger-Themen 3
E Laufwerksangabe aus Pfadangabe (String) filtern Java Basics - Anfänger-Themen 10
H Verzeichnis lesen, und nur unterverzeichnisse heraus filtern Java Basics - Anfänger-Themen 6
G mit .* filtern Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben