[爆卦]protocollib教學是什麼?優點缺點精華區懶人包

為什麼這篇protocollib教學鄉民發文收入到精華區:因為在protocollib教學這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者fufu8aa (run-man)看板Minecraft標題Re: [問題] 循序漸進的MOD製...


先說結論

交互地圖製作建議使用插件來製作
選擇spigot較佳
相較Sponge使用Spigot能查到的資料也較多
如果有要裝模組增加遊戲耐完度
Sponge是你唯一的選擇

要使用模組還是插件,容我來科普一下 -_-

模組一般來說是指Forge的mod,大致上做幾件事:
1.利用MCP(Mod Coder Pack)將Minecraft的程式碼反混淆(否則被混淆的程式跟本看不懂)

2.製作Forge的API,最簡單的作法是把原是Private的Class改成Public讓開發者能呼叫。
3.協同不同模組同時運作

還有很多如提供進階的3D模型API、設定檔讀寫、多人連線的物品ID編碼等。

製作模組主要是透過修改遊戲程式來新增物品、加入特殊效果。由於Forge也能操作
官方伺服器的API,所以插件能做的事都辦的到。

那麼會有人說,Forge那麼屌幹嘛還要插件?原因很簡單,因為根據前面提到的第2點,Fo
rge極度依賴原版麥塊,一旦出新版麥塊就必須等MCP更新來重新反混淆,才能做接下來的
事。哪天Mojang不開心改API工程會變得相當耗大。這就是為什麼麥塊改版後模組要修改
的原因。

為了避免這種悲劇重演,有一群人決定開發一套伺服端的API如Bukkit。這個API的規劃完
全是以插件開發者的角度去規劃,不像Forge總是依賴原版。
它的目的是要讓這個API不管原版改版幾次,我都要維持不變,變的只是實作方式(插件開
發者不需理會)。由於這個API只用在伺服,所以涵蓋範圍僅限於屬性修改、事件偵測,沒
辦法無中生有新的物品。也有些人可能會問,有些插件明明升級後也不能用啦。這是因為
Bukkit所提供的API沒辦法滿族插件開發者的需要,像是操作物品nbt標籤就必須使用nms(
net.minecraft.server)直接操作麥塊伺服的實作包不被bukkit所支援,因此原版升級往
往就必須跟著更新。

目前bukkit有個插件叫作protocollib,它能夠直接對封包進行操作,讓以前往往要利用n
ms的機會減少許多,也可以做出一些以前要模組才能做的事,像是改變皮膚、完全隱身(
非藥水)。

假如我想要裝插件也裝模組?早期有開發者做出MCPC,讓bukkit伺服能裝模組。主要是利
用mapping的方式,把Bukkit的API對應到Forge的API來實現,缺點是因為以不同方式使用
Craftbukkit(bukkit的實作),所以用到nms的插件常常會出問題。

當時要用mcpc還必須走一項程序叫作port。要安裝的模組要進行反編譯,修正反編譯後程
式的錯誤後,再透過程式轉換才能使用,相當繁瑣。熱門模組有好心人幫忙,冷門模組只
能摸摸鼻子自己來。後來大神開發了MCPC+,讓port走向歷史,過了一段時間改名為Cauld
ron。

這時期發生了一個重大事件。這起事件導火線是Mojang強迫服主簽署DULA(Minecraft E
nd User License Agreement 使用者終端協議)。詳細條文自行上網查。主要爭議點是服
主不能向玩家販賣VIP使之和未購買的玩家有功能上差異(能飛、多錢、多指令…),引起B
ukkit團隊罷工,決定不幹了。

只是這樣其實還好,有原始碼誰都可以繼續做。問題是有個貢獻非常多的Bukkit開發者指
控craftbukkit裡的程式碼違反DCMA,因為使用了原版伺服程式碼(反混淆出來也算)。官
方不承認,等同於
他是抄craftbukkt,基於GPL協議,原版伺服要公開原始碼。基於商業公司不可能這麼做
,想當然craftbukkit就被封了。才剛出道沒多久的Cauldron也因此中
槍。

