Sponge 项目的架构

警告

This documentation refers to an outdated SpongeAPI version and is no longer actively maintained. While the code examples still work for that API version, the policies, guidelines, and some links may have changed. Please refer to the latest version of the documentation for those.

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) 托管解决方案 我们的插件托管解决方案的开发工作

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

Repo Overview