Saltar al contenido principal

ResourcePackManager (RSPM)

ResourcePackManager descubre, fusiona, aloja y distribuye paquetes de recursos de plugins compatibles y de paquetes suministrados manualmente. También puede convertir el paquete Java fusionado en un paquete de recursos de Bedrock para que los jugadores de GeyserMC vean el mismo contenido personalizado que los jugadores de Java, y ofrece soporte de primera clase para redes proxy de BungeeCord, Waterfall y Velocity.

Qué hace

  • descubre paquetes de plugins compatibles y los fusiona según priorityOrder
  • ejecuta su propio servidor HTTP integrado para poder autoalojar el paquete fusionado (sin necesidad de un host de archivos externo)
  • puede recurrir al alojamiento gratuito de MagmaGuy (auto-host) cuando el autoalojamiento no es viable
  • puede forzar u opcionalmente solicitar el uso del paquete
  • vigila los cambios en los paquetes y vuelve a fusionar automáticamente cuando las fuentes se estabilizan
  • convierte el paquete Java fusionado en un paquete de recursos de Bedrock para GeyserMC
  • registra verdaderas entidades personalizadas de Bedrock en Geyser mediante una extensión de Geyser incluida, de modo que las entidades modeladas (p. ej. FreeMinecraftModels, EliteMobs) se renderizan y animan para los jugadores de Bedrock
  • funciona en redes proxy: cada backend produce su propio paquete de Bedrock, el plugin del proxy los recoge, los fusiona y sirve el resultado a través de Geyser
  • enlaza una red sin ninguna clave que pegar: el proxy es el dueño de la clave de red, la guarda en su propio archivo network-key y se la envía a cada backend automáticamente la primera vez que un jugador se conecta allí
  • puede mantenerse actualizado en toda una red: los backends ofrecen el jar universal del plugin a través de una ruta autenticada; el proxy valida su estructura y versión, rechaza las bajadas de versión, verifica los bytes transferidos por SHA-256 y lo prepara para el siguiente apagado

Arquitectura a primera vista

RSPM v2 es una compilación Maven multimódulo, pero se distribuye como un único jar: ResourcePackManager.jar. Ese único jar contiene el plugin de Bukkit/Paper, el plugin de Velocity y el plugin de BungeeCord/Waterfall todos a la vez — Minecraft carga el punto de entrada que coincida con la plataforma en la que se ejecuta. Ya no existen archivos ResourcePackManager-Velocity.jar / ResourcePackManager-BungeeCord.jar separados que extraer.

La carpeta proxy-extension/ sigue existiendo, pero ahora significa otra cosa: cuando un backend se da cuenta de que está detrás de un proxy y nunca ha recibido una clave de red, prepara una copia byte a byte idéntica de su propio jar en ejecución en plugins/ResourcePackManager/proxy-extension/ResourcePackManager.jar y te dice que copies ese único archivo al proxy. Es una copia por comodidad del jar que ya tienes, no un artefacto separado por plataforma.

El mismo jar desempeña dos roles según dónde lo coloques:

  • Como plugin de backend (en cada backend de Paper/Spigot) — mezcla paquetes Java, ejecuta el convertidor de Bedrock, aloja el paquete, expone un pequeño servidor HTTP y envía paquetes a los clientes Java.
  • Como plugin del proxy (en un proxy de Velocity o BungeeCord/Waterfall) — obtiene el paquete de Bedrock y los mappings de cada backend, los fusiona en un único paquete a nivel de red y los sirve a los clientes de Bedrock a través del Geyser del proxy.

Un servidor independiente solo necesita el jar en el backend. Una red proxy necesita el mismo jar en cada backend Y una copia en el proxy.

El mismo jar hace además de extensión de Geyser. Cuando el backend detecta una instalación local de Geyser-Spigot, instala ese mismísimo ResourcePackManager.jar universal en Geyser-Spigot/extensions/ para que Geyser pueda renderizar las entidades de Bedrock personalizadas de RSPM; el rol de proxy hace lo mismo con el Geyser del proxy. (Las versiones antiguas incluían un ResourcePackManager-GeyserBridge.jar separado — ese archivo está retirado y se reemplaza automáticamente a través de la cola de actualización de Geyser.) Consulta Extensión de Geyser y entidades personalizadas.

Opciones de alojamiento

La entrega del paquete Java usa esta precedencia:

  1. Autoalojamiento forzado (selfHostForce: true) — pasa por encima de autoHost y selfHostEnabled, omite todos los sondeos y la subida remota, y anuncia la URL local. Principalmente para pruebas.
  2. Autoalojamiento primero (autoHost: true, preferSelfHost: true y selfHostEnabled: true, todos por defecto) — RSPM inicia su propio servidor HTTP, ejecuta una cadena de comprobaciones de cordura (dirección no LAN, sondeo a sí mismo en localhost, sondeo de accesibilidad externa vía magmaguy.com) y anuncia la URL local a los clientes. Coste de ancho de banda cero para MagmaGuy. Esta preferencia de "intentar autoalojar primero" se omite en un backend de proxy, que pasa directamente al paso 3; el propio servidor HTTP del backend sí sigue ejecutándose allí, porque el proxy le obtiene de él los artefactos de Bedrock.
  3. Respaldo de auto-host remoto — si el autoalojamiento está desactivado o falla una comprobación real de accesibilidad del autoalojamiento, RSPM sube el paquete al CDN de MagmaGuy en magmaguy.com/rsp/ y anuncia esa URL en su lugar. Si la ruta remota falla, puede recurrir al autoalojamiento cuando selfHostEnabled: true.

Si autoHost: false y selfHostForce: false, RSPM escribe el zip fusionado en plugins/ResourcePackManager/output/ sin enviar ninguna URL.

Consulta Autoalojamiento para el árbol de decisión completo de entrega, resolución de puertos y detección del host externo.

Conversión de Java a Bedrock

El convertidor de Bedrock ya no es exclusivo de FreeMinecraftModels. Recorre recursivamente cada archivo de definición de ítems 1.21.4+ (assets/<namespace>/items/**/*.json) del paquete fusionado y produce geometría, attachables e iconos de inventario de Bedrock para cualquier plugin que los haya proporcionado:

  • Los jugadores de Bedrock ven ítems 3D, armaduras personalizadas y equipo modelado para cualquier plugin cuyo paquete use el formato de definición de ítems 1.21.4+.
  • Las texturas de armadura personalizadas se renderizan en jugadores de Bedrock usando la geometría de armadura vanilla con la textura Java como capa visible.
  • Los iconos de inventario para ítems 3D se renderizan por software a partir del modelo Java mediante la transformación display.gui.
  • El paquete de Bedrock se sirve en vivo por sesión de Bedrock a través de la API de Geyser, de modo que los retoques de textura y modelo llegan al siguiente jugador de Bedrock que se conecte sin reiniciar el servidor. Las asignaciones de ítems personalizados siguen requiriendo un reinicio porque Geyser las registra al arrancar.
  • Doce parámetros ajustables por el usuario para los desplazamientos de visualización del ítem en mano (seis para primera persona, seis para tercera persona) en bedrock_display_offsets.yml.

Integraciones actuales

ResourcePackManager incluye entradas de integración predefinidas para estos plugins:

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

Cada integración solo se activa si el plugin está instalado y su ruta local o URL remota configurada es utilizable. El plugin también detecta Geyser (Geyser-Spigot en un backend, Geyser-Velocity / Geyser-BungeeCord en un proxy) al arrancar y conecta la entrega del paquete de Bedrock con el que encuentre.

A dónde ir después