Sponge Project 的結構

警告

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 基於 Forge 開發的一項 SpongeAPI 實作 開發 SpongeForge 依賴 Forge 的部分
SpongeVanilla 直接在 Vanilla Minecraft 上開發的 SpongeAPI 實作 由 SpongeForge 儲存庫開發出原版對應部分
SpongeCommon SpongeForge 與 SpongeVanilla 之間共用的程式碼 開發 SpongeForge 和 SpongeVanilla 共用的所有程式碼
Mixin 用於將實作注入底層程式碼結構的工具 開發將 Sponge 掛進 Minecraft 伺服器的解決方案
SpongeDocs 官方的 SpongeProject 文件 擴展,修訂以及撰寫 SpongeDocs
SpongeHome SpongeProject 的網站 開發我們的網站
Ore 插件託管的解決方案 開發我們的插件託管解決方案

SpongeCommon、SpongeForge 以及 SpongeVanilla

SpongeCommon 儲存庫是 SpongeForge 和 SpongeVanilla 實作之間共享的所有程式碼的基礎。SpongeForge 和 SpongeVanilla 儲存庫中包含所有無法在它們之間共享的程式碼,如同 Forge 需要一些 Forge 特定的東西,這些東西也無法在 Vanilla 中使用,反之亦然。

當你提到 SpongeForge 實作時,基本上就是在討論包含在 SpongeCommon 和 SpongeForge 儲存庫中的所有內容。這同樣適用於 SpongeVanilla 和 SpongeCommon。這就是為什麼無法在不使用 SpongeCommon 的前提下僅用 SpongeForge 或 SpongeVanilla 的儲存庫進行建置。

SpongeHome

SpongeHome 是 SpongeProject 的網站。利用 go-macaron library 以 Golang 編寫。使用 SCSS 作為其 CSS 預處理器。

Ore

Ore 是我們自己的插件託管解決方案。以 Scala 編寫,基於 Play Framework 而且當然開源!

這一切如何相互配合

這張圖顯示了 Sponge 實作的各個部分,以及彼此的交互作用與依賴性。左側的是一個典型的 SpongeForge 結構,包含一些 SpongeAPI 插件,一個 Forge 模組以及一個同時使用 Forge(作為模組)與 Sponge(作為插件)的交互混和物。右側的是一個典型的 SpongeVanilla 結構。你會注意到 SpongeVanilla 並不支援 Forge 模組或其混合物,因為 SpongeVanilla 缺乏 Forge 的功能:

Repo Overview