Estrutura do Projeto Sponge

O Projeto Sponge é composto por vários sub-projetos, hospedados em vários repositórios no GitHub. Segue-se um breve resumo antes de irmos a detalhes:

Projeto Descrição O que é que se faz no repositório?
SpongeAPI A própria API O dsenvolvimento da própria API
SpongeForge Uma implementação da SpongeAPI construída em cima do Forge Desenvolvimentos das partes do SpongeForge que dependem do Forge
SpongeVanilla Uma implementação da SpongeAPI construída diretamente em cima do Minecraft Vanilla Desenvolvimento do equivalente Vanilla do repositório SpongeForge
SpongeCommon O código comum ao SpongeForge e ao SpongeVanilla Desenvolvimento de todo o código que é partilhado entre o SpongeForge e o SpongeVanilla
Mixin A ferramenta utilizada para injetar as implementações na estrutura de código subjacente Desenvolvimento da nossa solução para ligar o Sponge ao Minecraft Server
SpongeDocs A Documentação Oficial do SpongeProject Expansão, correção e desenvolvimento dos SpongeDocs
SpongeHome O site do SpongeProject O desenvolvimento do nosso website
Ore Solução de hospedagem plugins Desenvolvimento da nossa solução de hospedagem de plugins
SpongeAuth O portal de autenticação e SSO para os nossos websites Desenvolvimento do nosso portal de autenticação e da solução SSO

SpongeCommon, SpongeForge e SpongeVanilla

O repositório SpongeCommon é a base que contém todo o código que é partilhado entre as implementações do SpongeForge e do SpongeVanilla. Os repositórios SpongeForge e SpongeVanilla contêm todo o código que não pode ser partilhado entre eles, uma necessidade que deriva do facto de o Forge requerer algumas coisas específicas que não funcionam no Vanilla e vice-versa.

Quando te referes à implementação SpongeForge, estás basicamente a referir-te a tudo que está nos repositórios SpongeCommon e SpongeForge. O mesmo se aplica ao caso do SpongeVanilla e SpongeCommon. Esta é a razão pela qual fazer uma build do SpongeForge ou do SpongeVanilla a partir dos seus repositórios sem incluir o SpongeCommon não funciona.

SpongeHome

SpongeHome é o website do Projeto Sponge. É escrito em Golang, e usa a biblioteca go-macaron. Socorre-se de SCSS como pré-processador de CSS.

Ore

O Ore é a nossa própria estrutura de alojamento de plugins. É escrito em Scala, baseado na Framework Play, e é open source, claro!

Como tudo se encaixa

A imagem mostra as várias partes constituintes das implementações do Sponge e como elas interagem entre si e com as suas dependências. No lado esquerdo, está um setup típico do SpongeForge com alguns plugins da SpongeAPI, um mod do Forge e um híbrido que usa o Forge (como um mod) e o Sponge (como um plugin) para interagir. No lado direito, está um setup típico de SpongeVanilla. Podes reparar que o SpongeVanilla não suporta mods do Forge nem o híbrido, uma fez que o SpongeVanilla não tem as funcionalidades do Forge:

Repo Overview