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