Pular para o conteúdo principal

FAQ do Resource Pack Manager

Se sua dúvida não for respondida aqui, confira primeiro as outras páginas do ResourcePackManager na barra lateral.

Quais comandos o ResourcePackManager expõe atualmente?

No backend (Paper / Spigot), a superfície de comandos suportada pelo código é:

  • /rspm setup — abre um menu de configuração em GUI no jogo (status de atualização do plugin, plugins recomendados, alternância de atualizações automáticas, links para wiki / Discord / conta Nightbreak)
  • /rspm reload — reconstrói e re-hospeda o pack unificado
  • /rspm status — dump completo de diagnóstico (estado do pack, modo de hospedagem, chave da rede, integrações)
  • /rspm itemsadder configure — configura o ItemsAdder para hospedagem via RSPM
  • /rspm itemsadder dismiss — descarta permanentemente o aviso do ItemsAdder para o UUID do seu jogador
  • /rspm data_compliance_request — baixa todos os dados armazenados remotamente para este servidor

O comando raiz é /resourcepackmanager, tendo /rspm como alias. Alguns poucos subcomandos compartilhados do MagmaCore/Nightbreak (por exemplo, /rspm recommendedplugins, /rspm downloadall) também são registrados e são para onde os botões do menu de configuração apontam.

Permissões do backend:

  • /rspm setup exige resourcepackmanager.setup e é exclusivo de jogadores (abre uma GUI de inventário).
  • /rspm reload, /rspm status, /rspm itemsadder <configure|dismiss> e /rspm data_compliance_request exigem todos resourcepackmanager.*.

No plugin do proxy (Velocity / BungeeCord), só existem comandos de diagnóstico:

  • /rspm status — snapshot do lado do proxy: lista de backends, resultados de fetch por backend, estado do pack unificado, detecção de Geyser/Floodgate
  • /rspm debug bedrock [on|off] — Velocity e BungeeCord. Alterna as linhas de log detalhadas [RSPM-BedrockDebug] do GeyserBinder para diagnosticar casos de "jogador Bedrock entrou mas não viu o pack". Volta a desligada no restart do proxy. Executá-lo sem argumento imprime o estado atual.

Os comandos do proxy verificam resourcepackmanager.command.status ou resourcepackmanager.*. O console sempre tem ambas; jogadores precisam que sejam concedidas por meio do seu plugin de permissões. A saída é segura para compartilhar — a chave da rede é mascarada e nenhum token é impresso — então conceder amplamente é tranquilo.

Quais plugins são suportados atualmente?

O ResourcePackManager já vem com entradas de integração prontas para estes plugins:

  • BackpackPlus
  • BetterHUD
  • BetterStructures
  • CannonRTP
  • EliteMobs
  • EternalTD
  • FreeMinecraftModels
  • InfiniteVehicles
  • ItemsAdder
  • MegaBlockSurvivors
  • MMOInventory
  • ModelEngine
  • Nexo
  • Nova
  • Oraxen
  • RealisticSurvival
  • ResurrectionChest
  • ValhallaMMO
  • vane-core

Essas integrações só entram em vigor se o plugin estiver instalado e seu caminho local ou URL remota configurados forem utilizáveis.

Cada integração tem seu próprio arquivo YAML de configuração em plugins/ResourcePackManager/compatible_plugins/. Lá você pode personalizar isEnabled, pluginName, localPath, url, zips, cluster, additionalLocalPath e reloadCommand para cada plugin. A opção cluster informa ao ResourcePackManager que o caminho local deve ser tratado como um diretório contendo várias subpastas de resource pack que devem ser todas unidas.

O ResourcePackManager é compatível com o ItemsAdder?

Sim. O ResourcePackManager inclui um fluxo de auxiliar e de aviso integrado para o ItemsAdder.

