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