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