Skip to main content

Minecraft SMP、Bukkit

Minecraft 是一个孤单的游戏吗?

可早在 Cave Game 的 RD-132328 就出现了到处乱跑的“人类”,虽然那称不上成功。

那么,Minecraft 并不孤独。

是的,不知道你有没有听过 SMP 这个名字。

是 Survival Multiplayer 对吧?

是的,严格来说 Minecraft SMP 并不是你平时玩到的 Minecraft ,他是 Markus 'Notch' Persson 在2010年8月9日发布的一个文件,它的文件名叫 “minecraft_server.jar”。

所以,Minecraft SMP 是服务端,而 Minecraft 则是我们平时玩的游戏吗?

只不过现在不兴这个叫法了罢了。

似乎当时 SMP 还引发了轰动,Minecraft 的付费用户翻了 1.5 个倍,还让 Markus 'Notch' Persson 注册了 Mojang AB。

确实是这样的,但很多玩家并不满足,他们不止想在 Minecraft 上装 “Mod”,他们也想装在 Minecraft SMP 里,你也知道的 Minecraft SMP 就一个 Jar 压缩包罢了,没有什么能够阻止你对它进行逆向工程。
反编译后还不是想干嘛干嘛,这里加点血,那里修改下速度。

但这毕竟是商业软件吧?

所以 Notch 把代码都 obfuscated 了?

混淆?

我可不想吃 DMCA,所以你需要自己找一个例子,总之到你手上时 Minecraft SMP 原本可读的代码已经被改成了不适合人类阅读的状态。

是,那根本不是人读的。虽然它实际上也不能阻止你对它进行修改,但没有人会这样做的,因为它的人类可读性是无穷小。

但总会有人完成本不可能的事,Minecraft SMP发布后不久,一位叫 hey0 的先驱者在他的网站上放出了 hMod,hMod 对 Minecraft SMP进行了半封装等处理,总之大概就是对 Minecraft SMP 的代码进行了“翻译”,让你可以对着可读的代码做任何想做的事。而不用去猜测 Notch 究竟写了什么。

听说没几个月 hMod 就停止了更新?

一个人硬读这种天书想必是苦了他了,希望还能留下几根头发。hey0 放弃后,Dinnerbone 出现了,但他填了没几天又不干了。想必 hey0 写的也不是什么人话。于是 Dinnerbone 直接另起炉灶,召集团队成立了 Bukkit。

这个耳熟,Bukkit API 和 CraftBukkit 对吧?

对,Bukkit API 提供各种事件和接口等让你自由发挥,而“翻译”的事交给 CraftBukkit。

所以你从 Hack Minecraft SMP 变成了编写 Bukkit API 插件,合法万岁。
服务器拥有者从开 Minecraft SMP 服务器变成了开 CraftBukkit 服务器。

如果 Notch 改了源码,那么只需要让 CraftBukkit 更新“翻译”就够了,你写的东西基本不需要更改,实在是完美。

只不过当时 CraftBukkit 发布的时候直接包含了 Mojang 的代码,所以后来它被 DMCA 了,但那又是另一个故事了。