最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

教程/編寫啟動器

2023-07-25 18:12 作者:俏皮的方塊鸚鵡  | 我要投稿


此特性為Java版獨(dú)有。

本教程介紹如何制作Java版啟動器,并假定你已掌握任何一門編程語言。

?

基本原理

因?yàn)镸inecraft制作時采用了“啟動器+游戲文件”的模式:

  • 將游戲文件單獨(dú)存儲,而通過啟動器調(diào)用JVM(Java Virtual Machine)執(zhí)行游戲主文件并傳入一些游戲參數(shù)來啟動Minecraft。

  • 游戲依賴庫文件以及游戲資源文件由啟動器補(bǔ)全。

  • 玩家登錄認(rèn)證由啟動器完成。

這使得我們能通過編寫第三方啟動器來接管游戲文件管理和登錄認(rèn)證。

準(zhǔn)備

要編寫一個啟動器,你需要:

  • 一門編程語言其開發(fā)環(huán)境

  • Java運(yùn)行時環(huán)境(Java Runtime Environment,JRE),可于Java官網(wǎng)下載

并擁有支持下列功能的庫:

  • 解析JSON文檔(得到啟動參數(shù)的關(guān)鍵)

  • 解壓文件(解壓natives文件,也可使用鏈接外部程序替代)

  • 網(wǎng)絡(luò)庫(正版驗(yàn)證、皮膚管理)

啟動參數(shù)

啟動參數(shù)將傳入java.exejavaw.exe,使JVM通過傳入的主類正確地啟動游戲。

啟動參數(shù)分為JVM參數(shù)和Minecraft參數(shù)兩部分。

獲取參數(shù)

運(yùn)行此命令可獲取當(dāng)前運(yùn)行的Minecraft進(jìn)程的參數(shù):

wmic process where caption="javaw.exe" get caption,commandline /value>args.txt

此時args.txt大致有這樣的文件內(nèi)容:

Caption=javaw.exe CommandLine="<javaw或java路徑>" -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump "-Dos.name=Windows 10" -Dos.version=10.0 -Xss1M -Djava.library.path=<natives文件夾路徑> -Dminecraft.launcher.brand=minecraft-launcher -Dminecraft.launcher.version=2.1.3674 -cp <一大串用;分開的文件路徑> -Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M -Dlog4j.configurationFile=<log4j配置文件路徑> net.minecraft.client.main.Main --username <用戶名> --version <游戲版本號> --gameDir <游戲路徑> --assetsDir <資源文件路徑> --assetIndex <資源索引版本> --uuid <用戶uuid> --accessToken <登錄令牌> --userType mojang --versionType release

僅保留CommandLine后的內(nèi)容,然后將該文件后綴改為.bat,雙擊即可啟動Minecraft。

運(yùn)行前注意文件編碼。并注意官方啟動器的解壓出的natives庫文件存儲在臨時文件夾下,可能因刪除導(dǎo)致無法啟動。

JVM參數(shù)

-X、-XX參數(shù)

配置JVM,如GC等:

  • -Xmx1024m?最大堆大小為1024MB

  • -Xmn128m?新生代堆大小為128MB

  • -XX:+UseG1GC?開啟G1

  • -XX:-UseAdaptiveSizePolicy?自動選擇年輕代區(qū)大小和相應(yīng)的Survivor區(qū)比例

  • -XX:-OmitStackTraceInFastThrow?省略異常棧信息從而快速拋出

-D參數(shù)

配置JVM系統(tǒng)屬性,格式為-D<name>=<value>

  • Dos.name=Windows 10 -Dos.version=10.0?當(dāng)前系統(tǒng)名稱及版本

  • -Dminecraft.launcher.brand=minecraft-launcher -Dminecraft.launcher.version=2.1.3674?當(dāng)前啟動器名稱及版本

  • -Dlog4j.configurationFile=<文件路徑>\client-1.12.xml?游戲日志配置文件

  • -Djava.library.path=<natives文件夾路徑>?當(dāng)前系統(tǒng)下游戲運(yùn)行所需的動態(tài)鏈接庫

