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 的功能。

Repo Overview