Bukkit插件開發(fā)教程 - 序章

序章

歷史:

以下歷史也許會出現(xiàn)錯誤,可以當做故事來看,與教程無太大關系

眾所周知在 Minecraft 早期時的多人游戲是只有一個 minecraft_server.jar 的端的,而它并不能滿足服主們的需求,只有少數(shù)服主可以通過第三方修改,因為它是被混淆
并且這個端的內部代碼寫得并不是很好,因為它是由 Notch 一個人完成的

那么既然服主有需求那就有了"市場"所以在早期的Minecraft社區(qū)就出現(xiàn)了幾次較大的"變革"


hMod(Mod向):

hMod是由一個叫 hey0 的大佬制作出來的,也就是那時候所說的hey0端
hMod的原理呢其實就是反混淆,將混淆過的代碼,反混淆成可讀的代碼,所以在服務器加入自己的原創(chuàng)內容,就沒有這么困難了...

這里我們可以把hMod理解為一個Wrapper,將我們的代碼"翻譯"成官方端的代碼

hMod.png

但事情永不可能這么順心如意,不久之后hey0就棄坑了


Bukkit:

既然hey0棄坑了就有第二人接坑,而這個人就是現(xiàn)在被Mojang"收購"的大佬 —— Dinnerbone,并且叫上了幾個志同道合的朋友推翻重做,將其反混淆(人工),并且做出了一個叫做BukkitAPI的東西,這一重做就是我們現(xiàn)在熟知的Bukkit,但是雖然是反混淆,但是還是有部分的字段,方法沒有反混淆,還是a,b,c...之類的類名 —— 來源 Bukkit About Us
我們來了解一下Bukkit給我們都做了些什么

Bukkit.png

Bukkit制作當中出現(xiàn)的一些問題(2012-2013)

Bukkit 時代看似輝煌,但實際上有不少隱患出現(xiàn):

  • Bukkit 本身的衰落。
    2012 年 2 月,Bukkit 的開發(fā)團隊(Dinnerbone,EvilSeph,Grum,Tahg)收到來自 Mojang 的 offer,于是欣然應邀加盟 Mojang;作為條件,他們不能再開發(fā) Bukkit,而是負責開發(fā)新版本的 SMP(多人聯(lián)機) 和其他與 Minecraft 有關的工作,比如編寫 Plugin API。
    Dinnerbone 和 Grum 這兩位可以說是對整個 Bukkit 計劃貢獻最大的人,反編譯和反混淆由 Grum 全權負責,然后 Dinnerbone 則接過代碼坐在電腦桌前除了上廁所外不停歇地碼上二三十個小時,為的就是以最快的速度將新版本的 Bukkit API 和 CraftBukkit 呈現(xiàn)在大眾面前。如今他們走了,雖然有人接班,但是他們都沒有了 DinnerboneGrum 的那份旁人難以理解的激情,更新對他們來說更像是一份義務而不是責任。這也不能怪他們,但伴之而來的就是 CraftBukkit 的更新越來越慢,當初兩天就能更新完,現(xiàn)在要花上兩個月;而Bukkit 在 1.5 后鮮有再加入新的 API,意思就是上文提到的“翻譯”活越來越少人肯去做,導致許多 SMP(多人聯(lián)機) 的新功能都無法單純地利用 Bukkit API 實現(xiàn),必須還得配合之前提到的那種直接修改源代碼的蛋疼方法...

  • 收費泛濫
    服務器們收費的方式推陳出新,以 Hypixel 為例,VIP 出完了出 VIP+ 之后又推出 MVP...

  • 版權問題
    CraftBukkit 內置了 Minecraft 反編譯過后的源代碼,無形中已經侵犯了 Mojang 的版權;而 Bukkit 采用的是 GPL 協(xié)議...

Spigot!

自從原開發(fā)團隊離去后,先不提越來越慢的更新和越來越落后的 BukkitAPI,CraftBukkit 的性能也飽受詬病。許多人都自己私下制作了 CraftBukkit 的優(yōu)化版本,當時最出名的是 CraftBukkit++,著重優(yōu)化了農作物生長的部分,能顯著提高 TPS ,但是每個優(yōu)化版本都只是優(yōu)化了一小部分,這個優(yōu)化通訊,這個優(yōu)化實體,這個優(yōu)化 AI,這個優(yōu)化地圖加載...

那么有沒有一款包含所有優(yōu)化的 CraftBukkit 呢? 有!
就是由

md_5_64px.png

md_5 開發(fā)的 Spigot

Spigot 是個"強化版"的 CraftBukkit,只要換上它你的服務器立刻流暢幾倍,提供的 API 和配置文件都更豐富,并且完全開源免費。


開發(fā)前的準備:

那我們有了一個初步的概念之后我們就來講講關于Java的東西吧
眾所周知Minecraft是用Java語言進行開發(fā)的,并且BukkitAPI也是用Java語言來開發(fā)的,所以在學習之前你需要了解以下Java知識

  • Java基礎語法,與部分基礎知識 如if,基本數(shù)據(jù)類型,try catch等…
  • 面向對象思想
  • YAML語法
  • JSON語法 (非必須)
  • 集合類的使用(Collection類和Map類等)
  • 反射(非必須)
  • SQL語法(非必須)

服務端的選擇

這里我列舉一些常見的服務端,它們各有各的好處,在這里我就不一一列舉了

單服服務端

  • minecraft_server
  • craftbukkit
  • spigot (Recommended)
  • PaperSpigot
  • TacoSpigot
  • TorchSpigot
  • GlowStone

Bungee服務端

  • BungeeCord
  • WaterFall (Recommended)
  • FlexPipe

本文開發(fā)環(huán)境

本文的開發(fā)環(huán)境如下

  • spigot-1.10.2-R1.jar
  • jdk-1.8.0_77

本書為了面向廣大開發(fā)者決定使用以下兩種IDE進行開發(fā)

  • IntelliJ IDEA
  • Eclipse (可能要涼)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容