Sponge 项目的架构
警告
本文档是针对旧版 SpongeAPI 编写的,目前已不再维护。虽然相应的代码依然能在对应的 API 下工作,但相关政策、方针及链接可能有所变化。请在必要时参阅最新的文档获得相关信息。
Sponge 项目包含若干子项目,分别托管于不同的 GitHub 仓库中。在深入到细节之前以下先作简短概述:
项目 |
说明 |
仓库用途? |
---|---|---|
API 本体 |
API 本体的开发 |
|
基于 MinecraftForge 的 SpongeAPI 实现 |
SpongeForge 需要依赖 MinecraftForge 的部分的开发 |
|
一个基于原版 Minecraft 的 SpongeAPI 实现 |
SpongeAPI 在原版 Minecraft 上的实现的开发工作 |
|
SpongeForge 和 SpongeVanilla 的共用代码 |
SpongeForge 和 SpongeVanilla 的共用代码库之开发 |
|
底层代码结构注入工具 |
Sponge 用于与 Minecraft 服务器端挂钩的解决方案之开发工作 |
|
Sponge 项目的正式文档 |
SponegDocs 的编纂工作 |
|
Sponge 项目的官方网站 |
我们的网站的开发工作 |
|
插件 (Plugin) 托管解决方案 |
我们的插件托管解决方案的开发工作 |
SpongeCommon 、 SpongeForge 和 SpongeVanilla
SponegCommon 中的代码是 SpongeForge 和 SpongeVanilla 的共用部分。 SpongeForge 和 SpongeVanilla 中则分别存放有平台相关的代码,因为依赖于 MinecraftForge 代码自然不可能在原版上工作,反之亦然。
“讨论 SpongeForge 这个实现”的实质是讨论 SpongeCommon 和 SpongeForge 两个仓库的代码。同样的,“讨论 SpongeVanilla 这个实现”的实质则是讨论 SpongeCommon 和 SpongeVanilla 两个仓库的代码。正因如此,构建 SpongeForge 或 SpongeVanilla 时 必须 要包括 SpongeCommon 仓库里的代码。
SpongeHome
SpongeHome 便是 SpongeProject 的网站,以 Golang 写就,并使用 go-macaron 库作为后端,以及 SCSS 作为其 CSS 预处理器。
Ore
Ore 是我们提供的插件托管解决方案,以 Scala 写就,基于 Play 框架,所以说这个方案是开源的!
这些东西是如何联系到一起的
下图展示了 Sponge 的不同实现之间的关系、交互方式、以及依赖等。左侧展示的是标准的 SpongeForge 环境,装有若干基于 SpongeAPI 的插件,基于 Forge 的 Mod ,以及若干 Sponge 插件和 Forge Mod 的混合体。右侧展示的是标准的 SpongeVanilla 环境,你会注意到 SpongeVanilla 不支持 Forge/SpongeAPI 混合体,毕竟 SpongeVanillla 中不存在 Forge 的功能。