Skip to content

Latest commit

 

History

History
56 lines (31 loc) · 3.14 KB

1-2.md

File metadata and controls

56 lines (31 loc) · 3.14 KB

1-2 Bukkit 的二次呼吸

Bukkit的诞生

最开始只有 Minecraft 原版服务端,各个世界千篇一律,玩家玩着玩着都开始无聊打哈欠了……

于是,Bukkit 出现了,试图改变这一现状。

这里借用一个我之前看到的很恰当的比喻:

Mojang 制造的 Minecraft 原版服务端,可以把它想象成一个盒子,你在外面是不知道它怎么工作的。

后来一个叫 Bukkit 的人看不下去了,在盒子上面戳了一个洞,允许开发者把一些东西塞进去,塞进去的东西就是后来插件的雏形

Bukkit 项目一经开始就受到热烈欢迎,许多开发者纷纷投入开发之中。终于能够改写自己最喜欢的游戏了,谁不想试试呢?

Bukkit 服务端是最早的插件服务端,它通过反混淆 Minecraft 服务端源代码进行了修改,并直接发布修改后的服务端使得服主可以方便地使用。Bukkit API 规范自那时也被确定。

不过 Bukkit 犯了一个致命的错误,这个错误导致 Bukkit 项目被迫终止,我们马上就会看到。

不幸的 Bukkit

后来 Mojang 发现不对啊,Bukkit 这家伙怎么拿着我的东西在那展览呢?

Mojang 越想越不对劲,于是拿着 EULA(最终用户许可条款)和 DCMA(数字千年版权法案)把 Bukkit 告上了法庭。

Bukkit 使用了 Mojang 的源代码,这是 Mojang 不喜欢的,和故事中一样,Bukkit 败诉,项目被迫停止。

Bukkit 的继任者

Bukkit 停止后,开发者们当然不乐意啦。开什么玩笑?之前辛辛苦苦写的插件不能用了?

然而生气归生气,DCMA 是没办法挑战的,于是开发者们只好无比失望地洗洗睡了……

后来有一天,Bukkit 的一些开发人员想到了办法。

既然我不能把盒子打洞之后给你,那我就把打洞的方法教给你嘛!

开发人员们想到了新的办法:提供一个不包含 Minecraft 源代码的部署工具,里面记载了修改服务端的方法。

要使用时,这个工具会在服主的计算机上下载一份 Minecraft 客户端,完成反编译、注入、重新编译、打包等工作。就像一个安装程序一样。你可能见到过的 BuildTools.jar 就是它。

由于以 Bukkit 为名继续项目可能不方便,开发人员们创立了新的服务端:Spigot。

Spigot 看着 Bukkit 的图纸,又在盒子上打了个洞,和原来的 Bukkit API 一起,放入 BuildTools.jar 中。这个加上去的 API,就是 Spigot API。

Paper 觉得 Spigot 的运转速度太慢了,于是拿着 Spigot 的盒子又打了几个洞,还把盒子加强了一番。这就是 Paper 服务端。

Bukkit API

接下来请各位读者把时间切换回到 Bukkit 被起诉前那个平静的午后,并将时间定格在这里。

Bukkit 将盒子内部进行了一番整理,并且弄出来了一根管子,我们只要按着管子的形状往里面塞东西就行了。

在现实世界中,这就是 Bukkit 提供的 API。Bukkit 规定了一套修改 Minecraft 服务端的统一标准。正是有了这个标准,功能繁多的插件才能有序而高效地运行。