Como contribuir
Como contribuir explica como ajudar o DragonMineZ: reportar bugs, testar versões, sugerir recursos, melhorar a documentação ou trabalhar no código. Seja o que for que você queira fazer, a equipe terá prazer em colaborar com você. Siga estas diretrizes para que o processo seja tranquilo para todos os colaboradores. Se quiser fazer uma doação ao projeto, veja Apoiar o projeto no Patreon.
Primeiros passos
- Leia o Código de Conduta. Ao contribuir, você concorda em respeitar o Código de Conduta.
- Confira as issues existentes. Veja as issues para saber se alguém já reportou seu problema ou propôs sua ideia.
- Faça um fork do repositório e clone seu fork no seu ambiente local para testar e desenvolver (veja abaixo).
- Prepare seu ambiente com as ferramentas listadas abaixo.
Para clonar seu fork:
git clone https://github.com/your-username/DragonMineZ.git
Verifique se você tem estas ferramentas instaladas:
- Java Development Kit (JDK) 17 (o build usa uma toolchain do Java 17)
- Git
- Uma IDE com suporte a Gradle (IntelliJ IDEA ou Eclipse)
Você não precisa instalar o Gradle nem o Forge por conta própria: o repositório inclui o wrapper do Gradle (gradlew / gradlew.bat), que baixa o Gradle, o Minecraft Forge (1.20.1-47.4.10) e todas as dependências no primeiro build.
Se você não vai fazer um fork do repositório nem criar um addon, pode pular o passo 3. Para desenvolver addons, veja Primeiros passos com addons.
Compilar e executar
Execute estes comandos a partir da raiz do repositório (./gradlew no Linux e no macOS, .\gradlew.bat no Windows):
| Comando | O que faz |
|---|---|
./gradlew build |
Build completo. O jar distribuível é build/libs/dragonminez-<version>.jar (ele inclui as bibliotecas de banco de dados); o jar -slim não é feito para ser distribuído.
|
./gradlew runClient |
Inicia um cliente de desenvolvimento (diretório de trabalho run/).
|
./gradlew runServer |
Inicia um servidor dedicado de desenvolvimento (diretório de trabalho run/).
|
./gradlew runData |
Executa a geração de dados (diretório de trabalho run-data/) e grava em src/generated/resources/. Execute depois de alterar os providers de datagen e revise o diff gerado.
|
- Não há uma suíte de testes automatizados. Valide sua mudança com
builde, quando ela afetar a jogabilidade, testando-a norunCliente/ou norunServer. - Mods de desenvolvimento só de cliente (JEI runtime, shaders etc.) são adicionados apenas ao
runClient. Mantenha assim, para que eles não vazem para os dados gerados nem para o servidor dedicado. - A otimização de recursos (PackSquash) roda no CI e fica desativada por padrão nos builds locais. Force-a com
-PoptimizeResources=trueou-PoptimizeResources=false.
Traduções
src/main/resources/assets/dragonminez/lang/en_us.jsoné o arquivo de idioma de origem. Adicione nele uma entrada para cada texto novo que os jogadores possam ver e mantenha estáveis as chaves existentes.- Os outros idiomas são traduzidos pela comunidade no Crowdin. O arquivo em inglês é enviado ao Crowdin automaticamente quando muda na
main. - Antes de abrir um pull request, verifique se todos os arquivos de idioma são JSON válido com
scripts/check_lang.sh(ele precisa dojq).
Como contribuir
Reportar bugs
Se você encontrou um bug, abra um relatório de bug e inclua o máximo de detalhes possível:
- Uma descrição clara do problema
- Passos para reproduzi-lo
- Resultado esperado e resultado real
- Capturas de tela, logs ou relatórios de crash, se houver
Testar o jogo
Qualquer pessoa pode testar as versões públicas e compartilhar o que encontrar com a equipe: bugs, exploits, problemas de balanceamento, crashes ou qualquer outra coisa que pareça estranha. Você não precisa ser desenvolvedor nem abrir um pull request para ajudar dessa forma.
- Teste apenas versões públicas. Não teste versões internas ou não lançadas, a menos que tenha recebido acesso explícito.
- Compartilhe o que encontrar em um relatório de bug ou no Discord.
- Se o que você encontrar for uma vulnerabilidade de segurança (por exemplo, algo que possa ser explorado para prejudicar outros jogadores ou servidores), siga a Política de segurança em vez de abrir uma issue pública.
Sugerir recursos
Tem uma ótima ideia? Abra uma sugestão de recurso e inclua:
- Uma explicação clara e concisa do recurso
- Seus possíveis benefícios e impacto
- Alternativas ou conceitos relacionados
Você também pode sugerir recursos no servidor do Discord.
Enviar pull requests
Passo 1: Crie uma branch. A main contém a linha estável atual; a próxima versão é desenvolvida na sua própria branch de versão (por exemplo, v2.2). Baseie sua branch naquela a que sua mudança se destina; se não tiver certeza, pergunte no Discord. Use um nome de branch descritivo:
git checkout -b fix/short-description
Passo 2: Faça suas mudanças.
- Escreva código limpo e conciso.
- Teste suas mudanças localmente para garantir que funcionam como esperado.
- Siga as convenções e padrões de código do projeto.
Passo 3: Faça commit das suas mudanças com uma mensagem de commit significativa:
git commit -m "Fix: Resolved issue with XYZ feature"
Passo 4: Envie suas mudanças (push).
git push origin fix/short-description
Passo 5: Abra um pull request. Vá ao seu fork no GitHub e envie um pull request.
- Descreva as mudanças e vincule as issues relacionadas.
- Esteja pronto para discutir e revisar seu código com base no feedback.
- Todo pull request é compilado automaticamente pelo workflow Compile Check (
./gradlew build). Se falhar, seu pull request não será mesclado. As execuções de workflow de quem contribui pela primeira vez podem precisar da aprovação de um mantenedor antes de começar.
Verificações automáticas
| Workflow | Quando roda | O que faz |
|---|---|---|
| Compile Check | Todo pull request, e pushes para qualquer branch exceto main que mexam em código, recursos ou arquivos do Gradle |
Executa ./gradlew build
|
| Java CI | Pull requests e pushes para a main que mexam em Java ou no build.gradle.kts |
Executa ./gradlew build e envia o grafo de dependências
|
| Crowdin Check & Upload | Pushes para a main que mexam na pasta lang, a cada 2 dias ou manualmente |
Valida os arquivos de idioma com scripts/check_lang.sh e envia o en_us.json ao Crowdin
|
| CodeQL | Diariamente | Análise de segurança do código Java e dos workflows |
Os mantenedores publicam as versões no Modrinth e no CurseForge a partir da main com seus workflows de lançamento.
Diretrizes para colaboradores
- Padrões de código
- Use nomes descritivos para variáveis e métodos.
- Formate o código de forma consistente (indentação, espaçamento etc.).
- Escreva comentários para a lógica complexa.
- Documentação
- Atualize ou adicione documentação para recursos novos ou alterados.
- Garanta que esta wiki reflita as mudanças importantes.
- Testes
- Teste a fundo nos cenários relevantes, incluindo um servidor dedicado (
runServer) quando sua mudança mexer em classes do cliente, rede ou lógica do servidor. - Corrija qualquer problema de linting ou de compilação antes de enviar seu pull request.
- Teste a fundo nos cenários relevantes, incluindo um servidor dedicado (
- Compatibilidade
- Muitos sistemas leem JSON que jogadores, donos de servidores e autores de addons editam (configurações, missões, desejos, pacotes de Esferas do Dragão). Não renomeie nem remova chaves de configuração, campos JSON, chaves de salvamento NBT ou nomes de registro sem discutir antes: mundos e configurações antigos precisam continuar carregando.
- Os pacotes de rede são identificados pela ordem de registro: adicione pacotes novos no final de
NetworkHandler.register(), nunca no meio. - Valide no servidor tudo o que um cliente envia; nunca confie no cliente para estatísticas, desbloqueios, missões, desejos ou progresso.
- Documentação do projeto
CLAUDE.mde a pastaAI/(Agents.md,Context.md,Memory.md,QuestAddonAPI.md) descrevem em detalhes a arquitetura, os sistemas de dados, o build e a automação de lançamentos. Foram escritos para assistentes de programação com IA, mas são igualmente úteis para colaboradores humanos: leiaAI/Context.mdantes de mudanças maiores.
Comunidade
Entre no servidor do Discord para conversas em tempo real.
Apoiar o projeto no Patreon
O DragonMineZ é um projeto movido pela comunidade, e seu apoio ajuda a equipe a continuar melhorando o mod e lançando novos recursos. Considere se tornar apoiador no Patreon para apoiar o desenvolvimento e a manutenção do mod. Os apoiadores recebem benefícios exclusivos, como:
- Acesso antecipado a novos recursos
- Novidades dos bastidores
- Reconhecimento na comunidade
Toda contribuição, por menor que seja, ajuda o DragonMineZ a continuar melhorando.
Licença
Ao contribuir, você concorda que suas contribuições serão licenciadas sob a mesma licença que rege o projeto.
Obrigado
A equipe está animada para ver suas contribuições e ideias. Se tiver alguma dúvida ou precisar de ajuda, fale com a equipe.