LV. 27
GP 128

【教學】如何將 SMP Mod port 到 bukkit (圖片影片已補齊)

樓主 黑暗殺手X kk6
GP45 BP-
(想了很久不知道要放哪個分類.... 最後只好選 bukkit)
文章也同時發布於我的 Blog

1.2.5 的參考這篇:【心得】SMP Mod Port Bukkit 1.2.5 教學

另外有補充教學會放於此,遇到問題可以參考看看:
補充教學 Part 1

首先先來說明一下,要把 SMP Mod  port 到 bukkit 所需要的工具有哪些:

1. 最新版本的 MCP => 請到 MC Coder Pack 下載,找 release  (或者直接下載 v5.6)
2. 準備乾淨的官方 Server => 請到這裡下載 (下載 minecraft_server.jar )
3. 準備乾淨的 bukkit server => here (注意:目前更新到 1.1 R3,不過我是用 1.1 R1  的版本)
4. 下載 ModLoaderMP for 官方 Server 1.1 => here
5. 下載 ModLoaderMP for bukkt 1.1 => here
6. 下載 Mapping file for bukkit 1.1 => here
7. 準備有基本 java 知識的頭腦或者基本 eclipse 使用的頭腦
8. 需要安裝 JDK 或者 Eclispe 等 java 開發工具

(PS : 這裡是 craftbukkit-1.1-R1 的載點,如果有需要請取用)

要注意的是 2 和 4 的版本要相符, 3 5 6 的版本也要相符
目前 bukkit 的版本號更新到 #1846 但是我不敢更新,因為不知道能不能用
#1818  的  ModLoaderMP  和 Mapping file...
#1846 Mapping file 一樣,不過 ModLoader 要抓 for #1846 的
最後 7 如果沒辦法找到或者借到的話,會比較辛苦一點點:3

到這邊你應該會有這些檔案:
mcp56.zip
minecraft_server.jar
craftbukkit-1.1-R1.jar
ModLoaderMp 1.1 v2.1 Server.zip (這是 for 官方的)
modloadermp-b1.1R1.zip(這是 for bukkit 的)
mappings_bukkit_1.1.tar.gz

最後當然是準備你需要 port 的 Mod  啦,這邊就已 Backpack 為例子
所以還會有一個 Backpack_SERVER_1-1-0_v2-2.zip



接著準備開始要進行 Porting 了~~
先給大家參考原文資料,如果看不懂我所說的,可以參考原文 (Original tutorial by krnlyng 那邊)
另外上述這些檔案在 porting 的時候,建議都先有個備分會比較好。

對於任何步驟有問題歡迎提出來討論


DEMO 影片
原本後面打算放到 bukkit  裡面 run 的,但後來還是算了



圖片建議是要看在點開,不然可能會很亂

【Step 1】
將 mcp 解壓縮到一個目錄,底下稱作 mcp/
PS : 每 Port 一個新的 Mod ,請準備另一個 mcp/ 資料才不會混到


【Step 2】
mappings_bukkit_1.1.tar.gz 裡面的三個 .csv 檔案,解壓縮到
mcp/conf/ 底下,取代原本的檔案




【Step 3】
用 WinRAR  或者 7-zip 開啟
minecraft_server.jar 並將 ModLoaderMP(for 官方)
以及要安裝的模組(Backpack_SERVER_1-1-0_v2-2.zip) 給安裝好,安裝方式就是
也用 WinRAR 或 7-zip 打開這兩個檔案,把裡面的東西都覆蓋掉原本 minecraft_server.jar
裡面的檔案。




【Step 4】
修改過的
minecraft_server.jar 放到 mcp/jars/ 裡面





【Step 5】
執行 mcp/ 底下的 decompile.bat ,中途出現甚麼訊息都不用管他
(ERROR 還是甚麼的 都不要理他)
等到「按任意鍵繼續」的字樣出現表示完成
這時會看到在 mcp/ 底下多出了一個 src/ 的目錄



【Step 6】
mcp/src/ 裡面(實際上應該是 mcp/src/minecraft_server/net/minecraft/src/)
裡面會有一堆 .java 的檔案
找出這個 Mod 所屬的檔案,這邊的例子,就是找出:
BackpackInventory.java
BackpackItem.java
BackpackUtils.java
mod_Backpack.java
這四個檔案。
將這幾個檔案複製出來(假設我複製到一個叫做 porting/ 的目錄)