-cp參數(shù)

全稱為-classpath,后為所有當(dāng)前版本Minecraft的普通庫文件路徑及游戲主文件,中間用;隔開。

Minecraft參數(shù)

以主類名開頭,通常為net.minecraft.client.main.Main,若安裝Mod加載器則一般為net.minecraft.launchwrapper.Launch

參數(shù)通常有:

  • --username?后接用戶名

  • --version?后接游戲版本

  • --gameDir?后接游戲路徑

  • --assetsDir?后接資源文件路徑

  • --assetIndex?后接資源索引版本

  • --uuid?后接用戶uuid

  • --accessToken?后接登錄令牌

  • --userType?后接用戶類型

  • --versionType?后接版本類型,會顯示在游戲主界面右下角

  • 等等,可能因版本而異,具體應(yīng)參考當(dāng)前版本json文件內(nèi)提供的信息。

游戲文件

文件結(jié)構(gòu)大致如下:

列表

  • .minecraft

    • [版本號]

    • [版本號].jar

    • [版本號].json

    • indexes

    • log_configs

    • objects

    • skins

    • [版本號].json

    • client-[版本號].xml

    • assets

    • resourcepacks

    • saves

    • screenshots

    • versions

    • launcher_profiles.json

    • launcher_profiles.json

    • options.txt

以上文件結(jié)構(gòu)經(jīng)過簡化,具體可參考.minecraft頁面。

JSON文件

Minecraft大多數(shù)信息使用JSON文檔存儲管理,使用這些JSON文件可以獲取下載、管理及啟動所需的大部分信息。

版本清單文件

主條目: /version_manifest.json

該文件可以在mojang官方服務(wù)器下載:

https://launchermeta.mojang.com/mc/game/version_manifest.json ??

內(nèi)容通常如下:{ ? ? "latest": { ? ? ? ? "release": "1.14.1", ? ? ? ? "snapshot": "1.14.2 Pre-Release 4" ? ? }, ? ? "versions": [ ? ? ? ? { ? ? ? ? ? ? "id": "1.14.2 Pre-Release 4", ? ? ? ? ? ? "type": "snapshot", ? ? ? ? ? ? "url": "https://launchermeta.mojang.com/v1/packages/f90f601344058a812144eb71a49552b30a70d589/1.14.2_Pre-Release_4.json", ? ? ? ? ? ? "time": "2019-05-24T15:50:42+00:00", ? ? ? ? ? ? "releaseTime": "2019-05-24T15:48:24+00:00" ? ? ? ? }, ? ? ? ? { ? ? ? ? ? ? "id": "1.14.2 Pre-Release 3", ? ? ? ? ? ? "type": "snapshot", ? ? ? ? ? ? "url": "https://launchermeta.mojang.com/v1/packages/48004350162b58ab677efb7db5cc417af13124ef/1.14.2_Pre-Release_3.json", ? ? ? ? ? ? "time": "2019-05-24T15:40:12+00:00", ? ? ? ? ? ? "releaseTime": "2019-05-22T13:12:51+00:00" ? ? ? ? }, ? ? ? ? ... ? ? ] }

其中,latest中為當(dāng)前最新版本,分為發(fā)布版和快照版。versions后為所有可下載的游戲版本,url后為該版本的json文件下載地址。

版本json文件

主條目: /version.json

該文件一般下載后存儲在.minecraft/versions文件夾下,有如下內(nèi)容:

