Erstellung eines MineCraft Launchers

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 51 Antworten in diesem Thema. Der letzte Beitrag () ist von ichduersie.

    Erstellung eines MineCraft Launchers

    Ich versuche schon ein paar Tage einen MinecraftLauncher in Visual Studio 2013 zu erstellen, jedoch ohne Erfolg. Ich habe schon oft im Internet gesucht, aber entweder waren die Themen total veraltet oder unverständig.
    Mein einziger Fortschritt ist, dass ich diese Webseite gefunden habe: minecraft-de.gamepedia.com/Minecraft.net
    Man soll eine beliebige Version von MineCraft wählen, sobald man auf Play klickt soll ein Ordner in C:\ mit dem Namen der Version erstellt werden, worin sich alle Minecraft Dateien wie zum Beispiel mods, Resource-Packs, ... befinden.
    Danach soll man eingeloggt werden und die ausgewählte Version von MineCraft startet.
    Bitte Hilfe!
    So sieht der Code aus, aber es kommt immer ein Fehler

    VB.NET-Quellcode

    1. Dim HASH As New System.Net.WebClient
    2. Dim login_start As Process
    3. Sub START()
    4. Dim sessionHash As String
    5. sessionHash = HASH.DownloadString("http://login.minecraft.net/?user=" & TextBox1.Text & "&password=" & TextBox2.Text & "&version=13")
    6. sessionHash = sessionHash.Substring(sessionHash.LastIndexOf(":") + 1)
    7. Dim javaPath As String = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
    8. javaPath = Path.Combine(javaPath, "Java", "jre7", "bin", "java.exe")
    9. Dim mcPath As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
    10. mcPath = Path.Combine(mcPath, ".minecraft", "versions")
    11. Dim args As String = "-Djava.library.path={0} -cp minecraft.jar;jinput.jar;lwjgl.jar;lwjgl_util.jar net.minecraft.client.Minecraft {1} {2}"
    12. Dim p As New Process()
    13. p.StartInfo.FileName = javaPath
    14. p.StartInfo.WorkingDirectory = mcPath
    15. p.StartInfo.Arguments = String.Format(args, Path.Combine(mcPath, "natives"), "userName", "sessionHash")
    16. p.Start()
    17. End Sub
    Ja, das ist der Threadtitel...
    Die Exception sagt dir, dass es keinen Server ​login.minecraft.net gibt. Ich habe kurz recherchiert, es gibt diesen Server auch nicht mehr. Hier ist das neue System beschrieben: wiki.vg/Authentication
    Mit freundlichen Grüßen,
    Thunderbolt
    Danke dafür, dass das mit dem Login aufgefallen ist.
    Aber jetzt erscheint eine schnell wieder verschwundene Konsole mit dem Fehler:
    Hauptklasse net.minecraft.Client.minecraft konnte nich gefunden oder geladen werden.
    Dabei habe ich doch das Login.minecraft.net/ durch authserver.mojang.com/ ersetzt.
    Was mache ich falsch?

    kingsunil2000 schrieb:

    Danke dafür, dass das mit dem Login aufgefallen ist.
    Aber jetzt erscheint eine schnell wieder verschwundene Konsole mit dem Fehler:
    Hauptklasse net.minecraft.Client.minecraft konnte nich gefunden oder geladen werden.
    Dabei habe ich doch das Login.minecraft.net/ durch authserver.mojang.com/ ersetzt.
    Was mache ich falsch?

    Im neuen Auth-Verfahren musst du dir schon deinen Access-Token aus dem Response fischen.
    wiki.vg/Authentication da stehts alles.
    Die Requests und Responses werden im JSON-Format gesendet. Unter wiki.vg/Authentication#Authenticate hast du den Punkt Payload, so einen Request must du an authserver.mojang.com/authenticate schicken, als Antwort bekommst du dann das hier, da steht dann dein Acces Token (quasi ein Schlüssel, der die Echteheit deines Accounts bestätigt und dir den "Zugang" erlaubt) mit drin. Den wirst du dann irgendwie an die Minecraft-Jar übergeben müssen, aber frag mich nicht, wie genau.

    Edit: Hier ist 'n Beispiel in Python.

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

    kingsunil2000 schrieb:

    Das weiß ich leider auch nicht

    Sag mal was soll das eigentlich werden? Was erwartest du dir? Dass wir dir einen weiteren sinnlosen Launcher schreiben damit du stolz jedem zeigen kannst was du geschafft hast. Geh auf google, such dir zusammen was du brauchst. Das steht nämlich in jedem wiki. Wenn du eine konkrete Frage hast und man zu dem Thema nicht auf weiteren 1000 Seiten bereits eine Antwort findet, dann poste sie hier und du bekommst eine Antwort.
    Alles andere ist ein Hohn und ich als Moderator würde keine langen Faxen machen und so ein Thema mit einer Verwarnung einfach schließen.

    Wenn du was fertiges willst, dann nimm was fertiges und wenn es dir nicht reicht dann kostet das nach Stundensatz.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

    thefiloe schrieb:

    kingsunil2000 schrieb:

    Das weiß ich leider auch nicht

    Sag mal was soll das eigentlich werden? Was erwartest du dir? Dass wir dir einen weiteren sinnlosen Launcher schreiben damit du stolz jedem zeigen kannst was du geschafft hast. Geh auf google, such dir zusammen was du brauchst. Das steht nämlich in jedem wiki. Wenn du eine konkrete Frage hast und man zu dem Thema nicht auf weiteren 1000 Seiten bereits eine Antwort findet, dann poste sie hier und du bekommst eine Antwort.
    Alles andere ist ein Hohn und ich als Moderator würde keine langen Faxen machen und so ein Thema mit einer Verwarnung einfach schließen.

    Wenn du was fertiges willst, dann nimm was fertiges und wenn es dir nicht reicht dann kostet das nach Stundensatz.


    Entschuldigung, ich kenne mich eigentlich nur mit dem Umgang mit Steuerelementen von VB aus.
    Wollte aber mal was neues probieren.

    Ich wollte eure Zeit nicht verschwenden.
    @thefiloe hat Recht. Du musst schon ein bisschen mit Google arbeiten, wenn du etwas komplett neues machen willst und nicht so viel Ahnung davon hast. Aber Gott sei Dank ist er ja noch lange nicht Moderator, sonst gäbe es nicht mehr so viel Offenheit der Mitglieder in diesem Forum wenn jeder direkt den Mund zu geklebt bekommt mit einem Klapps. :)

    P.s.: Nicht böse gemeint, thefiloe. Aber man muss sich auch mal ein bisschen zusammenreißen können. ;)
    Es existiert ein Interesse an der generellen Rezession der Applikation relativ primitiver Methoden komplimentär zur Favorisierung adäquater komplexer Algorithmen.
    ------------------------------------------------------------------------------------
    Rising Existence - das GTA V-MP Projekt mit Zukunft und Innuvation
    ich glaube bald habe ich es. Habe mich ein wenig informiert und das ist das Ergebnis!

    VB.NET-Quellcode

    1. Imports System.Net
    2. Imports System.IO
    3. Imports System.Text
    4. Public Class Form1
    5. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    6. Dim token As String = gettokenresult("https://authserver.mojang.com?user=" + TextBox1.Text + "&password=" + TextBox2.Text + "&version=13")
    7. Try
    8. If token = "Bad login" Then
    9. MsgBox("Fehler!")
    10. ElseIf token = "Bad request" Then
    11. MsgBox("Fehler!")
    12. Else
    13. Dim str() As String = token.Split(":")
    14. Dim IdConnect As String = (str(3) + ":" + str(4))
    15. Dim user As String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\.minecraft"
    16. Dim cmd As String = "/c C:\Program Files\Java\jre7\bin\jawaw.exe -XX:HeapDumpPath=MojangTricksIntelDriversForPerfomance_jawaw.exe_minecraft.exe.heapdump -Xmx1G -Djava.library.path=" & user & "\.minecraft\versions\1.7.10\1.7.10.jar"
    17. Dim p As New Process
    18. p.StartInfo.FileName = "cmd.exe"
    19. p.StartInfo.Arguments = cmd
    20. p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
    21. p.Start()
    22. End If
    23. Catch ex As Exception
    24. MsgBox(ex.Message)
    25. End Try
    26. End Sub
    27. Function gettokenresult(url As String)
    28. Dim HttpWResponse As HttpWebResponse = Nothing
    29. Dim sr As StreamReader = Nothing
    30. Dim ans As String = Nothing
    31. Try
    32. Dim HttpWRequest As HttpWebRequest = WebRequest.Create(url)
    33. HttpWResponse = HttpWRequest.GetResponse
    34. sr = New StreamReader(HttpWResponse.GetResponseStream(), Encoding.GetEncoding("iso-0859-1"))
    35. ans = sr.ReadToEnd
    36. Catch ex As Exception
    37. ans = Nothing
    38. Finally
    39. If HttpWResponse Is Nothing Then
    40. Else
    41. HttpWResponse.Close()
    42. End If
    43. If sr Is Nothing Then
    44. Else
    45. sr.Close()
    46. End If
    47. End Try
    48. Return ans
    49. End Function
    50. End Class


    Jedoch tritt beim Einloggen folgender Fehler auf:
    Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
    Aua. Mach' mal bitte Option Strict On und steige auf .NET-konforme Sachen, wie ​MessageBox.Show um. ;)
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    kingsunil2000 schrieb:

    VB.NET-Quellcode

    1. Dim token As String = gettokenresult("https://authserver.mojang.com?user=" + TextBox1.Text + "&password=" + TextBox2.Text + "&version=13")


    Im dem neuen Auth-Verfahren musst du einen POST-Request zum Server schicken.
    KaskadekingDE on GitHub :)
    Bitte keine Fragen über Programmierung per PN! Dafür ist das Forum hier.

    Who cares? ¯\_(ツ)_/¯