Se o ItemsAdder estiver instalado e ainda precisar ser ajustado para hospedagem via ResourcePackManager, jogadores OP recebem um aviso clicável alguns segundos após entrar. Jogadores que descartaram o aviso permanentemente não o veem novamente. A partir daí você pode:

  • executar /rspm itemsadder configure para definir resource-pack.hosting.no-host.enabled: true, desativar as três configurações de protect-file-from-unzip, definir compress-json-files: false, executar /iareload e depois /iazip, e em seguida recarregar o ResourcePackManager (~15s depois)
  • executar /rspm itemsadder dismiss para descartar permanentemente esse aviso para o UUID do seu jogador

Se o ItemsAdder já estiver configurado para hospedar o próprio pack por meio de algum de seus modos de hospedagem, o comando auxiliar não substitui isso automaticamente. Ele informa que você deve desativar a hospedagem do ItemsAdder antes.

Posso adicionar meu próprio pack à união?

Sim. Coloque seu arquivo .zip em:

plugins/ResourcePackManager/mixer

Se quiser controlar qual pack vence em conflitos de arquivos, adicione o nome exato do arquivo, incluindo o .zip, em priorityOrder no plugins/ResourcePackManager/config.yml.

Exemplo:

priorityOrder:
- ResourcePackManager
- EliteMobs
- MyCustomPack.zip

Como funciona a prioridade?

priorityOrder define a prioridade mais alta no topo e a mais baixa embaixo.

Para arquivos não mescláveis, o pack de maior prioridade substitui o arquivo de menor prioridade. Para arquivos JSON mescláveis, o ResourcePackManager une os conteúdos em vez de substituí-los cegamente.

O código atualmente trata estes como mescláveis:

  • sounds.json
  • arquivos de idioma em lang ou languages
  • JSON de modelo de item vanilla em minecraft/models/item (esses recebem uma mescla não recursiva: apenas o array overrides é combinado entre packs, enquanto o restante do arquivo segue o critério de maior-prioridade-vence)
  • arquivos de atlas
  • arquivos de fonte
  • definições de modelo de item 1.21.4+ em items/ (mescla ciente do formato: mantém intactas as árvores de predicados, sem recorrer cegamente para tipos de nó diferentes)

pack.mcmeta é mesclado de forma especial: o maior pack_format vence, intervalos de supported_formats são ampliados para cobrir todos os packs (suportam as formas inteira, array de dois inteiros e objeto {min_inclusive, max_inclusive}), entradas de overlay são combinadas, e chaves de topo não padronizadas (por exemplo, sodium) são preservadas. As entradas de overlay são normalizadas para compatibilidade com 1.21.9+ pela adição dos campos min_format/max_format quando ausentes.

Após todos os packs serem unidos, o ResourcePackManager mescla as fontes do atlas base nos arquivos de overlay de atlas. Isso evita que overlays acidentalmente ocultem entradas de atlas base quando o Minecraft ativa um overlay (por exemplo, ia_overlay_modern_atlas / ia_overlay_legacy_atlas do ItemsAdder).

Outros arquivos JSON são substituídos em vez de mesclados.

Packs que não estão listados em priorityOrder ainda são incluídos na união, mas recebem a menor prioridade.

O ResourcePackManager reconstrói automaticamente quando os packs mudam?

Sim. Ele monitora as fontes de pack suportadas em busca de mudanças.

Quando um pack monitorado para de mudar por 3 segundos, o ResourcePackManager o marca como estável. Quando todos os packs monitorados estão estáveis, o re-mix acontece imediatamente. Durante essa transição, jogadores OP online são notificados: "All resource packs are stable. Mixing and sending now."

O watchdog leva em conta a inicialização do plugin?

Sim. O watchdog tem ciência dos estados de inicialização de plugins Magmacore.

  • Ele aguarda todos os plugins monitorados concluírem a inicialização Magmacore antes de iniciar as checagens de estabilidade.
  • Se um plugin é recarregado enquanto o watchdog está em execução, ele detecta a mudança de estado, pausa, reseta todo o rastreamento de estabilidade e aguarda o plugin terminar de se reinicializar.
  • Isso evita falsas detecções de "instabilidade" que ocorreriam durante sequências normais de inicialização ou reload de plugins.

Como os jogadores recebem o pack final?