??內(nèi)容通常如下:{ ? ? "arguments": { ? ? ? ? "game": [ ? ? ? ? ? ? "--username", ? ? ? ? ? ? "${auth_player_name}", ? ? ? ? ? ? "--version", ? ? ? ? ? ? "${version_name}", ? ? ? ? ? ? ..., ? ? ? ? ? ? { ? ? ? ? ? ? ? ? "rules": [ ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? "action": "allow", ? ? ? ? ? ? ? ? ? ? ? ? "features": { ? ? ? ? ? ? ? ? ? ? ? ? ? ? "is_demo_user": true ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ], ? ? ? ? ? ? ? ? "value": "--demo" ? ? ? ? ? ? }, ? ? ? ? ? ? ... ? ? ? ? ], ? ? ? ? "jvm": [ ? ? ? ? ? ? { ? ? ? ? ? ? ? ? "rules": [ ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? "action": "allow", ? ? ? ? ? ? ? ? ? ? ? ? "os": { ? ? ? ? ? ? ? ? ? ? ? ? ? ? "name": "osx" ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ], ? ? ? ? ? ? ? ? "value": [ ? ? ? ? ? ? ? ? ? ? "-XstartOnFirstThread" ? ? ? ? ? ? ? ? ] ? ? ? ? ? ? }, ? ? ? ? ? ? ... ? ? ? ? ] ? ? }, ? ? "assetIndex": { ? ? ? ? "id": "1.14", ? ? ? ? "sha1": "702d433ca9a27a2b75dc4e95ac57921a34d82bd3", ? ? ? ? "size": 226168, ? ? ? ? "totalSize": 207233561, ? ? ? ? "url": "https://launchermeta.mojang.com/v1/packages/702d433ca9a27a2b75dc4e95ac57921a34d82bd3/1.14.json" ? ? }, ? ? "assets": "1.14", ? ? "downloads": { ? ? ? ? "client": { ? ? ? ? ? ? "sha1": "f14e1ab15fb7455c81c487b2d82b29773e7cf4f6", ? ? ? ? ? ? "size": 18794301, ? ? ? ? ? ? "url": "https://launcher.mojang.com/v1/objects/f14e1ab15fb7455c81c487b2d82b29773e7cf4f6/client.jar" ? ? ? ? }, ? ? ? ? "server": { ? ? ? ? ? ? "sha1": "631e46624daaf9e8357fcb985e0fce489b020e74", ? ? ? ? ? ? "size": 35932929, ? ? ? ? ? ? "url": "https://launcher.mojang.com/v1/objects/631e46624daaf9e8357fcb985e0fce489b020e74/server.jar" ? ? ? ? } ? ? }, ? ? "id": "1.14.2 Pre-Release 4", ? ? "libraries": [ ? ? ? ? { ? ? ? ? ? ? "downloads": { ? ? ? ? ? ? ? ? "artifact": { ? ? ? ? ? ? ? ? ? ? "path": "com/mojang/patchy/1.1/patchy-1.1.jar", ? ? ? ? ? ? ? ? ? ? "sha1": "aef610b34a1be37fa851825f12372b78424d8903", ? ? ? ? ? ? ? ? ? ? "size": 15817, ? ? ? ? ? ? ? ? ? ? "url": "https://libraries.minecraft.net/com/mojang/patchy/1.1/patchy-1.1.jar" ? ? ? ? ? ? ? ? } ? ? ? ? ? ? }, ? ? ? ? ? ? "name": "com.mojang:patchy:1.1" ? ? ? ? }, ? ? ? ? ..., ? ? ? ? { ? ? ? ? ? ? "downloads": { ? ? ? ? ? ? ? ? "artifact": { ? ? ? ? ? ? ? ? ? ? "path": "org/lwjgl/lwjgl/3.2.1/lwjgl-3.2.1.jar", ? ? ? ? ? ? ? ? ? ? "sha1": "2bb514e444994c6fece99a21f76e0c90438e377f", ? ? ? ? ? ? ? ? ? ? "size": 317748, ? ? ? ? ? ? ? ? ? ? "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.2.1/lwjgl-3.2.1.jar" ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? "classifiers": { ? ? ? ? ? ? ? ? ? ? "javadoc": { ? ? ? ? ? ? ? ? ? ? ? ? "path": "org/lwjgl/lwjgl/3.2.1/lwjgl-3.2.1-javadoc.jar", ? ? ? ? ? ? ? ? ? ? ? ? "sha1": "1f6b7050737559b775d797c0ea56612b8e373fd6", ? ? ? ? ? ? ? ? ? ? ? ? "size": 1287174, ? ? ? ? ? ? ? ? ? ? ? ? "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.2.1/lwjgl-3.2.1-javadoc.jar" ? ? ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? ? ? "natives-linux": { ? ? ? ? ? ? ? ? ? ? ? ? "path": "org/lwjgl/lwjgl/3.2.1/lwjgl-3.2.1-natives-linux.jar", ? ? ? ? ? ? ? ? ? ? ? ? "sha1": "9bdd47cd63ce102cec837a396c8ded597cb75a66", ? ? ? ? ? ? ? ? ? ? ? ? "size": 87484, ? ? ? ? ? ? ? ? ? ? ? ? "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.2.1/lwjgl-3.2.1-natives-linux.jar" ? ? ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? ? ? "natives-macos": { ? ? ? ? ? ? ? ? ? ? ? ? "path": "org/lwjgl/lwjgl/3.2.1/lwjgl-3.2.1-natives-macos.jar", ? ? ? ? ? ? ? ? ? ? ? ? "sha1": "5a4c271d150906858d475603dcb9479453c60555", ? ? ? ? ? ? ? ? ? ? ? ? "size": 39835, ? ? ? ? ? ? ? ? ? ? ? ? "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.2.1/lwjgl-3.2.1-natives-macos.jar" ? ? ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? ? ? "natives-windows": { ? ? ? ? ? ? ? ? ? ? ? ? "path": "org/lwjgl/lwjgl/3.2.1/lwjgl-3.2.1-natives-windows.jar", ? ? ? ? ? ? ? ? ? ? ? ? "sha1": "e799d06b8969db0610e68776e0eff4b6191098bd", ? ? ? ? ? ? ? ? ? ? ? ? "size": 255871, ? ? ? ? ? ? ? ? ? ? ? ? "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.2.1/lwjgl-3.2.1-natives-windows.jar" ? ? ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? ? ? "sources": { ? ? ? ? ? ? ? ? ? ? ? ? "path": "org/lwjgl/lwjgl/3.2.1/lwjgl-3.2.1-sources.jar", ? ? ? ? ? ? ? ? ? ? ? ? "sha1": "106f90ac41449004a969309488aa6e3a2f7d6731", ? ? ? ? ? ? ? ? ? ? ? ? "size": 255671, ? ? ? ? ? ? ? ? ? ? ? ? "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.2.1/lwjgl-3.2.1-sources.jar" ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? }, ? ? ? ? ... ? ? ], ? ? "logging": { ? ? ? ? "client": { ? ? ? ? ? ? "argument": "-Dlog4j.configurationFile=${path}", ? ? ? ? ? ? "file": { ? ? ? ? ? ? ? ? "id": "client-1.12.xml", ? ? ? ? ? ? ? ? "sha1": "ef4f57b922df243d0cef096efe808c72db042149", ? ? ? ? ? ? ? ? "size": 877, ? ? ? ? ? ? ? ? "url": "https://launcher.mojang.com/v1/objects/ef4f57b922df243d0cef096efe808c72db042149/client-1.12.xml" ? ? ? ? ? ? }, ? ? ? ? ? ? "type": "log4j2-xml" ? ? ? ? } ? ? }, ? ? "mainClass": "net.minecraft.client.main.Main", ? ? "minimumLauncherVersion": 21, ? ? "releaseTime": "2019-05-24T15:48:24+00:00", ? ? "time": "2019-05-24T15:48:24+00:00", ? ? "type": "snapshot" }

  • rules

  • 用于可選條目,使用?features判斷并應(yīng)用其?action。

  • arguments

  • 1.13后新增鍵,舊版本為?gameArguments,且不提供JVM參數(shù)及?rules規(guī)則。

  • ${****}

  • 字符串模板,替換相應(yīng)內(nèi)容來使用。

  • assetIndex

  • 當(dāng)前版本的資源文件索引,包含其下載地址等信息。

  • downloads

  • 游戲主文件,分為客戶端及服務(wù)端,包含其下載地址等信息。

  • libraries

  • 游戲所有依賴庫,包含其下載地址等信息。

  • downloads下均含有?artifact鍵,有些含有?classifiers鍵。

    • 只含有artifact鍵的為-cp參數(shù)后所需拼接的路徑,注意path鍵中為不完整路徑,請補(bǔ)全為完整路徑。

    • 含有classifiers鍵的為natives庫,在游戲啟動前將對應(yīng)平臺的含有jar文件解壓至natives文件夾。

  • logging

  • log4j配置文件,包含其下載地址等信息。

  • mainClass

  • 主類名。

資源索引文件

一般存儲于.minecraft/assets/indexes路徑下,用于指示objects文件的信息及其下載地址。

該文件的下載地址等信息存儲在版本json文件中,該文件可能需要不定期更新。

內(nèi)容如下:

{ ? ? "objects": { ? ? ? ? "icons/icon_16x16.png": { ? ? ? ? ? ? "hash": "bdf48ef6b5d0d23bbb02e17d04865216179f510a", ? ? ? ? ? ? "size": 3665 ? ? ? ? }, ? ? ? ? ... ? ? } }

objects文件的下載地址為:

http://resources.download.minecraft.net/<hash的前兩位字符>/<hash>

存儲路徑為:

.minecraft/assets/objects/<hash的前兩位字符>/<hash>

并在.minecraft/assets/virtual/legacy/留下一份拷貝。

啟動器配置文件

主條目: launcher_profiles.json

該文件不是必須的,但它是官方啟動器的配置文件。所以可用于與官方啟動器數(shù)據(jù)互通,以及forge安裝檢驗(yàn)。

最簡單的配置文件為:

{ ? ? "profiles": { ? ? ? ? "(Default)": { ? ? ? ? ? ? "gameDir": "<游戲目錄>", ? ? ? ? ? ? "lastVersionId": "1.14.1", ? ? ? ? ? ? "name": "(Default)" ? ? ? ? } ? ? }, ? ? "selectedProfileName": "(Default)", ? ? 等等亂七八糟的配置 }

profiles為啟動器中創(chuàng)建的所有配置文件。

游戲主文件

通常存儲于.minecraft/versions/<version>/<version>.jar,下載地址等信息存儲在版本json文件中,下載時注意將該文件重命名為對應(yīng)版本號。

依賴庫文件

通常存儲于.minecraft/libraries/路徑下,下載地址等信息存儲在版本json文件中。

普通庫文件

在啟動前需拼接在啟動參數(shù)的-cp參數(shù)后。

natives庫文件

在啟動前需解壓至natives路徑下。

資源文件

通常存儲在.minecraft/assets/objects/,并在.minecraft/assets/virtual/legacy/有一份拷貝。

下載地址等信息存儲在資源索引文件中。

這些文件可能在發(fā)布后更新,留意更新資源索引文件來更新他們。

正版驗(yàn)證

Minecraft自1.6后使用了Yggdrasil驗(yàn)證方法,驗(yàn)證服務(wù)器為:

https://authserver.mojang.com

驗(yàn)證時需要:

  • POST請求

  • Content-Type設(shè)置為application/json

  • 負(fù)載以JSON編碼

若請求成功則返回狀態(tài)碼200及一個JSON文檔。

若失敗則返回錯誤信息:

{ ? ?"error": "錯誤簡要描述", ? ?"errorMessage": "向用戶顯示的長描述", ? ?"cause": "錯誤原因" // 可選的 }

具體錯誤信息可參考https://wiki.vg/ZH:Authentication#錯誤。

驗(yàn)證賬號密碼

  • 后綴:

/authenticate

  • 負(fù)載:

{ ? ?"agent": { ? ? ? ?"name": "Minecraft", ? ? ? ? ? ? ? ?// 默認(rèn)為Minecraft,可選 ? ? ? ?"version": 1 ? ? ? ? ? ? ? ? ? ? ? ?// 未來可能會改(不會) ? ?}, ? ?"username": "mojang用戶名", ? ? ? ? ? ? ?// 可以是郵箱地址或舊版mojang用戶名 ? ?"password": "密碼", ? ?"clientToken": "客戶端標(biāo)識符", ? ? ? ? ? ?// 可選的,用于復(fù)用該值 }

  • 響應(yīng):

{ ? ?"accessToken": "隨機(jī)令牌", ? ?"clientToken": "客戶端標(biāo)識符", ? ?"availableProfiles": [ ? ? ? ?{ ? ? ? ? ? ?"id": "profile identifier", ? ? ? ? ? ?"name": "玩家名" ? ? ? ?} ? ?], ? ?"selectedProfile": { ? ? ? ?"id": "不含-的uuid", ? ? ? ?"name": "玩家名" ? ?} }

(有刪節(jié),參考https://wiki.vg/ZH:Authentication#Authentication)

你可以存儲這個clientToken,用來標(biāo)識這個客戶端。

此處獲取的uuidaccessToken即為啟動參數(shù)中所需的,傳入你剛剛獲得的值,啟動游戲后便能發(fā)現(xiàn)已顯示正版皮膚,即完成了正版登錄。

檢驗(yàn)令牌有效性

accessToken具有有效期,可能因?yàn)橐恍┰蚴?。你可以發(fā)送請求,驗(yàn)證當(dāng)前accessToken是否還是有效的.

  • 后綴:

/validate

  • 負(fù)載:

{ ? ?"accessToken": "valid accessToken", ? ?"clientToken": "associated clientToken" //可選的 }

  • 響應(yīng):

如果狀態(tài)碼為204 No Content則有效,而403 Forbidden為已失效。

刷新令牌

刷新一個accessToken,用于保持用戶在游戲會話之間登錄。

  • 后綴:

/refresh

  • 負(fù)載:

{ ? ?"accessToken": "valid accessToken", ? ?"clientToken": "associated clientToken" //可選的 }

  • 響應(yīng):

{ ? ?"accessToken": "隨機(jī)令牌", ? ?"clientToken": "客戶端標(biāo)識符", ? ?"availableProfiles": [ ? ? ? ?{ ? ? ? ? ? ?"id": "profile identifier", ? ? ? ? ? ?"name": "玩家名" ? ? ? ?} ? ?], ? ?"selectedProfile": { ? ? ? ?"id": "不含-的uuid", ? ? ? ?"name": "玩家名" ? ?} }

(有刪節(jié),參考https://wiki.vg/ZH:Authentication#Refresh)

與“驗(yàn)證賬號密碼”中相同。

啟動游戲

  1. 首先必須保證啟動參數(shù)中出現(xiàn)的所有文件及提供的資源索引文件中的object文件都存在且未被損壞。

  2. 選定一個natives路徑,可以自由選定,也可像官方啟動器一樣使用臨時路徑。將natives庫文件解壓至該路徑,并將該路徑使用-Djava.library.path=傳入游戲。

  3. 完成正版驗(yàn)證,得到uuid及accessToken

  4. 拼接啟動參數(shù),創(chuàng)建游戲進(jìn)程

  5. 處理游戲輸出及游戲錯誤

支持forge等Mod加載器

運(yùn)行forge等Mod加載器的安裝包后,可以發(fā)現(xiàn):

  • 啟動器配置文件中添加了一條新安裝的配置

  • .minecraft/libraries/文件夾中多了一些文件

  • .minecraft/versions/文件夾中多了一個版本json文件(也可能會有jar文件)

額外的版本json文件

該文件相比原版的版本json文件文件多了inheritsFromjar鍵,而且其他鍵內(nèi)容明顯是不完整的。

  • inheritsFrom

  • 該參數(shù)指定了當(dāng)前版本所繼承的原版版本,意思為除此 版本json文件外,同時使用?inheritsFrom中指定的 版本json文件內(nèi)容。即,?-cp參數(shù)后同時包含兩個 版本json文件指定的 普通庫文件,且 natives庫文件也同時包含兩個 版本json文件指定的,且該 版本json文件優(yōu)先于原版 版本json文件。

  • jar

  • 該參數(shù)指定了?-cp參數(shù)后的 游戲主文件。

  • 除此之外, 版本json文件中的?libraries鍵的格式也有些不一樣了,如:

{ ? "name": "org.ow2.asm:asm-all:5.0.3", ? "serverreq": true }, { ? "name": "jline:jline:2.13", ? "url": "http://files.minecraftforge.net/maven/", ? "checksums": [ ? ? "2d9530d0a25daffaffda7c35037b046b627bb171" ? ], ? "serverreq": true, ? "clientreq": false }

不再有downloads鍵了,只剩下nameurl,文件路徑及下載路徑需要根據(jù)一定規(guī)則拼接。

name鍵的格式為:

<package>:<name>:<version>

我們將它變形重組一下:

<package>/<name>/<version>/<name>-<version>.jar

前方接上.minecraft/libraries/即為文件路徑,而接上url的內(nèi)容即為下載地址。

serverreqclientreq用于區(qū)分客戶端和服務(wù)端的需要。

優(yōu)化下載

有時,在官方服務(wù)器下載文件會很緩慢,這時可以考慮使用第三方鏡像下載。

當(dāng)前常用的第三方鏡像有:

  • BMCLAPI

另外,Minecraft的依賴庫文件和資源索引文件很多為小文件,可以考慮使用多線程下載來優(yōu)化速度。

皮膚管理

皮膚管理需要使用Mojang API:

api.mojang.com

可通過發(fā)送GET請求獲得Mojang API的狀態(tài):

https://status.mojang.com/check

獲取皮膚及披風(fēng)

可通過發(fā)送GET請求獲得皮膚及披風(fēng)地址:

https://sessionserver.mojang.com/session/minecraft/profile/<uuid>

  • 響應(yīng):

{ ? ?"id": "<配置標(biāo)識符>", ? ?"name": "<玩家名>", ? ?"properties": [ ? ? ? ? { ? ? ? ? ? ?"name": "textures", ? ? ? ? ? ?"value": "<base64字符串>" ? ? ? ?} ? ?] }

解碼該base64字符串,可獲得另一JSON文檔:

{ ? ?"timestamp": <java time in ms>, ? ?"profileId": "<配置uuid>", ? ?"profileName": "<玩家名>", ? ?"textures": { ? ? ? ?"SKIN": { ? ? ? ? ? ?"url": "<玩家皮膚URL>" ? ? ? ?}, ? ? ? ?"CAPE": { ? ? ? ? ? ?"url": "<玩家披風(fēng)URL>" ? ? ? ?} ? ?} }

更換皮膚

發(fā)送POST請求至:

https://api.mojang.com/user/profile/<uuid>/skin

  • 頭:

Authorization: Bearer <access token>

  • 負(fù)載:

model=<""/"slim">&url=<皮膚url>

空字符串為Steve模型,“slim”為Alex模型。

上傳皮膚

發(fā)送PUT請求至:

https://api.mojang.com/user/profile/<uuid>/skin

  • 頭:

Authorization: Bearer <access token>

  • 負(fù)載:

由兩部分組成:

  • model:人物模型,空字符串為Steve模型,“slim”為Alex模型。

  • file:原始圖像文件數(shù)據(jù)

重置皮膚

發(fā)送DELETE請求至:

https://api.mojang.com/user/profile/<uuid>/skin

  • 頭:

Authorization: Bearer <access token>

還好我學(xué)過java??


教程/編寫啟動器的評論 (共 條)

分享到微博請遵守國家法律
泸州市| 福贡县| 新邵县| 龙南县| 辽宁省| 太原市| 彭阳县| 皋兰县| 横山县| 济宁市| 酉阳| 驻马店市| 浪卡子县| 迁安市| 礼泉县| 天祝| 陇西县| 湛江市| 明溪县| 荣昌县| 理塘县| 军事| 新河县| 维西| 滦平县| 海南省| 黄浦区| 达尔| 青冈县| 镇原县| 乌拉特后旗| 浑源县| 涡阳县| 开化县| 嘉禾县| 普陀区| 福海县| 麟游县| 绥江县| 九龙城区| 常宁市|