常见问题解答

警告

本文档是针对旧版 SpongeAPI 编写的,目前已不再维护。虽然相应的代码依然能在对应的 API 下工作,但相关政策、方针及链接可能有所变化。请在必要时参阅最新的文档获得相关信息。

给每个人

Sponge 是什么?

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

运行 Sponge 有哪些需求?

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

从哪里能获得 Sponge?

你可以下载 SpongeForge 和 SpongeVanilla 的 Beta 版本构建: Sponge 相关下载

哪些 Sponge 实现是可用的?

目前,Sponge 项目有两个子项目实现了 SpongeAPI:

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

  2. SpongeVanilla ,独立的 Sponge API 实现,运行于原版 Minecraft 服务端上(SpongeVanilla 原名为 Granite)。

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

在我们的官方插件库,也就是被称为 Ore 的项目。相关的开发已经在 GitHub 上开始了。这些插件暂时托管在 SpongeForums 里。

所以 Bukkit 发生了什么?

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

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

很抱歉的是,不能,至少在原生的层面上不能。 Sponge 使用的是它自己的 API (Sponge API),然而 Bukkit 使用的是 Bukkit API 。不过通过一个第三方的 Sponge 插件在 Sponge API 的基础上实现 Bukkit API 还是有可能的。

给服主们

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

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

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

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

另外,我们不会提供对Bukkit插件的支持。但是可能有其他人使得在Sponge上运行Bukkit插件成为可能。

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

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

给开发者

我能用 Sponge 做什么?

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

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

Sponge 并不能创建新的方块、材质、生物等任何需要客户端修改的内容。此外,由于安全问题, Sponge API 不支持立即向客户端发送 mod 或插件。但是,您可以在客户端使用 Forge API ,并为服务器端创建 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 的相关信息。