事件之後,照理講加強版Bukkit的Spigot也不能存在。之所以能存活,是因為之後的版本
改採用patch的形式發佈。有用過git應該都知道patch是什麼,就是一種告訴你原始程式
碼哪邊加幾行,哪邊刪幾行的文字檔。單獨存在的patch完全不能成為能用的程式,因此
算是遊走法律邊緣吧。

Cauldron消失後,模組插件服也不復存在。於是一群從Bukkit和Cauldron來的開發者決定
發起Sponge專案,這個專案的API也是全新打造,而實作則是利用現有的Forge。目標是打
造合法的插件、插件模組服。經過長時間的開發目前已經進入beta階段。由於Spigot的存
在,使得Sponge的角色變得尷尬,儘管新的API提供很先進的特性,克服不少舊有的弊病
,但要把bukkit插件移植到Sponge這樣差異極大的API本身就是件大工程,插件開發者又
不想同時維護兩個專案,導致能用插件少的可憐。

個人的伺服因為有裝模組卡在1.7.10也就是Cauldron所支援的最後一版。之後會希望能轉
到Sponge上,可惜插件實在太少,許多Spigot上的插件沒辦法取代,偶爾換換模組維持新
鮮度這樣。

手機排版請見諒

※ 引碼述《KanoLoa (卡)》之銘言:
: 各位前輩大大好,我因為舍弟的緣故,最近才關注到這款熱門的遊戲。
: 經過短暫的搜尋資料,決定拿MC做些小遊戲地圖分享給家人朋友玩。(還可配VR)
: 因本身是資訊工程背景出身,工作上也有遊戲設計等經驗。
: 雖然直接在Unity平台作遊戲也可以很快達到作遊戲的目的,
: 可我發現年紀小的弟妹特愛MC,我想可能是這種視覺風格對小孩子有更特別的魔力。
: 竟然如此,不如來好好鑽研下MineCraft!
: 目標是: 1.架服(Windows)
: 2.製作可與玩家多交互型的地圖 (例如簡易塔防)
: 所以來請求各位大大可否給予我一些建議,
: 讓我能知道從哪邊開始收集資料學習教程,比較能有效率與系統的達成目的。
: 目前我所知道的地圖製作方式,有指令方塊與直接製作MOD。
: *還有伺服器插件
: 依理解,對我來說可能是寫MOD會比較貼近個人之前的開發習慣。
: 就即不使用指令方塊與紅石的交互,純寫MOD來開發地圖(或搭配使用更好?)
: 比如延遲一秒的指令,比起紅石機關觸發,我會覺得用coding下延時好像更直接點。
: 那麼,想請問製作MOD可以從哪邊開始呢?直接就架站,開始改JAVA?
: 或是應該從指令開始理解,慢慢摸熟整個MC系統。教學資源看哪邊比較好呢?
: 還望前輩們能給予小弟一些建議,非常感謝 m(_ _)m

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.167.15.186
※ 文章網址: https://www.ptt.cc/bbs/Minecraft/M.1486237717.A.82E.html
※ 編輯: fufu8aa (118.167.15.186), 02/05/2017 04:09:04
error405: bukkit開發者指控bukkit違反dmca mojang卻回說我們擁有b 02/05 07:39
error405: ukkit 這才真是經典02/05 07:39
error405: 過沒幾天又發消息說麥塊被微軟買了 好個動盪的年代02/05 07:44
※ 編輯: fufu8aa (36.227.247.213), 02/05/2017 08:26:48
emptie: 感謝。那段歷史我實在看不太懂 02/05 14:27
emptie: 現在清楚許多了… 02/05 14:27
emptie: 所以spigot要自己編譯的原因就在這裡…嗎? 02/05 14:27
對,如果Spigot把編譯好的檔案放到他們的官網上,就要有被抄掉的心理準備
eight0: 推推 02/05 16:08
※ 編輯: fufu8aa (122.116.148.237), 02/05/2017 19:42:34

你可能也想看看

搜尋相關網站