[英]VB.Net Custom Minecraft Launcher
我想在VB.Net中為我和我的朋友創建自己的Minecraft Launcher。 我有此代碼,該代碼為我提供了訪問令牌。
Private ACCESS_TOKEN As String
Public Function GetAccessToken() As String
Return ACCESS_TOKEN
End Function
Public Sub ObtainAccessToken()
Dim username As String = TextBox1.Text
Dim password As String = TextBox2.Text
Dim UUID As String = Guid.NewGuid.ToString()
Dim httpWebRequest = DirectCast(WebRequest.Create("https://authserver.mojang.com/authenticate"), HttpWebRequest)
httpWebRequest.ContentType = "application/json"
httpWebRequest.Method = "POST"
Using streamWriter = New StreamWriter(httpWebRequest.GetRequestStream())
Dim json As String = (Convert.ToString((Convert.ToString("{""agent"":{""name"":""Minecraft"",""version"":1},""username"":""") & username) + """,""password"":""") & password) + """,""clientToken"":" & ControlChars.Quote & UUID & ControlChars.Quote & "}"
streamWriter.Write(json)
streamWriter.Flush()
streamWriter.Close()
Dim httpResponse = DirectCast(httpWebRequest.GetResponse(), HttpWebResponse)
Using streamReader = New StreamReader(httpResponse.GetResponseStream())
Dim result = streamReader.ReadToEnd()
ACCESS_TOKEN = result
End Using
End Using
End Sub
但是該訪問令牌怎么辦? 如何直接使用Java參數啟動minecraft? 我要啟動minecraft.jar文件。
在.minecraft文件夾中,所有參數都在version.json中
這是版本1.8.8(.minecraft / versons / 1.8.8)中json的片段
"id": "1.8.8",
"time": "2016-06-01T07:45:48-04:00",
"releaseTime": "2015-07-27T06:31:28-04:00",
"type": "release",
"minecraftArguments": "--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userProperties ${user_properties} --userType ${user_type}"
args位於“ minecraftArguments”下,而jar文件位於名為1.8.8.jar的同一目錄中。
這些是我編程的開始:)我現在開始用Visual Basic做C ++。 這適用於任何想知道如何制作Minecraft Launcher的人。
首先,您必須下載“游戲文件”,所有內容都在這里進行了詳細記錄。 然后,您可以開始考慮如何開始游戲。
您將需要訪問和客戶端令牌,我對代碼進行了一些改進:
Imports System.IO
Imports System.Net
Imports System.Web.Script.Serialization ' Add Reference System.Web.Extensions
Module Program
Public Function Authenticate(ByRef username As String, ByRef password As String) As String
Dim UUID As String = Guid.NewGuid.ToString()
Dim Request As HttpWebRequest = DirectCast(WebRequest.Create("https://authserver.mojang.com/authenticate"), HttpWebRequest)
Request.ContentType = "application/json"
Request.Method = "POST"
Using Writer = New StreamWriter(Request.GetRequestStream())
Dim Json As String = ("{ 'agent': {'name': 'Minecraft', 'version': 1}, 'username': '" + username + "', 'password': '" + password + "', 'clientToken': '" + UUID + "', 'requestUser': true }").Replace("'", Chr(34))
Writer.Write(Json)
Writer.Flush()
Writer.Close()
Dim Response = DirectCast(Request.GetResponse(), HttpWebResponse)
Using Reader = New StreamReader(Response.GetResponseStream())
Return Reader.ReadToEnd()
End Using
End Using
End Function
Sub Main()
Dim Response As String = Authenticate("username", "password")
Dim Serializer As JavaScriptSerializer = New JavaScriptSerializer()
Dim Dictionary As Dictionary(Of String, Object) = Serializer.Deserialize(Of Dictionary(Of String, Object))(Response)
Dim AccessToken As String = Dictionary("accessToken")
Dim ClientToken As String = Dictionary("clientToken")
Console.WriteLine(AccessToken)
Console.WriteLine(ClientToken)
Console.Read()
End Sub
End Module
在此代碼中,您將HTTP POST請求發送到mojang身份驗證服務器,然后使用JavaScriptSerializer
將響應解析為json。 訪問令牌和客戶端令牌存儲在AccessToken
和ClientToken
變量中。 Mojang身份驗證在此處記錄 。 然后,我建議您從System.Diagnostics
創建Process
並像這樣啟動它:
Public Sub LaunchMinecraft(ByRef AccessToken As String, ByRef ClientToken As String)
Dim Xmx As String = "4G"
Dim Xms As String = "2G"
Dim Title As String = "My Minecraft Instance"
Dim Version As String = "1.7.10"
Dim AssetIndex As String = "..." ' AssetIndex obtained from mojang server
Dim Username As String = "..." ' Minecraft username obtained from mojang server
Dim Libraries As String = "..." ' Paths to all libraries separated by ;
Dim JavaProcess As Process = New Process()
JavaProcess.StartInfo.UseShellExecute = False
JavaProcess.StartInfo.CreateNoWindow = False
JavaProcess.StartInfo.FileName = "..." ' Path to javaw.exe or java.exe
JavaProcess.StartInfo.Arguments = "-XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump" +
" -Xmx" + Xmx +
" -Xms" + Xms +
" -Djava.library.path=.//bin/natives" +
" -Dminecraft.client.jar=.//bin/modpack.jar" +
" -Dminecraft.applet.TargetDirectory=.//" +
" -cp .//bin/modpack.jar;" + Libraries + ";.//bin/minecraft.jar" +
" -XX:+UnlockExperimentalVMOptions" +
" -XX:+UseG1GC -XX:G1NewSizePercent=20" +
" -XX:G1ReservePercent=20" +
" -XX:MaxGCPauseMillis=50" +
" -XX:G1HeapRegionSize=16M" +
" net.minecraft.launchwrapper.Launch" +
" --gameDir .//" +
" --username " + Username +
" --assetsDir ..//..//..//cache/assets" +
" --assetIndex " + AssetIndex +
" --version " + Version +
" --uuid " + ClientToken +
" --accessToken " + AccessToken +
" --userProperties {}" +
" --userType mojang" +
" --tweakClass cpw.mods.fml.common.launcher.FMLTweaker" +
" --title " + Title
JavaProcess.Start()
End Sub
該代碼未經測試,並且具有相對路徑。 這只是一個例子。 請注意,這是用於改裝的《我的世界》。 希望能幫助到你!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.