ResourcePackManager (RSPM)
O ResourcePackManager deteta, combina, aloja e distribui pacotes de recursos de plugins suportados e pacotes fornecidos manualmente. Também pode converter o pacote Java combinado num pacote Bedrock, para que os jogadores do GeyserMC vejam o mesmo conteúdo personalizado, e suporta redes com proxies BungeeCord e Velocity.
Funcionalidades
- Deteta pacotes de plugins suportados e combina-os conforme
priorityOrder. - Executa um servidor HTTP integrado para alojar o pacote combinado, sem exigir um serviço externo.
- Pode recorrer ao alojamento gratuito do MagmaGuy quando o alojamento próprio não for viável.
- Permite exigir ou solicitar opcionalmente a utilização do pacote.
- Monitoriza alterações nos pacotes e volta a combiná-los automaticamente quando as origens estabilizam.
- Converte o pacote Java combinado num pacote Bedrock para o GeyserMC.
- Regista entidades Bedrock personalizadas no Geyser através da extensão incluída, permitindo apresentar e animar entidades com modelos, como as do FreeMinecraftModels e EliteMobs, aos jogadores Bedrock.
- Funciona em redes com proxy: os backends participantes produzem pacotes Bedrock; o proxy deteta-os, combina os seus pacotes e disponibiliza o resultado através do Geyser.
- Liga a rede sem precisar de copiar uma chave: o proxy gere a chave, guarda-a no seu ficheiro
network-keye envia-a automaticamente a cada backend quando um jogador se liga a este pela primeira vez. - Pode atualizar-se através da rede: os backends disponibilizam o JAR universal numa rota autenticada; o proxy valida a estrutura e a versão, recusa versões anteriores, verifica os bytes transferidos por SHA-256 e prepara a atualização para o próximo encerramento.
Visão geral da arquitetura
O RSPM v2 é compilado com vários módulos Maven, mas distribuído num único JAR, ResourcePackManager.jar. Este contém os plugins para Bukkit/Paper, Velocity e BungeeCord. A plataforma carrega o ponto de entrada correspondente. Já não existem ficheiros separados ResourcePackManager-Velocity.jar ou ResourcePackManager-BungeeCord.jar para extrair.
A pasta proxy-extension/ continua a existir. Quando um backend deteta que está atrás de um proxy e nunca recebeu uma chave de rede, prepara uma cópia byte a byte idêntica do seu JAR em execução em plugins/ResourcePackManager/proxy-extension/ResourcePackManager.jar e pede que a copie para o proxy. É uma cópia conveniente do ficheiro que já tem.
O mesmo JAR desempenha funções diferentes conforme o local da instalação:
- No backend, em cada servidor Paper/Spigot: combina os pacotes Java, executa a conversão Bedrock, aloja o pacote, disponibiliza um servidor HTTP e envia os pacotes aos clientes Java.
- No proxy, Velocity ou BungeeCord: obtém o pacote Bedrock e os mapeamentos de cada backend, combina-os num pacote único para a rede e disponibiliza-o aos clientes Bedrock através do Geyser do proxy.
Um servidor independente precisa apenas do JAR no backend. Uma rede com proxy usa o mesmo JAR no proxy e nos backends que fornecem pacotes de recursos. Os servidores registados sem RSPM não atrasam a sincronização dos pacotes. Consulte a deteção de backends.
O JAR também funciona como extensão do Geyser. Ao detetar Geyser-Spigot local, o backend instala o mesmo ResourcePackManager.jar em Geyser-Spigot/extensions/, permitindo ao Geyser apresentar as entidades Bedrock personalizadas. O proxy faz o equivalente para o seu Geyser. O antigo ResourcePackManager-GeyserBridge.jar separado foi retirado e é substituído automaticamente através da fila de atualizações do Geyser. Consulte Extensão do Geyser e entidades personalizadas.
Opções de alojamento
A entrega do pacote Java segue esta precedência:
- Alojamento próprio forçado,
selfHostForce: true: sobrepõe-se aautoHosteselfHostEnabled, ignora as verificações de acessibilidade e o envio remoto. Destina-se sobretudo a testes. A validação do URL e o arranque HTTP têm de funcionar antes do anúncio. - Com
autoHost: true,preferSelfHost: trueeselfHostEnabled: true, o RSPM tenta primeiro alojamento próprio em servidores independentes e backends de proxy. Verifica o endereço, compara amostras do pacote transferidas através de localhost e do URL exato do jogador, e exige acessibilidade externa antes de anunciar o URL. Uma verificação falhada ou indisponível leva ao alojamento remoto. O proxy continua a obter os artefactos Bedrock pelo servidor HTTP do backend. - Alojamento remoto de recurso: se o alojamento próprio estiver desativado ou a verificação falhar, o RSPM reutiliza ou envia o pacote para
magmaguy.com/rsp/e anuncia esse URL. Uma falha remota pode recorrer ao alojamento próprio comselfHostEnabled: true, sujeito à mesma verificação. Se ambas as vias automáticas falharem, não é anunciado um novo URL de entrega.
Com autoHost: false e selfHostForce: false, o RSPM escreve o ZIP combinado em plugins/ResourcePackManager/output/, sem enviar um URL.
Consulte a decisão completa de entrega, a resolução de portas e a deteção do endereço externo em Alojamento próprio.
selfHostExternalUrl permite expor o pacote Java através de um proxy inverso num URL HTTP ou HTTPS completo, mantendo a entrega automática. O proxy inverso gere o TLS e encaminha para a rota integrada /rspm.zip.
Conversão de Java para Bedrock
O conversor percorre recursivamente todos os ficheiros de definição de objetos no formato 1.21.4 ou posterior, assets/<namespace>/items/**/*.json, do pacote combinado. Produz geometria Bedrock, elementos equipáveis e ícones de inventário para o plugin que os forneceu; não está limitado ao FreeMinecraftModels.
- Os jogadores Bedrock veem objetos 3D, armaduras personalizadas e equipamento com modelos de qualquer plugin que use esse formato.
- As texturas de armadura personalizadas usam a geometria normal de armadura Bedrock, com a textura Java como camada visível.
- Os ícones dos objetos 3D são renderizados por software a partir do modelo Java, usando a transformação
display.gui. - O pacote Bedrock é disponibilizado em cada sessão Bedrock através da API do Geyser. As alterações de texturas e modelos chegam ao próximo jogador que se ligar sem reiniciar o servidor. Os mapeamentos de objetos personalizados continuam a exigir reinício, pois o Geyser regista-os no arranque.
- Os objetos 3D na mão recebem as poses de primeira e terceira pessoa das transformações
display.firstperson_righthandedisplay.thirdperson_righthanddo modelo Java, convertidas para o esqueleto normal do jogador Bedrock. Não há desvios a ajustar. - Os objetos 3D na mão cujo plugin inclua um ficheiro auxiliar de partículas, como os objetos do FreeMinecraftModels com efeitos de partículas, reproduzem essas partículas para os jogadores Bedrock. Os conjuntos de entidades também podem incluir ficheiros de partículas Bedrock.
Integrações atuais
O ResourcePackManager inclui definições de integração para:
- BackpackPlus
- BetterHUD
- BetterStructures
- CannonRTP
- EliteMobs
- EternalTD
- FreeMinecraftModels
- InfiniteVehicles
- ItemsAdder
- MegaBlockSurvivors
- MMOInventory
- ModelEngine
- Nexo
- Nova
- Oraxen
- RealisticSurvival
- ResurrectionChest
- ValhallaMMO
- vane-core
Cada integração só é ativada se o plugin estiver instalado e o caminho local ou URL remoto configurado puder ser usado. No arranque, o RSPM também deteta Geyser-Spigot no backend ou Geyser-Velocity/Geyser-BungeeCord no proxy e liga a entrega Bedrock à instalação encontrada.
Próximas páginas
- Instalação: configuração de um servidor independente.
- Redes com proxy: instalação em BungeeCord e Velocity.
- Alojamento próprio: servidor HTTP integrado, portas e endereço externo.
- Conversão Bedrock/Geyser: o que é convertido e como.
- Extensão do Geyser e entidades personalizadas: instalação da extensão incluída e versões exigidas do Geyser.
- Perguntas frequentes.
- Resolução de problemas: verificações quando algo falha.
- API: registar pacotes a partir do seu plugin.