Minecraft Server Kommunikation

Alle Fragen zur Netzwerkkommunikation
Antworten
Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Minecraft Server Kommunikation

Beitrag von Komoluna »

Liebes Forum

Ich bin dabei den Status von meinem Minecraft Server mit Lazarus abzufragen, habe aber folgendes Problem:
wenn ich den Server nach seinem Status frage bekomme ich ein Bytearray zurück:

Code: Alles auswählen

 
233
108
9
118
145
109
 
die Frage ist jetzt, wie bekomme ich daraus nun die Daten(Servermotto, MaxPlayer, CurrentPlayer)?

MFG
Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2825
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Minecraft Server Kommunikation

Beitrag von m.fuchs »

Ich denke, da wirst du im Lazarusforum nicht ganz so viele Hinweise bekommen. Wiewohl auch andere hier sich mit Minecraft beschäftigen, wenn ich mich recht erinnere. Vielleicht findest du hier mehr Infos, wie das Protokoll aufgebaut ist: http://www.minecraftwiki.net/wiki/Minecraft_Wiki
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Minecraft Server Kommunikation

Beitrag von Komoluna »

Sorry für die dürftigen Infos, hier ist nochmal mein anliegen in vollem umfang:
Ich habe mir bereits alle möglichen seiten durchgeschaut, und bin auf ein Python Script gestoßen
ich habe den Code jetzt schon soweit übersetzt, komme aber in Zeile 20 nicht weiter...
in dem Python beispiel werden ja Bytes in einen UTF16 String Konvertiert.
Wie geht das in Lazarus?
Ich habe mal versucht den Code so gut wie möglich übersetzt:

Code: Alles auswählen

  TCP: TLTCPComponent;
  s: string;
  d: array [0..4] of Byte;
  Memo1:TMemo;

Code: Alles auswählen

  TCP.Connect('192.168.0.83',25565);
  TCP.SendMessage('\xfe\x01');
  TCP.Get(d, 1024);
  TCP.Disconnect(false);
  if length(d)=0 then begin showmessage('"d" ist zu kurz!'); exit; end;
  if d[0]=255 then showmessage('Disconnected(forced)');
  for i:=0 to length(d) do
  Memo1.Append(inttostr(d[i]));     
(Dieser Code gibt die einzelnen Bytes als Zahlen in einem Memo aus)

d.h. mein Problem hat eigentlich nicht viel mit Minecraft an sich zu tun sondern mit der Konvertierung von Bytes in strings und Integer's

MFG
Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Antworten