Spigot編譯流程

相關文檔

使用說明

使用gitbash打開當前目錄,輸入java -jar BuildTools.jar --rev 1.8,這里的1.8可以替換成其它版本,如1.10,1.10.2等。

流程一,下載代碼

  • 克隆git代碼bukkitbukkit 目錄
  • 克隆git代碼craftbukkitcraftbukkit 目錄
  • 克隆git代碼spigotSpigot 目錄
  • 克隆git代碼buildataBuildData 目錄
  • 下載maven工具
  • 從服務器上查詢命令行中指定的rev對應的各代碼庫的分支,如
Attempting to build version: '1.8' use --rev <version> to override
Found version
{
    "name": "1.8",
    "description": "Backport of fixes from 1.8.3",
    "information": "Last build of Spigot 1.8.0. To update please see http://www.spigotmc.org/",
    "warning": "***** Please ensure your BuildTools is at least #35 *****",
    "refs": {
        "BuildData": "0630ea462a82fdbd93018de7d5ec5e9d3b3c732b",
        "Bukkit": "1d2509b99fb10b3bd6f597e63805f85b49d5a055",
        "CraftBukkit": "7019900e276b7c9f6e940debf8529094c7f4da0c",
        "Spigot": "550ebace4b43adc73854d7d5976e1343eba6fb98"
    }
}
  • 將4個文件夾中的代碼更新到指定標簽

目錄說明

BuildData

反編譯工具及反編譯minecraft使用的代碼映射。

CraftBukkit

對minecraft server的魔改,改善性能,并支持插件等。

Bukkit

Bukkit是服務器插件編程接口,封裝不同版本minecraft server的細節,統一接口,便于開發插件。

Spigot目錄

spigot服務器是一個改良服務器,在文件夾里是兩個補丁目錄,CraftBukkit-Patches存放對craftBukkit代碼的補丁,Bukkit-Patches存放對Bukkit代碼的補丁。

流程二,下載minecraft server并反編譯

  • 下載純凈版本minecraft服務器jar包(此處應有梯子)。
Attempting to build Minecraft with details: VersionInfo(minecraftVersion=1.8, accessTransforms=bukkit-1.8.at, classMappings=bukkit-1.8-cl.csrg, memberMappings=bukkit-1.8-members.csrg, packageMappings=package.srg, minecraftHash=null, decompileCommand=null, serverUrl=null)
Starting download of https://s3.amazonaws.com/Minecraft.Download/versions/1.8/minecraft_server.1.8.jar

如果下載不下來,也可以迅雷下載后直接放在work目錄中,如果已經存在,則會提示:
Found good Minecraft hash (5b19d1a562a8a7c5f9a787ad96c8148b)
Found good Minecraft hash (5b19d1a562a8a7c5f9a787ad96c8148b)

  • 反編譯代碼
Final mapped jar: work\mapped.8eb82bde.jar does not exist, creating!
Loading mappings
Loading mappings
1 packages, 0 classes, 0 fields, 0 methods
INFO: merging AccessMap net/minecraft/server/CraftingManager/recipes from AccessChange(clear=16, set=0, vis=1) with AccessChange(clear=0, set=0, vis=1)
INFO: merging AccessMap net/minecraft/server/PropertyManager/properties from AccessChange(clear=0, set=0, vis=1) with AccessChange(clear=0, set=0, vis=1)
INFO: merging AccessMap net/minecraft/server/TileEntityBrewingStand/items from AccessChange(clear=0, set=0, vis=1) with AccessChange(clear=0, set=0, vis=1)
INFO: merging AccessMap net/minecraft/server/WorldServer/tracker from AccessChange(clear=16, set=0, vis=1) with AccessChange(clear=0, set=0, vis=1)
INFO: merging AccessMap net/minecraft/server/WorldManager/world from AccessChange(clear=0, set=0, vis=1) with AccessChange(clear=0, set=0, vis=1)
Remapping final jar
  • 將minecraft-server的class文件釋放到work目錄下的decompile-xxxxxxxx目錄的classes子目錄。
  • 根據map文件,將釋放的class文件,反編譯到work目錄下的decompile-xxxxxxxx中。
  • 將生成的java文件,編譯并生成minecraft-server-1.8-SNAPSHOT.jar到mvn的代碼倉庫目錄
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-install-plugin:2.4:install-file (default-cli) @ standalone-pom ---
[INFO] Installing D:\mc\spigotmc_build\work\mapped.8eb82bde.jar to D:\repo\repository\org\spigotmc\minecraft-server\1.8-SNAPSHOT\minecraft-server-1.8-SNAPSHOT.jar
[INFO] Installing C:\Users\terry\AppData\Local\Temp\mvninstall1056450265315348368.pom to D:\repo\repository\org\spigotmc\minecraft-server\1.8-SNAPSHOT\minecraft-server-1.8-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
extract ....*.class
Decomiling ***.java
Applying CraftBukkit Patches
  • 應用代碼補丁
Applying CraftBukkit Patches
Patching with BiomeDecorator.patch
Patching with BiomeTheEndDecorator.patch
  • 并各種文件夾合并,將Bukkit和CraftBukkit的代碼都checkout一份到Spigot目錄。

流程三,編譯代碼

  • 編譯Bukkit和CraftBukkit,并且都輸出到Maven本地倉庫。
  • 將Bukkit和CraftBukkit的代碼check out到Spigot中的Spigot-API和Spigot-Server,然后分別打上補丁(Bukkit-Patches和CraftBukkit-Patches)。
Rebuilding Forked projects.... 
From file:///D:\mc\spigotmc_build\Bukkit
 * [new branch]      spigot     -> origin/spigot
HEAD is now at 1d2509b Revert finite checks in locations. Fixes SPIGOT-628 and others
Cloning into 'Spigot-API'...
done.
Resetting Spigot-API to Bukkit...

...

HEAD is now at 36052f0 CraftBukkit $ Fri Aug 04 14:37:11 CST 2017
Cloning into 'Spigot-Server'...
done.
Resetting Spigot-Server to CraftBukkit...
  • 編譯輸出 craftbukkit-1.8.jar 和 spigot-1.8.jar 等
Success! Everything compiled successfully. Copying final .jar files now.
Copying craftbukkit-1.8-R0.1-SNAPSHOT-remapped.jar to D:\mc\spigotmc_build\.
  - Saved as craftbukkit-1.8.jar
Copying craftbukkit-1.8-R0.1-SNAPSHOT.jar to D:\mc\spigotmc_build\.
  - Saved as craftbukkit-1.8.jar
Copying spigot-1.8-R0.1-SNAPSHOT-remapped.jar to D:\mc\spigotmc_build\.
  - Saved as spigot-1.8.jar
Copying spigot-1.8-R0.1-SNAPSHOT.jar to D:\mc\spigotmc_build\.
  - Saved as spigot-1.8.jar
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,836評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,778評論 25 708
  • 今年的春天已來了近二十天了,氣溫確暖和得多了。隨著年歲的增長,對身邊的事物似乎不再那么敏感,想要寫一篇作文,卻不知...
    混吃等死大王閱讀 229評論 0 0
  • 獨處的時候 世界仿佛一下子安靜了 我聽見書架上空鳳在呼吸 聽見遠方行人歡笑的回音 獨處的時候 還是會想起你 想起...
    有些像你閱讀 164評論 0 2