常见问题及解答

给每个人

Sponge 是什么?

Sponge 是一个多样化的 Minecraft(Java 版)API,它致力于通过插件来为 Minecraft 增添功能,从而丰富你的游戏体验。关于 Sponge 的详细内容请阅读:简介;关于 Sponge的历史可参考:Sponge 的历史

运行 Sponge 有哪些需求?

Sponge(以及 Minecraft)的正确运行需要 Java 运行时环境(JRE)。显然你还需要一台用于运行服务器的电脑,除此之外无需其它。 关于如何选择并安装正确的 Java 版本请查阅 安装 Java

从哪里能获得 Sponge?

你可以在我们的下载页下载到 SpongeForge 和 SpongeVanilla。

哪些 Sponge 实现是可用的?

Sponge 工程现维护两个 Sponge API 的实现:

  1. SpongeForge 是一个运行在 Minecraft Forge 上的 Coremod。Minecraft Forge 是一个因用于开发 Minecraft(Java 版)的 Mod 而知名的框架。Forge API 不能跨版本,而 Sponge 正是致力于跨版本。Sponge 允许开发者更容易地开发插件,让服主们更轻松简单地管理服务器(SpongeForge 的曾用名为 Sponge,重命名是为了避免混淆)。

  2. SpongeVanilla ,一个基于原版 Minecraft 服务端的独立的 Sponge API 实现(SpongeVanilla 原名 Granite,后来两个开发组合并)。

API 的灵活性使得我们也有若干第三方的社区实现:

  1. LanternServer 是一个开源的兼容 Minecraft(Java 版)的服务器端,实现了 SpongeAPI。它不依赖于原版 Minecraft 的任何代码,这使得它更灵活、开放,性能也更为优异。虽然该项目仍在开发中,但目前进度十分可观,未来也许会成为不需要运行 Forge Mod 的服务器的首选服务端。你可以在他们的网站上Github 上找到关于该项目的信息。

从哪里能够得到 Sponge 的插件?

你可以在我们的官方插件库 Ore 上找插件。

所以 Bukkit 发生了什么?

Bukkit 项目停止了 API 和服务端的开发。然后其中一个 Bukkit 开发者紧接着发了一份 DMCA 声明禁止了 CraftBukkit 的分发。当然这是他的权利。所以任何关于 CraftBukkit 的的服务端(包括 Spigot 和 Cauldron)都被删除了。如果你想要知道这些事是如何影响到 Sponge 项目的开发的,你可以看一看 Sponge 的历史

我可以用这些东西运行 Bukkit 插件吗?

不能。这不是我们的目标。Sponge 使用它自己的 API(即 Sponge API),Bukkit 则使用 Bukkit API。虽然有第三方尝试过在 Sponge API 的基础上实现 Bukkit API,但因为两个 API 设计理念的差异,没有任何一个尝试十全十美。如果你认为 Sponge 缺少某个功能,或者你找不到服务器需要的插件,你可以在论坛 发贴求助。

给服主们

我是一名服主!切换到 Sponge 对我的服务器有何影响?

对于现有的 Forge 服务器,你需要下载 SpongeForge ,并将它放入 mods 文件夹。服务器可以像其他 Forge 服务器一样正常启动。

非 Forge 服务器可选择 SpongeVanilla ,一个不基于 Forge 的 Sponge 实现。现在 Sponge 文档已经有一些从 Bukkit 或者 Canary 向 Sponge 迁移的指南。值得一提的是, Sponge 的背后也有很多来自 Bukkit 社区的开发者,他们也计划将他们的插件迁移到 Sponge 平台上。

地图也可以迁移。但是相关的插件数据则取决于插件作者是否提供转换程序。有的插件作者也许不会提供。

另外需要说明的是,我们不会为在 Sponge 上运行的 Bukkit 插件提供支持。

切换到 Sponge 会影响到我的玩家么?

切换到 Sponge 不会影响你的服务器上的玩家。如果你(服主)正确地进行了迁移,那么玩家就可以用像迁移到 Sponge 前一样的方式进入你的服务器。它们不需要安装 Forge —— 除非你的服务器安装了 Forge 模组。

给开发者

我能用 Sponge 做什么?

Sponge 提供了一个插件 API 。这意味着你可以随时随地制作新的内容和游戏模式。请参阅我们的插件开发页面以快速开始:插件开发

我不能用 Sponge 做什么?使用 Sponge 有什么限制?

Sponge 并不能创建新的方块、材质、生物等任何需要客户端修改的内容。此外,出于安全考虑,Sponge API 不会支持向客户端发送 mod 或插件。但是,您可以使用 Forge 制作客户端 mod 并用 Sponge 制作服务端插件。你甚至可以在客户端使用 Sponge,但对于某些 Sponge 插件无法完成的任务你仍然需要使用 Mod。

我是一名 Bukkit 插件的开发者!为什么 Sponge 不能使用 Bukkit 的 API?

Bukkit 的 API 包含使用了 GPL 许可的代码。这是 Bukkit 于2014年九月消亡的一大原因;通过使用在 MIT 许可下的新的 API,我们可以避免 Bukkit 遭遇到的那些问题。虽然这样并不能使我们摆脱 Mojang 的控制,因为他们的代码是专有的,但我们相信 Mojang 是支持 Modding 的并且会一如既往地支持下去。

我可以用插件访问到服务器的内部吗?

对服务器内部(CraftBukkit 称其为“NMS”或“net.minecraft.server”)的访问可以通过 MCP 实现,MCP 也提供了大量反混淆过的字段名称。但是请注意,访问服务器内部会增大插件崩溃的几率——选择权在你手中。

参见 依赖底层实现 以获取更多在你的插件中使用 MCP 的相关信息。