Minecraft Server Mods-如何运作?


9

Minecraft服务器作为一个罐子提供。mods是如何开发的?它们如何与原始广口瓶互动?引擎盖下有什么?

那里涉及什么技术?我主要是C ++ / Python专家,但我想学习有关mods开发的知识。

Answers:


11

JAR只是一个ZIP文件,包含各种类文件和使用的其他元数据-它是一种完全标准化的格式。

可以提取ZIP文件,并可以根据需要编辑类文件进行修改。然后,将修改后的文件添加回存档中,这使服务器使用修改后的文件而不是原始文件。

从技术上讲,Minecraft的mod确实是原始代码的“被黑客入侵”版本:必须修改实际的二进制类文件,以使游戏知道新的东西。目前尚无官方的mod支持(尽管Notch表示他们将在Beta版中进行开发)。

当然,如果您积极地为mods设计的话,那不是一个很好的方法。相反,您将设计某种插件体系结构,该体系结构允许在适当的地方运行自定义代码。确切的处理方式取决于您希望mod能够执行的操作-例如,如果出于安全考虑,您可能希望设计mod接口以使用某种脚本,因此可以限制mod进行操作各种各样的东西到用户的计算机上。


这并非完全正确-例如,McAdmin是用C#编写的
BlueRaja-Danny Pflughoeft

@BlueRaja:我认为MCAdmin并不是真正的mod,它是一个自定义的独立服务器。尽管它可能允许客户端通过命令执行新操作,但我认为这两件事是不同的。
Michael Madsen

??不,那绝对是mod。它是对我的世界服务器的包装。它要求Minecraft服务器正在运行,因此它不是独立的。我简短地查看了源,它似乎是在拦截网络消息并在进/出途中对其进行更改。
BlueRaja-Danny Pflughoeft

3
@BlueRaja:呵呵-可以宣誓它是一台独立的服务器,但是话又说回来,我承认我从未真正使用过它。这是一种特殊情况,因为它似乎是通过充当播放器和服务器之间的代理服务器来工作的。我仍然不太称呼它为mod,但那可能只是我。
Michael Madsen

6

单人游戏模组是原始代码的骇客版本。多人游戏模组现在有所不同。他们几乎都使用hey0的服务器包装器,该服务器包装器链接到minecraft_server.jar(或Java领域中的任何术语),但定义了自己的函数类,重载了一些核心函数,并运行了自己的main()

Hey0提供了一个mod API。看到


1

供您参考,Mojang将在不久的将来发布“ Mod API”(在beta期间,因此将于2011年11月左右正式发布之前)。

实际上,这将是完整的源代码,如Notch的博客中所述

http://notch.tumblr.com/post/4955141617/the-plan-for-mods

但是现在,您必须“反编译” jar,以查看部分混淆的代码并重新编译以供以后使用/调试。

为此,我强烈推荐Minecraft编码包 http://mcp.ocean-labs.de/index.php/MCP_Releases

在论坛上也有一些改装教程,例如:http : //www.minecraftforum.net/topic/96862-creating-mods-modding-tutorials-21511/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.