Skip to content
Pular para o conteúdo
Voltar ao Blog
InvUI: Criando GUIs Personalizadas para Servidor Minecraft

InvUI: Criando GUIs Personalizadas para Servidor Minecraft

Alexandru Maftei
Alexandru Maftei
@ice
Atualizado
26 visualizações
TL;DR:InvUI é uma biblioteca Java para criar GUIs personalizadas baseadas em inventário em servidores Paper. Ela gerencia paginação, abas, rolagem, animações e eventos para você focar em funcionalidades em vez de lutar com a API de inventário bruta do Minecraft. Perfeita para desenvolvedores de plugins que querem menus polidos sem boilerplate.
👍 Projeto Minecraft de código aberto

NichtStudioCode/InvUI

Uma biblioteca Paper para criar GUIs personalizadas baseadas em inventário.

⭐ 376 estrelas💻 Java📄 MIT
Ver no GitHub ↗

Se você está rodando um servidor Paper e quer que seus plugins pareçam polidos em vez de travados, GUIs personalizadas baseadas em inventário são imprescindíveis. InvUI é uma biblioteca Java que permite construí-las sem se afogar em boilerplate ou lutar com a API de inventário bruta do Minecraft. Você obtém componentes limpos e reutilizáveis, manipulação de eventos que faz sentido, e suporte para animações e layouts complexos.

O que este Projeto Faz

InvUI é uma biblioteca de servidor Paper projetada para lidar com um problema específico: GUIs baseadas em inventário para plugins. Em vez de registrar listeners de inventário brutos e fazer metade de sua lógica dentro de manipuladores de clique, InvUI oferece uma estrutura. Você define uma janela GUI, adiciona itens e botões com callbacks, e a biblioteca lida com as coisas repetitivas por trás dos panos.

Suporta uma ampla variedade de tipos de inventário além do baú básico. Baús, bigornas, destilarias, mesas de cartografia, mesas de trabalho, fornalhas, mós de pedra, comerciantes, mesas de smithing e cortadores de pedra. Diferentes jogos precisam de diferentes ferramentas, e InvUI permite escolher o recipiente certo para o que você está construindo.

O que a diferencia de escrever GUIs manualmente é a camada de abstração. Em vez de pensar em números de slot e eventos de clique, você pensa em componentes: botões, inventários com comportamento especial, layouts de múltiplas páginas. A biblioteca lida com o mapeamento disso para as restrições do Minecraft.


Por que Desenvolvedores de Servidor Usam Isto

Construir uma GUI do jeito difícil significa rastrear manualmente posições de itens, escrever listeners de clique, gerenciar seu próprio estado e lidar com todos os casos extremos que o Minecraft joga em você. Você acaba com código espaguete que é difícil de estender. InvUI troca essa bagunça por uma abordagem declarativa.

O sistema de eventos é onde as coisas ficam genuinamente úteis. Você pode definir o que acontece ao clicar em um item, definir restrições sobre quais itens podem entrar em slots específicos (permitir apenas tipos de itens específicos), personalizar tamanhos de pilha por slot e manipular eventos de pré-atualização. Mas isso desbloqueia GUIs que parecem responsivas e intuitivas em vez de lutar contra o jogador.

Suporte para animação é outro ganho. Você pode criar acabamento visual sem escrever lógica de atualização quadro a quadro. Para qualquer coisa, desde um simples spinner de carregamento até transições de menu animadas, InvUI lida com o timing.

Além disso, a biblioteca suporta layouts paginados para listas longas, interfaces com abas para organizar conteúdo e áreas roláveis. Se você já tentou construir qualquer um desses manualmente em plugins do Minecraft, sabe que é tedioso. Aqui está incorporado.


Colocando InvUI em Seu Projeto

A configuração assume que você tem um projeto de plugin baseado em Maven. Primeiro, adicione o repositório XenonDevs ao seu `pom.xml`:

xml
<repository>
 <id>xenondevs</id>
 <url>https://repo.xenondevs.xyz/releases</url>
</repository>

Então adicione a dependência. A versão 2.0.x suporta Paper 26.1.2, e é isso que você vai querer se estiver começando do zero. Se você está preso em versões mais antigas do Minecraft (voltando a 1.14), a versão 1.49 tem você coberto.

xml
<dependency>
 <groupId>xyz.xenondevs.invui</groupId>
 <artifactId>invui</artifactId>
 <version>2.0.0</version>
</dependency>

Se você estiver usando Gradle (escolha justa), o equivalente é óbvio. Depois que você tiver a dependência compilando, você está pronto para começar a definir janelas e itens.


Recursos Principais que Importam