Quando autoHost está habilitado (padrão), o RSPM escolhe um caminho de entrega automaticamente e envia essa URL a todo jogador que entrar. A árvore de decisão é:

  1. Se selfHostForce: true, sempre faz self-host (pula todos os probes — principalmente para testes).
  2. Caso contrário, se preferSelfHost: true (padrão), tenta o self-host primeiro, executa três checagens de sanidade (host externo resolvido não-LAN, self-probe em localhost, probe de alcançabilidade externa via magmaguy.com) e compromete-se com o self-host se as três passarem.
  3. Se o self-host falhar ou estiver desabilitado, faz upload do pack para magmaguy.com/rsp/ e anuncia essa URL.

Uma vez de posse de uma URL, o RSPM usa a API de múltiplos packs no Minecraft 1.20.3+, podendo coexistir com outros packs enviados pelo servidor. Em versões anteriores, recorre ao método antigo de pack único, que substitui qualquer atribuição de resource pack existente do servidor.

Se autoHost: false, o RSPM não envia nenhuma URL — espera-se que você pegue o zip de plugins/ResourcePackManager/output/ e o sirva por meio do seu próprio pipeline.

Consulte Self-hosting para a árvore de decisão completa de entrega.

Posso fazer self-host em vez de usar o auto-host integrado?

Sim — e a partir do RSPM v2, o servidor HTTP integrado é o caminho de self-host recomendado. selfHostEnabled: true e preferSelfHost: true vêm ambos ativados por padrão.

Se você quiser hospedar o zip por meio do seu próprio servidor web existente, em vez de qualquer um dos caminhos integrados:

  • Defina autoHost: false.
  • Opcionalmente defina resourcePackRerouting como um caminho de pasta existente relativo ao diretório plugins.
  • Pegue o pack unificado de plugins/ResourcePackManager/output/ResourcePackManager_RSP.zip e o hospede por conta própria.

Se resourcePackRerouting estiver definido, o RSPM também grava uma cópia desse zip na pasta de redirecionamento. Esse caminho de redirecionamento é resolvido em relação ao diretório plugins, e a pasta de destino já deve existir.

Existe um comando para solicitar dados armazenados no host?

Sim. Use:

/rspm data_compliance_request

Se o auto-host remoto do magmaguy.com tiver uma sessão ativa, o ResourcePackManager baixa a resposta para:

plugins/ResourcePackManager/data_compliance

Se não houver sessão remota ativa (por exemplo, se você estiver fazendo self-host), o comando informa que não há dados remotos a solicitar.

Quais opções de configuração estão disponíveis?

O plugins/ResourcePackManager/config.yml expõe o seguinte:

Geral

  • priorityOrder — lista que controla quais packs vencem em conflitos de arquivos (maior prioridade primeiro)
  • autoHost — se o ResourcePackManager auto-hospeda e envia o pack unificado (boolean, padrão true)
  • forceResourcePack — se os jogadores devem ser forçados a aceitar o pack (boolean, padrão false)
  • resourcePackPrompt — o prompt exibido quando o pack é oferecido (padrão "Use recommended resource pack?")
  • resourcePackRerouting — caminho opcional de pasta (relativo a plugins) para gravar uma cópia extra do zip unificado
  • nightbreak.autoDownloadPluginUpdates — se o RSPM baixa automaticamente suas próprias atualizações de plugin na inicialização (boolean, padrão false; ainda é necessário um restart para aplicar uma atualização baixada). Esta é uma chave aninhada sob a seção nightbreak:, não uma chave de topo — procurar no config.yml por uma linha autoDownloadPluginUpdates solta só a encontrará indentada sob nightbreak:. É a mesma alternância exposta na GUI de /rspm setup.

