Solución de problemas de Resource Pack Manager
Esta página solo cubre el comportamiento que está confirmado actualmente en el código de ResourcePackManager.
El primer paso más útil para cualquier problema de RSPM es:
/rspm status
Imprime la versión, el modo de despliegue (independiente vs network-backend), la clave de red enmascarada, el estado de los paquetes Java + Bedrock, la ruta de entrega activa con la URL, el host externo resuelto + la IP pública autodetectada, todos los flags de configuración relevantes, un recordatorio de despliegue del proxy (el jar del proxy de red es el mismo ResourcePackManager.jar) y la detección de Floodgate / Geyser-Spigot. El mismo comando existe cuando el jar se ejecuta en un proxy e imprime los equivalentes del lado del proxy (lista de backends, resultados de obtención por backend, estado del paquete fusionado).
Los jugadores no están recibiendo el paquete de recursos
Comprueba primero estos puntos:
autoHostdebe estar activado si quieres que ResourcePackManager envíe una URL automáticamente- el paquete fusionado debe existir y al menos una ruta de entrega (autoalojamiento o remoto) debe haber tenido éxito
- los jugadores solo reciben el paquete al conectarse, o mediante la difusión de la primera subida que se dispara en el momento en que el alojamiento queda listo
Si es necesario:
- Ejecuta
/rspm statusy mira la sección "Hosting".Active deliverymuestra si el autoalojamiento, el remoto o ninguno está actualmente en uso. - Si "active delivery: not yet ready" — la mezcla o la subida aún están en curso. El plugin muestra un banner llamativo en la consola cuando un jugador se conecta demasiado pronto y enviará automáticamente el paquete en el momento en que la entrega esté lista.
- Si "active delivery: none — hosting disabled or failed" —
autoHostestá desactivado, o los sondeos de autoalojamiento y la subida remota fallaron ambos. Consulta "Las comprobaciones de cordura del autoalojamiento fallaron" y "El alojamiento automático no puede contactar con el servidor remoto" más abajo. - Ejecuta
/rspm reload, observa la consola en busca de los resultados de la subida / del sondeo de autoalojamiento, y luego vuelve a conectarte con un jugador de prueba.
Si estás autoalojando a través de tu propia canalización externa (autoHost: false), RSPM no envía tu URL personalizada por ti. En esa configuración aún necesitas tu propio flujo de entrega de paquete desde el servidor.
ItemsAdder está instalado, pero su contenido falta en el paquete final
Esto suele significar que ItemsAdder sigue configurado de una forma que impide a ResourcePackManager leer o alojar su salida.
Usa:
/rspm itemsadder configure
Ese comando actualmente:
- activa
resource-pack.hosting.no-host.enabled - desactiva
protection_1,protection_2yprotection_3 - establece
resource-pack.zip.compress-json-files: false - ejecuta
/iareloady luego/iazip - recarga ResourcePackManager unos 15 segundos después
Si el comando te indica que ItemsAdder ya está alojando su propio paquete, desactiva manualmente el alojamiento de ItemsAdder primero y vuelve a ejecutar el comando.
El paquete fusionado es inválido o no se sube
La integración de alojamiento automático de ResourcePackManager gestiona explícitamente estos tipos de errores del lado del servidor:
- archivos requeridos faltantes
- archivo demasiado grande
- formato de archivo no válido
- sesión faltante
- servidor remoto no disponible
Si te topas con uno de estos:
- Ejecuta
/rspm reloadpara reconstruir el paquete. - Comprueba si uno de los paquetes fuente está mal formado, cifrado o es ilegible por algún otro motivo.
- Comprueba si el paquete final fusionado todavía contiene un
pack.mcmetay unpack.pngválidos en la raíz.
El plugin omite los paquetes que no puede extraer correctamente y registra advertencias en consola cuando esto ocurre.
Ante un error SESSION_NOT_FOUND del auto-host remoto, RSPM borra su UUID de sesión y se reinicializa en el siguiente tick de keep-alive — sin intervención manual.
Los assets de un plugin están sobrescribiendo los de otro plugin
Esto se controla mediante priorityOrder en:
plugins/ResourcePackManager/config.yml
Las entradas superiores ganan sobre las inferiores.
Para archivos no fusionables, ResourcePackManager reemplaza el archivo de menor prioridad. Para archivos JSON fusionables, fusiona el contenido en su lugar. Las categorías JSON actualmente fusionables son:
sounds.json- archivos de idioma
- JSON de modelos de ítems vanilla en
minecraft/models/item(fusión no recursiva: solo se combina el arrayoverridesentre paquetes, el resto del archivo sigue la regla de que gana la mayor prioridad) - archivos de atlas
- archivos de fuente
- definiciones de modelos de ítems 1.21.4+ en
items/(fusión consciente del formato que respeta la estructura del árbol de predicados)
pack.mcmeta también se fusiona de forma especial: gana el pack_format más alto, los rangos de supported_formats se amplían (se admiten las formas de entero, array de dos enteros y objeto {min_inclusive, max_inclusive}), las entradas de overlay se combinan y las claves de nivel superior no estándar se conservan. Las entradas de overlay se normalizan para compatibilidad con 1.21.9+ añadiendo los campos min_format/max_format cuando faltan. Las fuentes de atlas base también se fusionan en los archivos de atlas de overlay para evitar que los overlays oculten entradas base.
Si necesitas inspeccionar qué ocurrió durante la última fusión, consulta:
plugins/ResourcePackManager/collision_log.txt
El texto de GUI o elementos basados en fuentes se ven mal
Los archivos de fuente son una de las categorías JSON que ResourcePackManager fusiona, pero eso no garantiza que dos sistemas de fuentes distintos convivan bien en Minecraft.
Si un menú o HUD basado en fuentes se ve mal:
- Cambia
priorityOrderpara que el paquete que deseas que gane tenga mayor prioridad. - Ejecuta
/rspm reload. - Revisa
collision_log.txtpara confirmar que las colisiones ocurrieron donde esperabas.
Los cambios del paquete de recursos no aparecen de inmediato
ResourcePackManager tiene un watchdog para las fuentes de paquetes compatibles.
Espera hasta que un paquete modificado permanezca sin cambios durante 3 segundos, y entonces, una vez que todos los paquetes vigilados son estables, la nueva mezcla ocurre inmediatamente.
Si estás regenerando activamente el paquete de otro plugin, dale unos segundos después de que terminen las escrituras de archivos. En caso de duda, ejecuta /rspm reload después de que el plugin de origen haya terminado.
Las comprobaciones de cordura del autoalojamiento fallaron; recurriendo al alojamiento remoto
Este mensaje es comportamiento normal cuando preferSelfHost: true (el valor por defecto) y una de las tres comprobaciones de cordura del autoalojamiento falló:
- Capa 1 (heurística) — el host externo resuelto es RFC1918 / loopback / link-local. Bien establece
selfHostExternalHosta tu hostname público real, o asegúrate de que el plugin pueda alcanzar api.ipify.org / checkip.amazonaws.com. - Capa 2 (sondeo a sí mismo en localhost) — una solicitud HEAD a
http://127.0.0.1:<port>/rspm.zipno devolvió 200 con un cuerpo no vacío. Detecta colisiones de enlace de puerto o archivos de paquete faltantes. - Capa 3 (sondeo de accesibilidad externa) — magmaguy.com intentó obtener tu URL anunciada y no pudo alcanzarla. Lo más común: el puerto HTTP no está reenviado en el router / firewall. La URL del sondeo y el motivo se registran.
Soluciones (en orden de preferencia): abre el puerto HTTP en tu firewall + router, establece selfHostExternalHost a un hostname enrutable, o establece preferSelfHost: false para omitir el autoalojamiento por completo.
Cuando el propio sondeo de magmaguy.com es inaccesible (RSPM no puede hablar con él para preguntarle), se mantiene el autoalojamiento en lugar de marcarlo como fallido — el razonamiento es que la ruta de respaldo también necesita magmaguy.com, por lo que negarse a comprometerse por incapacidad de sondear sería paradójico.
Consulta Autoalojamiento para el árbol de decisión completo.
El alojamiento automático no puede contactar con el servidor remoto
El host remoto integrado de ResourcePackManager se comunica con:
https://magmaguy.com/rsp/
Si esa conexión falla, el plugin registra advertencias de comunicación y no puede usar el respaldo remoto hasta que vuelva a conectar correctamente.
Tus opciones son:
- arreglar la conectividad HTTPS saliente del servidor
- esperar a que el servicio remoto vuelva a estar accesible
- desactivar
autoHosty alojar el zip generado tú mismo - abrir tu puerto HTTP y mantener
preferSelfHost: truepara que RSPM use el autoalojamiento sin necesitar magmaguy.com en absoluto (en este escenario, establece tambiénselfHostExternalHosta tu hostname público para que el sondeo externo de la Capa 3 sea innecesario — RSPM mantiene el autoalojamiento ante un IOException del sondeo)
Quiero autoalojar el paquete fusionado a través de mi propio servidor web
La configuración soportada por el código es:
- Establece
autoHost: false. - Establece
resourcePackReroutingsi quieres que ResourcePackManager escriba una copia adicional en una carpeta existente. - Aloja
ResourcePackManager_RSP.ziptú mismo.
resourcePackRerouting se resuelve relativo al directorio plugins, y la carpeta de destino debe existir previamente.
Si en cambio quieres usar el servidor HTTP de autoalojamiento integrado de RSPM (cosa distinta — la misma JVM que el plugin), consulta Autoalojamiento.
Necesito inspeccionar qué datos remotos están almacenados para este servidor
Usa:
/rspm data_compliance_request
Si hay una sesión de alojamiento remoto activa, ResourcePackManager descarga la respuesta en:
plugins/ResourcePackManager/data_compliance
Si no hay sesión remota (p. ej. estás usando autoalojamiento), el comando informa que no hay datos remotos que solicitar.
El paquete de Bedrock no se está generando
bedrockConversionEnabled por defecto es true, así que debería ejecutarse automáticamente. Ejecuta /rspm status primero — la sección del paquete Bedrock te dirá por qué el paquete no está en disco:
- "No Bedrock target detected" — no hay Geyser-Spigot local, no hay Floodgate local y no está en modo de red. La conversión se omite intencionadamente. Instala Floodgate (para configuraciones de proxy) o Geyser-Spigot (para configuraciones independientes) y ejecuta
/rspm reload. - "Network mode is active so this backend SHOULD produce a Bedrock pack. The file is missing" — normalmente el primer ciclo de mezcla aún no se ha completado (espera ~30 s tras el arranque), o el escáner encontró cero definiciones de ítems en el paquete fusionado, o la conversión lanzó una excepción. Busca en la consola advertencias
[BedrockConverter]o la líneaGeneric scanner: discovered 0 items definition files.
Si falla la autodetección de Geyser:
- Establece
bedrockGeyserFolderenconfig.ymla la ruta de tu carpeta de datos de Geyser (p. ej.Geyser-Spigot). - La ruta puede ser absoluta o relativa al directorio
plugins.
El convertidor autodetecta Geyser en plugins/Geyser-Spigot/, cualquier variante plugins/Geyser-*/, o config/Geyser-*/ para configuraciones Fabric/NeoForge.
Para salida de log por ítem / por hueso, establece bedrockConverterDebug: true y recarga.
Los jugadores de Bedrock ven los ítems en mano en una posición incorrecta
Esto es un problema de ajuste, no un fallo de conversión. Abre plugins/ResourcePackManager/bedrock_display_offsets.yml y ajusta el eje pertinente. La primera persona y la tercera persona son independientes — ajustar una no afecta a la otra. El cliente de Bedrock recarga en vivo el JSON de attachable sin relanzar, así que iterar es rápido. Consulta Conversión a Bedrock para ver la lista completa de parámetros y lo que controla cada uno.
Las texturas de armadura personalizadas faltan en los jugadores de Bedrock
La armadura personalizada se renderiza en Bedrock combinando la geometría de armadura vanilla con la textura Java como capa visible. Para que esto funcione, el paquete del plugin de origen debe definir un archivo de equipamiento bajo assets/<namespace>/equipment/<material>.json junto a la definición del ítem. Si el log de conversión muestra el ítem pero no aparece textura de armadura en el juego, verifica que ese archivo existe en el paquete fusionado.
Proxy: "Floodgate key.pem missing" al arrancar el proxy
El plugin del proxy no pudo encontrar plugins/floodgate/key.pem en el host del proxy y quedó inactivo. RSPM deriva la identidad de red de ese archivo, así que sin él el proxy no puede enlazar con ningún backend. Solución:
- Instala Floodgate en el proxy. Es necesario para que los jugadores de Bedrock alcancen el proxy de todos modos, así que es algo que necesitas independientemente de RSPM.
- Asegúrate de que
plugins/floodgate/key.pemen el proxy sea idéntico byte a byte al mismo archivo en cada backend. Copia unkey.pemcanónico a cada componente (los demás backends + el proxy) y reinicia todo. Floodgate ya lo requiere para la autenticación de Bedrock, así que si los jugadores de Bedrock funcionan actualmente en tu red, esto ya está hecho.
Proxy: "no merged pack" tras varios ciclos de sondeo
Tras ~20 segundos de ciclos de sondeo vacíos (4 ciclos × intervalo por defecto de 5 s) en el proxy, RSPM registra un banner de diagnóstico único que lista cada backend que sondeó, la URL HTTP que intentó y el resultado (200 / 304 / 404 / CONNECT_FAILED / etc.). El banner explica las soluciones más comunes:
CONNECT_FAILEDen cada backend → el proxy no puede alcanzar el puerto HTTP del backend. Comprueba que la dirección envelocity.toml/config.ymlsea una que el proxy pueda alcanzar realmente (no, p. ej., un nombre interno de Docker que no se resuelve desde la red del proxy) y que el puerto HTTP anunciado del backend esté abierto entre el proxy y el backend. El banner imprime la URL exacta que intentó; antes de que un backend haya anunciado su puerto, el proxy recurre amcPort + network-http-offset-v2, por lo que unCONNECT_FAILEDtemprano también puede significar que ese puerto de respaldo aún no es accesible.NOT_FOUND_404en cada backend → los backends están en marcha pero no producen un paquete de Bedrock. Ejecuta/rspm statusen cada backend; el bloque de diagnóstico del paquete Bedrock te dirá por qué.
El banner se dispara una vez por periodo de atasco y se registra una línea "NetworkSync: recovered" cuando al menos un backend vuelve a devolver contenido. Consulta Redes proxy para más información.
Proxy: Los jugadores de Bedrock no ven modelos en el primer arranque del proxy
Geyser registra su tabla de ítems personalizados solo al arrancar el proxy. Si el proxy arrancó antes de que ningún backend produjera un paquete de Bedrock, Geyser se ejecuta con una tabla de mappings vacía y permanece así durante el resto de la sesión.
La solución es reiniciar el proxy después de que el backend haya registrado Wrote merged Geyser mappings: N entries. RSPM predespliega los mappings de la ejecución anterior al arrancar el proxy, por lo que esto solo afecta en una instalación completamente nueva — los arranques posteriores tienen algo listo antes de que Geyser escanee.
Backend: "Backend HTTP server failed to bind on port X"
En modo de red, el backend expone sus salidas de Bedrock a través de un pequeño servidor HTTP. Si el puerto está en uso o no disponible, verás un bloque [ERROR] de varias líneas en la consola. Soluciones:
- Establece
selfHostPorta un valor positivo diferente enconfig.yml. - O cambia
networkHttpOffset-v2para alejar el puerto autoderivado de la colisión (p. ej. ¿RCON enmcPort + 1? ponlo en 2 o 3). No necesitas actualizar el proxy para que coincida: una vez que el backend se enlaza correctamente, anuncia su puerto HTTP real al proxy automáticamente, por lo que el propionetwork-http-offset-v2del proxy solo importa como conjetura previa al anuncio.
Mientras el servidor HTTP del backend esté caído, el paquete de Bedrock de este backend no llegará al proxy por obtención directa. El respaldo por relevo de magmaguy.com sigue funcionando (el backend envía sus archivos al relevo y el proxy los obtiene a través de allí).
Limpiar una configuración v1 obsoleta
Los operadores que actualizan desde RSPM v1 pueden tener una clave networkHttpOffset (sin -v2) muerta en su config.yml. RSPM v2 intencionadamente no lee la clave antigua — obtienes el valor por defecto de la v2 (1) escrito en la configuración en el siguiente arranque automáticamente. La clave v1 muerta queda en tu config como un artefacto inofensivo hasta que la limpies a mano.