Skip to content
Pular para o conteúdo
Voltar ao Blog
Adventure: Mensagens de Texto Rico para Servidores Minecraft

Adventure: Mensagens de Texto Rico para Servidores Minecraft

Alexandru Maftei
Alexandru Maftei
@ice
Atualizado
13 visualizações
TL;DR:Adventure é uma biblioteca Java que simplifica a criação de mensagens de texto rico e componentes de UI para servidores Minecraft. Em vez de lidar com JSON e códigos de cor, desenvolvedores usam uma API limpa para criar texto formatado com cores, eventos de passagem do mouse e interações clicáveis.
GitHub · Projeto da comunidade Minecraft

adventure (PaperMC/adventure)

Uma biblioteca de interface de usuário para Minecraft: Java Edition

Marque uma estrela no GitHub ↗
⭐ 869 estrelas💻 Java📄 MIT

Se você já tentou fazer uma mensagem de servidor Minecraft parecer decente, provavelmente perdeu tempo procurando códigos de cor, examinando opções de formatação e esperando que o cliente de chat renderizasse o que você pretendia. Adventure é a biblioteca que resolve isso. É uma biblioteca Java que permite criar mensagens ricas e interativas com estrutura real em vez de juntar strings e sequências de escape.

O que Adventure Faz

Adventure é uma biblioteca de UI do lado do servidor para Minecraft Java Edition. Em seu núcleo, ela lida com componentes de texto - os blocos de construção de toda mensagem que os jogadores veem em seu servidor. Em vez de escrever texto formatado bruto como você faria em comandos vanilla Minecraft, você constrói mensagens programaticamente com uma API limpa e encadeável.

Pense dessa forma: o chat vanilla Minecraft exige que você conheça a sintaxe JSON específica e códigos de cor. Adventure envolve essa complexidade em código Java legível. Você define uma mensagem uma vez, reutiliza em qualquer lugar e funciona consistentemente em todos os clientes. Sem adivinhar se seu texto de passagem será realmente exibido. Sem erros de renderização estranhos de JSON malformado.

A biblioteca é mantida pela equipe PaperMC e é o padrão da indústria para desenvolvedores que trabalham com Paper, Spigot e implementações compatíveis de servidor. Tem 869 estrelas no GitHub, documentação sólida e manutenção ativa. É construída em Java e requer JDK 21 no mínimo, embora isso praticamente não represente mais uma limitação.


Por Que Você Usaria Isso

A maioria dos desenvolvedores de servidor nunca usará Adventure diretamente. Eles usam plugins construídos sobre ela. Mas se você está escrevendo plugins, construindo uma implementação de servidor personalizada ou apenas cansado de lidar com componentes de chat JSON, Adventure lhe dá controle.

Ml10kh182cf31 no Minecraft
Ml10kh182cf31 no Minecraft

As razões práticas são diretas:

  • Você pode criar mensagens com eventos de clique (executar comandos, abrir URLs) e texto de passagem sem lembrar da estrutura JSON aninhada.
  • Cores, decorações e formatação especial se tornam código legível em vez de sequências de escape crípticas.
  • A biblioteca lida automaticamente com diferenças de versão entre versões do Minecraft.
  • Você pode serializar mensagens em diferentes formatos (JSON para chat, texto simples para logs, etc.) do mesmo objeto.

Se você está executando um servidor com plugins personalizados que mostram placares, progresso de quests, mensagens de aviso ou qualquer coisa voltada para o jogador, Adventure provavelmente já está na cadeia de dependências. Você apenas pode não saber disso.


Como a Biblioteca Funciona

Adventure gira em torno do conceito de componentes. Um componente é uma peça de texto com estilo opcional e interações. Você constrói mensagens complexas combinando componentes simples.

Launcher 1.0.5 no Minecraft
Launcher 1.0.5 no Minecraft

O padrão básico é assim: você cria um componente, aplica estilo (cores, negrito, itálico), opcionalmente adiciona interações (clique para executar um comando, passar o mouse para ver texto) e o envia aos jogadores. A biblioteca lida com toda a serialização JSON nos bastidores.

Aqui está um exemplo simples de como isso fica no código:

java
Component message = Component.text("Click me!").color(NamedTextColor.BLUE).decorate(TextDecoration.BOLD).clickEvent(ClickEvent.openUrl("https://minecraft.how/tools/text-generator")).hoverEvent(HoverEvent.showText(Component.text("Open the text generator")));

Isso cria um texto "Click me!" azul e em negrito que abre uma URL quando clicado e mostra uma dica de ferramenta de passagem do mouse. Simples e legível. Se você tentasse construir esse JSON manualmente, teria uma dor de cabeça em trinta segundos.

A biblioteca também lida com cenários mais complexos: construindo mensagens dinâmicas com variáveis, componentes de texto traduzíveis para diferentes locais e até estruturas de dados NBT para casos de uso avançados. Se você estiver fazendo algo além de mensagens de chat básicas, Adventure provavelmente tem um construtor para isso.


Colocando em Seu Projeto

Adventure é publicada no Maven Central, então se você estiver usando Gradle ou Maven, é apenas uma declaração de dependência.

Para Gradle (em seu build.gradle.kts):

gradle
dependencies {
 implementation("net.kyori:adventure-api:5.0.1")
}

Para Maven (em seu pom.xml):