PS: 如果你要 Port 的 Mod 有動到原本 server  內的檔案,請想辦法找出來
並參考後面的敘述(Step A)


【Step 7】
複製 craftbukkit-1.1-R1.jar 到 porting/ 底下,並且對這個 craftbukkit-1.1-R1.jar
安裝 ModLoaderMP for bukkit,安裝方式應該不用再贅述了吧
(這邊先把安裝好 ModLoaderMP 的 bukkit  檔案稱為
craftbukkit-1.1-Moded.jar)



【Step 8】
把 porting/ 底下的所有 .java  檔案中,所有的 net.minecraft.src 取代成
net.minecraft.server




【Step 9】
在 porting/ 底下建立一個 compile.bat 的檔案,並用文字文件開啟他,輸入:
javac -cp craftbukkit-1.1-Moded.jar -d ./ *.java
並存檔





【Step 10】
這邊是最困難的部分,通常一個 Mod 在做完上述動作後,在編譯上會出問題。
現在請執行 compile.bat 這個檔案,並查看是否有錯誤訊息出現
如果有請想辦法修正,如果沒有就恭喜你了
以這個 Mod 為例子,第一次編譯的時候出現這個錯誤:

這個表示BackpackInventory.java 沒有實作一個叫做 getContents() 的方法,去查 IInvetory.java
後得知,要這樣修改,在這個BackpackInventory.java 加入:


第二次編譯又出現問題:

(為什麼知道要這樣改.... 就是靠知識和經驗了)
找到檔案中的 43 , 90 行,IOException 改成 Exception:


最後編譯就成功了:



【Step 11】
如果編譯成功,會在 porting/ 底下看到一個 net 的資料夾,這整個資料夾就是
port 成功的 Mod。
至於要怎麼用我想大家應該就知道了。



【Step 12】
將 port  好的 Mod 安裝到你的 bukkit 上面,看看是否會有問題
如果沒問題,就恭喜你成功了~






如果用到底下步驟,那成功率就會降低了
因為底下步驟需要的技能等級稍微高一點點

【Step A】
如果你要 port 的 Mod 裡面有類似 aa.class , wz.class 這種檔案的話
就表示有動到 Server 本身的檔案 (給學過 java 的人:程式被混淆器包裝過)
如果有的話,要先找出這些的原是檔名是甚麼,在 decompile 後必須
也要找到他。

【Step B】
找到檔案後,也要找出和原本的檔案哪裡不同( 指 code 的部分)

【Step C】
確認 ModLoader for bukkit 是否也有動到這些檔案
  ﹝Yes﹞一併把 ModLoader for bukkit 的那個檔案 decompiler
      把 code 有修改過的地方改寫進去,一併編譯
  ﹝No﹞直接抓出來放到 porting/ 底下待編譯

       
45
-
LV. 27
GP 146
2 樓 黑暗殺手X kk6
GP0 BP-
補充教學:

如果下載的是 1.1 R3 (craftbukkit#1846) 的版本,因為官方 Server 並沒有改變
可以直接把 1.1 R1(#1818) 修改除錯好的 .java 拿來重新編譯即可
只要進行底下步驟:

【Step1】
複製所有修改好的 source code 到另一個資料夾
底下工作都在這個資料夾中進行

【Step2】
下載 craftbukkit 1.1 R3.jar,以及 for R3 的 ModLoaderMP (Download Here)
把剛下載的 R3 也複製到資料夾中,並用新版的 ModLoaderMP 進行 Mod

【Step3】
編譯的時候,指令 -jar 後面改成這個修改過的 R3.jar 檔案
重新編譯即可得到 for R3 的版本。

接著就是測試是否正常,如果有問題就一樣在修改即可。


或者在 port 的時候直接用 1.1-R3 的版本來進行 port,如果這樣,那
bukkit Server 要下載 1.1-R3,而 ModLoaderMP for bukkit 也下載 for 1.1-R3
,其他都不變,這樣就可以了。
0
-
板務人員:

1334 筆精華,前天 更新
一個月內新增 6
歡迎加入共同維護。


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】