
Testar Plugins do Minecraft Fica Fácil com run-task
jpenilla/run-task
Plugins Gradle que adicionam tarefas para executar software de servidor e proxy Minecraft
Ver no GitHub ↗Se você criou um plugin Minecraft e testou localmente, você conhece a dança: baixar o jar do servidor, configurar diretórios, colocar seu plugin em plugins/, iniciar, aguardar inicialização. Toda vez. run-task elimina essa configuração repetitiva com um único comando Gradle que faz tudo automaticamente.
O que run-task Faz
run-task é um conjunto de plugins Gradle que automatizam uma das partes mais tediosas do desenvolvimento de plugins Minecraft: testes de integração. Em vez de baixar manualmente software de servidor, configurá-lo e colocar seu plugin compilado na pasta correta, você define qual versão deseja e executa um comando. O plugin faz o download, configuração e inicialização automaticamente.
Existem três variantes principais. run-paper lida com servidores Paper (a escolha preferida da maioria dos devs), run-velocity cobre software de proxy Velocity e run-waterfall cobre proxies Waterfall. Cada um funciona no mesmo princípio: configure uma vez em seu build.gradle.kts, depois use uma tarefa simples para iniciar seu ambiente de testes.
Isso pode parecer uma pequena conveniência. Quando você está iterando em um plugin e testando dezenas de vezes por dia, a economia de tempo se acumula rapidamente.
Por que Desenvolvedores de Plugins Precisam Disso
Testar um plugin Minecraft é fundamentalmente diferente de testar uma biblioteca Java regular. Você não pode apenas executar testes unitários e pronto. Seu código é executado dentro do servidor Minecraft, interage com o estado do jogo, gerencia eventos do jogador e depende de APIs que mudam entre versões. Isso é território de testes de integração, e não há como contornar.
Sem run-task? O fluxo de trabalho é doloroso. Baixe Paper 1.21.8, extraia, crie pasta de plugins, compile seu jar, copie, execute o script do servidor, aguarde inicialização, conecte com um cliente, teste seu recurso, desligue, altere o código, repita. Faça isso cinquenta vezes ao desenvolver um recurso e você terá perdido horas com puro boilerplate.
Velocidade é importante aqui.
run-task remove completamente esse atrito. Modifique seu código, execute gradle runServer, e seu plugin já está carregado em segundos. Isso é especialmente valioso ao testar múltiplas versões Minecraft - mude versões em sua configuração e execute novamente sem configuração manual.
Começando com run-task
A instalação é direta. Adicione o plugin ao seu build.gradle.kts e especifique a versão que deseja executar:
plugins {
id("xyz.jpenilla.run-paper") version "3.0.2"
}
tasks {
runServer {
minecraftVersion("1.21.8")
}
}Isso é tudo que você precisa. run-task detecta automaticamente o jar compilado do seu plugin e o inclui. Se você estiver usando shadowJar para agrupar dependências, usará isso em vez disso - sem configuração manual.
Para iniciar:
gradle runServerSeu servidor Paper inicia com seu plugin já carregado e pronto para testes. A primeira execução leva mais tempo ao baixar tudo, mas as execuções subsequentes são muito mais rápidas com arquivos de servidor em cache.
Para testes de proxy Velocity, a configuração é quase idêntica:
plugins {
id("xyz.jpenilla.run-velocity") version "3.0.2"
}
tasks {
runVelocity {
velocityVersion("3.4.0")
}
}O plugin lida com compatibilidade de versão automaticamente, então você pode testar contra versões snapshot ou estáveis sem se preocupar com camadas de compatibilidade.
O que Torna run-task Digno de Usar
A melhor feature é simplicidade brutal. run-task não tenta ser inteligente - ele baixa o software do servidor especificado, detecta seu jar de plugin e o executa. Menos partes móveis significa menos coisas que podem quebrar.
A detecção automática de shadowJar é genuinamente útil se você estiver agrupando dependências. Muitos plugins precisam sombrear bibliotecas para formatos de dados personalizados ou APIs mais recentes. run-task respeita isso sem configuração extra.
A mudança de versão é extremamente simples.
Quer testar em 1.20.4, 1.21.1 e o snapshot mais recente? Altere uma linha e execute novamente. Testes de regressão ficam muito menos dolorosos. E se você estiver criando ferramentas para administradores de servidor (como testar sistemas de votação Votifier ou experimentar com MOTDs de servidor personalizados), ter acesso rápido a um servidor em execução é inestimável.
Um detalhe digno de nota: run-task respeita a estrutura de subprojetos Gradle. Se você estiver organizando código de plugin em múltiplos módulos, ele descobre automaticamente o jar correto. Isso é menos trivial do que parece.
Armadilhas Comuns e Coisas a Saber
Primeira armadilha: run-task baixa software de servidor para seu cache .gradle - geralmente ~/.gradle no Linux/Mac, %USERPROFILE%\.gradle no Windows. Se você estiver com espaço em disco limitado ou com uma conexão lenta, a primeira execução leva um ou dois minutos. Vale a pena, mas espere essa espera inicial.
A versão Java é importante.
Paper e Waterfall geralmente precisam de Java 21 ou superior, enquanto versões mais antigas do Velocity podem funcionar com Java 17. Se você estiver usando um gerenciador de versão como sdkman, certifique-se de que a versão correta está ativa antes de executar.
Há também uma curva de aprendizado com a sintaxe Gradle se você for novo nela. run-task usa Kotlin DSL (build.gradle.kts), que é mais type-safe do que Groovy, mas mais íngreme para iniciantes. Se você ainda estiver na sintaxe build.gradle, a conversão geralmente é direta.
Na verdade, aqui está algo que confunde as pessoas: run-task assume que você está testando um único plugin isoladamente. Se você estiver criando algo que exige múltiplos servidores rodando simultaneamente (como uma configuração de proxy com múltiplos backends), você precisará orquestrar isso separadamente. Não é uma limitação da ferramenta, apenas sua filosofia de design.
Quando run-task Não é a Escolha Certa
run-task é excelente para desenvolvimento de plugins. Não é uma solução tamanho único.
Se você estiver construindo uma distribuição de servidor completa com configurações personalizadas, scripts de inicialização e múltiplos plugins, você provavelmente deseja Docker ou uma configuração manual. run-task assume que você está testando um único plugin isoladamente.
Para testes de integração em múltiplos tipos de software de servidor simultaneamente, você desejaria orquestração mais sofisticada - talvez Docker Compose ou um harness de teste personalizado integrado ao seu pipeline CI/CD.
Testes intensos de fluxos de trabalho de administração de servidor (monitoramento, backups, gerenciamento de cluster) podem ser melhor servidos por um ambiente de servidor completo com persistência adequada em vez das configurações temporárias do run-task.
A maioria dos desenvolvedores de plugins descobrirá que run-task cobre 90% de suas necessidades de testes.
jpenilla/run-task - Apache-2.0, ⭐341Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.
Comentários
Nenhum comentário ainda. Seja o primeiro a compartilhar sua opinião!