xml

 net.kyori
 adventure-api
 5.0.1

A versão estável mais recente é 5.0.1, embora construções snapshot estejam disponíveis se você quiser as mudanças mais recentes. Uma vez em seu classpath, você apenas importa as classes e começa a construir componentes.

Se você estiver escrevendo um plugin Paper especificamente, o Paper já inclui Adventure como uma dependência, então você não precisa adicioná-lo você mesmo. Apenas importe e use.


Características-Chave Que Importam

Adventure tem muito acontecendo por baixo do capô. Estas são as características que realmente mudam como você escreve código de servidor:

Estilo e Cores de Texto. Cores nomeadas (BLUE, RED, GOLD), cores RGB e decorações de texto (negrito, itálico, sublinhado) são cidadãos de primeira classe. Você não está decodificando códigos de cor ou adivinhando valores hexadecimais - você encadeia métodos e obtém resultados legíveis. Quer um efeito gradiente no texto? Adventure também lida com isso, embora exija mais configuração.

Eventos de Clique e Passagem. Os jogadores podem interagir com suas mensagens. Execute comandos, abra URLs, sugira comandos ao jogador (sem executá-los) e mostre dicas de ferramenta de passagem do mouse com componentes aninhados. É assim que interfaces de servidor sofisticadas realmente funcionam.

Componentes Traduzíveis. Escreva sua mensagem uma vez com uma chave de tradução, e o cliente a renderiza no idioma do jogador automaticamente. Isso é incorporado ao cliente Minecraft, e Adventure torna isso fácil de usar. Se você estiver executando um servidor multilíngue, isso economiza uma quantidade enorme de esforço.

Serialização. Você pode converter componentes para diferentes formatos: JSON para chat Minecraft, texto simples para logging, códigos de cor legados se você estiver em um cliente mais antigo. Mesmo objeto, múltiplas saídas. Depois de ter um componente rico, você pode enviá-lo para qualquer lugar.

API de Público. A interface Audience do Adventure permite enviar mensagens aos jogadores, transmitir para todos ou escrever manipuladores de mensagens personalizados. Abstrai os detalhes de qual implementação Minecraft você está executando. Uma base de código, múltiplos tipos de servidor.


Coisas Que Confundem as Pessoas

Nada é perfeito, e Adventure tem algumas particularidades que valem a pena conhecer:

Se você estiver trabalhando com versões antigas do Minecraft, verifique qual versão do Adventure as suporta. A biblioteca descartou o suporte para versões antigas ao longo do tempo, portanto, servidores antigos podem não ser compatíveis. As últimas versões visam versões recentes do Minecraft.

A saída JSON pode parecer insana se você inspecioná-la diretamente. Não foi feita para leitura humana - é otimizada para o cliente. Não tente editar manualmente a saída JSON.

Componentes traduzíveis exigem que a chave de tradução exista no lado do cliente (funciona para strings padrão do Minecraft, mas strings personalizadas não funcionarão). Isso pega muitas pessoas tentando usar chaves de tradução personalizadas. Se sua tradução não aparecer, você provavelmente está usando uma chave que não existe nos arquivos de idioma do Minecraft.

E na verdade, mais uma coisa: se você está construindo componentes aninhados complexos com muito estilo, o código fica verboso rapidamente. Ainda é legível, mas não é compacto. Esse é o compromisso pela clareza.


Ferramentas e Bibliotecas Relacionadas

Adventure não é a única maneira de lidar com texto Minecraft. MiniMessage é uma biblioteca complementar do PaperMC que permite escrever texto sofisticado usando um formato de string mais simples em vez de construir componentes no código. Se você quiser menos código repetitivo e não se importa com análise de string, MiniMessage pode se adequar melhor. As duas bibliotecas funcionam juntas.

O próprio servidor Minecraft tem suporte a componentes de chat integrado (é isso que Adventure envolve), mas isso exige que você trabalhe com JSON bruto. O valor do Adventure é tornar isso menos doloroso.

Para suas próprias necessidades de UI do servidor, as ferramentas minecraft.how Gerador de Texto Minecraft e Criador de MOTD Minecraft permitem criar texto formatado visualmente sem escrever código algum, embora sejam separadas da biblioteca Adventure. Se você está apenas estilizando uma mensagem única, essas ferramentas são mais rápidas. Se você está construindo um plugin que gera centenas de mensagens dinamicamente, Adventure é sua resposta.


Por Que Isso Importa

A existência do Adventure significa que desenvolvedores de servidor gastam menos tempo lutando contra o formato de chat do Minecraft e mais tempo criando recursos reais. Não é vistoso, mas é o tipo de biblioteca que possibilita outras coisas. Todo plugin que exibe progresso de quests, menus de loja ou efeitos cosméticos provavelmente usa Adventure em algum lugar.

O fato de ser mantido pela PaperMC e ter sido estável por anos significa que não desaparecerá. É o padrão. Se você está sério sobre desenvolvimento de servidor, saber como trabalhar com componentes e builders economiza tempo e evita bugs. E se você está escrevendo plugins, você encontrará isso eventualmente de qualquer forma.

Sobre o autor
Alexandru Maftei
Alexandru MafteiRedator-chefe

Lead 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!

We use cookies to improve your experience. By continuing to use this site, you agree to our use of cookies. Read our Privacy Policy