Tipos de GUI. InvUI é fornecido com vários padrões de layout incorporados. Uma GUI normal é apenas uma grade fixa. GUIs paginadas permitem dividir conteúdo em várias telas com botões de navegação manipulados automaticamente. GUIs de rolagem funcionam como uma barra de rolagem vertical para listas grandes. GUIs com abas organizam conteúdo em visualizações separadas. Escolha a que corresponde ao que você está tentando construir em vez de reinventar a lógica de paginação todas as vezes.

Suporte MiniMessage. Códigos de cor em plugins do Minecraft são um incômodo. InvUI tem suporte de primeira classe para MiniMessage, o que significa que você pode usar uma sintaxe limpa como `Olá` em vez dos códigos de ampersand herdados do Minecraft. Seus nomes de itens e lore permanecem legíveis no código.

ItemBuilder para Localização. Se seu servidor é executado em vários idiomas (ou você está planejando eventualmente), o ItemBuilder do InvUI manipula trocas de idioma de forma limpa. Em vez de codificar nomes de itens, você os define uma vez e deixa a biblioteca lidar com as traduções. Pensar à frente nessas coisas economiza dor de refatoração mais tarde.

Sistema de Eventos Poderoso. Você pode anexar manipuladores de clique a itens específicos, validar entrada antes de pousar em um slot, personalizar limites de tamanho de pilha por slot e responder a eventos de pré-atualização. Isso significa que sua GUI pode realmente aplicar regras em vez de apenas parecer bonita e deixar os jogadores quebrarem tudo.

Inventários Incorporáveis. Este é um daqueles recursos que soa chato até você realmente precisar. Você pode incorporar um inventário dentro de uma janela GUI e usá-lo como um recipiente normal. Quer uma mesa de trabalho dentro de um menu maior? Uma área de armazenamento do jogador? Agora funciona naturalmente.


Armadilhas Comuns e Como Evitá-las

A versão 2.0 é uma quebra de mudança da 1.49. É uma reescrita completa otimizada para o Paper moderno, o que significa que seu código antigo não será compilado. Se você tiver um plugin existente em 1.49, atualizar não é trivial. Mas se você está começando do zero, apenas use 2.0.

A maior surpresa que as pessoas enfrentam: indexação de slot. InvUI abstrai a maior parte disso, mas você ainda precisa entender como o Minecraft mapeia slots de inventário para uma grade de 9 colunas. A documentação cobre, mas acertar errado significa que botões e itens acabam em lugares estranhos.

A ordem do evento importa. Eventos de pré-atualização de itens disparam antes de os cliques serem processados, e essa distinção muda como você valida entrada. Leia a documentação cuidadosamente antes de assumir que seu manipulador de eventos sempre verá o estado final.

O desempenho da animação pode ficar estranho se você estiver animando muitos itens ao mesmo tempo ou executando lógica de atualização que é cara. Mantenha callbacks de animação leves e teste em máquinas de baixo desempenho (ou pelo menos simule mentalmente).


Alternativas Vale a Pena Conhecer

Existem outras opções por aí. Alguns desenvolvedores criam GUIs manualmente usando listeners de inventário bruto do Minecraft e pulam a biblioteca inteiramente. Isso funciona se você quer dependências mínimas, mas você vai escrever muito mais código. Por outro lado, existem outras bibliotecas GUI para Paper, embora a documentação do InvUI e a manutenção ativa o tornem uma escolha sólida para novos projetos.

Se você está construindo algo super simples (um menu de baú único com 5 botões), a sobrecarga do InvUI pode parecer excessiva. Para qualquer coisa mais complexa, compensa.

Uma observação: se você estiver construindo GUIs para uma rede de servidores com um protocolo personalizado, você pode querer procurar em outro lugar. InvUI está firmemente focado em plugins Paper de servidor único. Não manipula comunicação entre servidores ou integração de proxy.


Além de Menus Básicos

Depois de ter menus simples funcionando, InvUI permite construir interfaces surpreendentemente sofisticadas. Combine layouts paginados com animações. Use GUIs com abas para organizar diferentes seções da configuração do seu plugin. Aproveite o sistema de eventos para construir ferramentas interativas (menus de pesquisa, mesas de trabalho, gerenciadores de equipamento).

O Gerador de Texto Minecraft pode ajudá-lo a criar nomes de itens sofisticados e formatação de lore para usar dentro de seus GUIs. Se você está servindo várias regiões ou idiomas, combine com o ItemBuilder do InvUI para localizar tudo consistentemente.

E se você está rodando um servidor público com vários sites e modos de jogo, você também pode estar gerenciando DNS. A ferramenta DNS Minecraft Gratuita lida com esse lado das coisas, para que seus jogadores possam se conectar ao seu servidor com um domínio personalizado em vez de um endereço IP.

A biblioteca é genuinamente bem documentada. Esse time mantém um guia completo em xenondevs.xyz com exemplos, e o canal de discussões do GitHub está ativo. Se você ficar preso, não está olhando para código esqueleto - você tem material de referência.

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