跳转到主要内容

Minecraft SMP、Bukkit、Vanilla

Minecraft 是一个孤单的游戏吗?

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

那么,Minecraft 并不孤独。

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

是 Survival Multiplayer 对吧?

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

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

只不过现在不兴这个叫法了罢了,Minecraft 本来想成为一个 “Survival Multiplayer” 生存多人游戏,SMP 的隐藏含义就是没有任何插件和模组,就是这样,就是 minecraft_server.jar。
在 Hypixel 等 minigame 小游戏服务器盛行之前,SMP 是 Minecraft 中最受欢迎的服务器类型,也就是纯生存模式。但是经过了这么多年 SMP 已经不完全代表没有任何插件和模组了,而是仅代表多人生存模式,你现在或许把那些不含任何插件和模组的服务器叫做 Vanilla。

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

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

但这毕竟是商业软件吧?

所以 Notch 把代码都 obfuscated 了?

混淆?

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

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

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

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

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

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

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

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

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

只不过当时 CraftBukkit 发布的时候直接包含了 Mojang 的代码,所以后来它被 DMCA 了。

于是现在的各种各样服务端