Minecraft Server Infos auslesen

  • VB.NET

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von joscha999.

    Bitte etwas genauer formulieren?
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Willkommen im Forum. :thumbup:
    Geh mal auf die Startseite und gib Minecraft im Suchfenster rechts oben ein. Da sollte was für Dich dabei sein.
    Suchergebnisse

    Suchergebnisse 1-30 von insgesamt 1 000 für »Minecraft«. Es gibt noch weitere Suchergebnisse, bitte verfeinere deine Suche.
    Diese Suchbegriffe wurden hervorgehoben: Minecraft
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    möglichkeit eins:
    zum MC-server koneckten via sockets als client ausgeben und die motd daraufhin abfragen
    möglichkeit zwei:
    mc.exe ausführen und auf multiplayer clicken ;)
    dritte möglichkeit:
    es lassen

    PS:
    gibts sonst noch möglichkeiten dann bitte herdamit :)
    Lass dich von den anderen nicht unterkriegen ;)

    Deine Frage war völlig in Ordnung formuliert. Die wissen nur nichts von Minecraft :PPP


    Zur Frage:

    Du bräuchtest einen TCPClient und folgende Infos:

    wiki.vg/Protocol

    Ich schau mal, ob ich da was gebastelt bekomme.

    Es müsste reichen, eine Verbindung aufzubauen und 0xFE zu senden. Die Antwort wäre die Spieleranzahl samt Motd.

    Viel Erfolg,
    Manawyrm

    EDIT: Mist. Zu langsam.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Manawyrm“ ()

    ich glaub ich teste das mal wenn da die spieleranzahl dabei ist kann man ja ganz nett was auslesen vom server

    EDIT:
    damit kann man ja nen ganzen server kontrolieren O.o

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „joscha999“ ()

    Stimmt, aber mit hilft es nicht weiter. Ich weis was TCP ist, aber nicht wie man verbindet.



    Edit by Dodo:
    sog. Fullquotes des darüberliegenden Beitrags sind völlig sinnfrei und gemäß der Boardregeln nicht erwünscht
    -> Fullquote entfernt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dodo“ ()

    Da du erst 2 Beiträge hast geh ich stark davon aus das du Anfänger in VB bist.

    Kauf dir am besten mal ein Buch und mach ein Hallo Welt programm. Mit TCP oder Minecraft zu arbeiten ist schwer.
    Da du das ganze Minecraft Protocol nachbauen musst
    @joscha999 -> Handshake / Login Request ist das Anmelden. Und nein damit kannst du nicht alle töten oder sonst irgendwelche super hardcore Cheats machen, die Server prüfen so einiges bevor sie etwas ausführen.

    @DoomStyler

    Man brauch nur 1 Paket senden(Server List Ping) und nicht das ganze Protokoll nachbauen, außer man verwendet die Query Methode

    DoomStyler schrieb:

    Da du erst 2 Beiträge hast geh ich stark davon aus das du Anfänger in VB bist.
    Die Beitragszahl sagt mal garnichts über den VB-Kenntnisstand aus. Man muss sich die Beiträge schon durchlesen.

    DoomStyler schrieb:

    Da du das ganze Minecraft Protocol nachbauen musst
    Er muss doch gar nicht das ganze Protokoll implementieren. Es wird anscheinend nur das eine Packet benötigt, welches @Manawyrm: gepostet hat.

    Du brauchst nur einen TcpClient.


    Es könnte übrigens komplizierter werden, da das MC-Server anscheinend "Java verseuchte" Daten sendet (was bei MC durchaus Sinn macht). Ein Feld ist z. B. ein Byte, kann aber den Wert '-1' annehmen. In Java geht ein Byte nicht von 0 bis 255, sondern von -128 bis 127. Da könnte man eventuell drüber stolpern, weil es da Unterschiede zu .NET und der restlichen Welt gibt. (Java kann keine unsigned Values)
    Von meinem iPhone gesendet
    Das stimmt, Ich kenn mich mit Vb gut aus(Flashplayer, Eigener Player(Frame für Frame Player mit Sound), etc)


    Edit by Dodo:
    sog. Fullquotes des darüberliegenden Beitrags sind völlig sinnfrei und gemäß der Boardregeln nicht erwünscht
    -> Fullquote entfernt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dodo“ ()

    @DoomStyler
    Kein WindowsMediaPlayer und kein Flashplayer.
    Mein Player nimmt frame für frame und trägt es in die picutre box ein
    der flashplayer ist von adobe aber ich guck dadurch ytube videos, die werbung wird automatscih weggeklickt ich muss nur die pfeiltaste drücken.
    Hier mal ein schnell geschriebener Test, bitte lies dir wenigstens die Kommentare durch und versuch den Code zu verstehen statt ihn einfach nur zu kopieren ;).

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.Text
    3. Imports System.IO
    4. Dim client As New TcpClient("localhost", 25565) ' Server ip / port
    5. Dim ns As NetworkStream = client.GetStream()
    6. ns.WriteByte(&HFE) ' http://www.wiki.vg/Protocol#Server_List_Ping_.280xFE.29 -> Serverlist ping ist nur 1 byte 0xFE
    7. ns.Flush()
    8. Dim buffer As Byte() = New Byte(1024) {}
    9. ns.Read(buffer, 0, 1024)
    10. Using br As New BinaryReader(New MemoryStream(buffer))
    11. br.ReadByte() ' 1. Byte ist immer der Typ des Pakets, sollte hier 0xFF sein(Disconnect/Kick)
    12. Dim arrSize As Byte() = br.ReadBytes(2) ' Laut http://www.wiki.vg/Protocol haben Strings 2 führende Bytes welche die Größe des Strings angeben
    13. Array.Reverse(arrSize) ' Bytes werden verkehrt gesendet
    14. Dim size As Short = CShort(BitConverter.ToInt16(arrSize, 0) * 2) 'In Short konvertieren, *2 da es sich um BigEndianUnicode handelt(Jedes Zeichen ist 2 bytes groß!)
    15. Dim arrString As Byte() = br.ReadBytes(size) ' Der String, dieser enthält Motd/Online player/Player slots
    16. Dim str As String = Encoding.BigEndianUnicode.GetString(arrString) ' Die bytes in einen String konvertieren
    17. Dim motd As String = str.Split(New String() {"§"}, StringSplitOptions.None)(0) ' Die einzelnen Angaben werden durch ein "§" getrennt, der erste String ist die Motd
    18. Console.WriteLine(motd)
    19. End Using

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Pinki“ ()