Self-hosting

  • selfHostEnabled — se o servidor HTTP integrado pode ser usado (boolean, padrão true)
  • selfHostPort — porta do servidor HTTP de self-host. -1 (padrão) auto-deriva como mcPort + networkHttpOffset-v2. Defina qualquer inteiro positivo para forçar uma porta explícita.
  • networkHttpOffset-v2 — offset de fallback adicionado à porta do servidor Minecraft quando selfHostPort = -1. Padrão 1 (por exemplo, MC 25565 → HTTP 25566). Em uma rede, você não precisa mais manter isso em sincronia com o proxy: o backend auto-anuncia ao proxy a porta HTTP exata em que efetivamente se vinculou, e o proxy só usa seu próprio network-http-offset-v2 como palpite antes que esse anúncio chegue.
  • selfHostExternalHost — hostname ou IP público que os clientes usam para alcançar seu servidor de self-host. Vazio (padrão) = auto-detecção via api.ipify.org / checkip.amazonaws.com.
  • selfHostForce — pula todas as checagens de sanidade E o upload remoto, sempre faz self-host (boolean, padrão false — para testes).
  • preferSelfHost — tenta o self-host primeiro com checagens de sanidade antes de recorrer ao upload remoto (boolean, padrão true).

Bedrock

  • bedrockConversionEnabled — converte o pack Java unificado em um pack Bedrock para o GeyserMC (padrão true)
  • bedrockAutoDeployToGeyser — copia o arquivo de custom mappings do Geyser para a pasta Geyser detectada (padrão true)
  • bedrockGeyserFolder — substituição manual de caminho para a pasta do Geyser; vazio = auto-detecção
  • bedrockConverterDebug — linhas de log detalhadas por item / por osso do pipeline Bedrock (padrão false)

Um segundo arquivo, plugins/ResourcePackManager/bedrock_display_offsets.yml, expõe doze parâmetros ajustáveis pelo usuário para refinar onde os jogadores Bedrock veem os itens segurados em relação à mão (seis para primeira pessoa, seis para terceira pessoa). Consulte a conversão Bedrock para detalhes.

Intencionalmente não há opção de configuração network-key. A chave que liga o proxy aos seus backends é auto-derivada de plugins/floodgate/key.pem em cada JVM. O Floodgate já exige que esse arquivo seja o mesmo em toda a rede para a autenticação Bedrock, então a chave derivada coincide automaticamente em todos os lugares.

Outros plugins podem registrar seus packs via código?

Sim. O ResourcePackManager expõe uma API Java para registro programático de packs. Consulte a página da API para detalhes.

A conversão Bedrock só funciona para o FreeMinecraftModels?

Não, não mais. O conversor atual lida com qualquer plugin cujo pack inclua definições de itens 1.21.4+ em assets/<namespace>/items/*.json. Isso cobre modelos de ossos do FreeMinecraftModels, equipamentos do EliteMobs, itens personalizados do Oraxen/Nexo, conjuntos de armadura personalizada e qualquer pack que você monte por conta própria nesse formato. Itens 2D simples personalizados são emitidos como ícones Bedrock planos; itens 3D personalizados emitem geometria/attachables Bedrock e um ícone de inventário renderizado por software.

Preciso reiniciar o servidor sempre que o pack Bedrock mudar?

Ajustes de textura e modelo em itens personalizados já existentes entram em vigor para o próximo jogador Bedrock que entrar — o RSPM serve o pack Bedrock ao vivo por sessão via API do Geyser. O reinício só é necessário quando o conjunto de itens personalizados muda (adicionar novos ou remover existentes), pois o Geyser registra seus identificadores de itens personalizados na inicialização.

O ResourcePackManager funciona em BungeeCord / Velocity?

Sim — é uma topologia suportada de primeira classe. É o mesmo ResourcePackManager.jar em todos os lugares: coloque-o em cada backend e coloque uma cópia no proxy. O único jar agrupa os pontos de entrada Bukkit, Velocity e BungeeCord/Waterfall, então ele carrega corretamente seja o host um backend ou um proxy. Não existem mais jars de proxy separados nem pasta proxy-extension/.

Rodando como plugin de proxy, ele une o pack Bedrock convertido de cada backend e o serve a clientes Bedrock por meio do Geyser do proxy. A entrega do pack Java ainda é tratada por cada backend diretamente — clientes Java veem packs por backend.

Os passos de configuração, solução de problemas e verificação estão em Redes com Proxy.