ResourcePackManager (RSPM)
ResourcePackManager détecte, fusionne, héberge et distribue les packs de ressources des plugins pris en charge ainsi que des packs fournis manuellement. Il peut également convertir le pack Java fusionné en pack de ressources Bedrock afin que les joueurs GeyserMC voient le même contenu personnalisé que les joueurs Java, et il offre une prise en charge de première classe des réseaux proxy BungeeCord, Waterfall et Velocity.
Ce qu'il fait
- détecte les packs des plugins pris en charge et les fusionne selon
priorityOrder - exécute son propre serveur HTTP intégré pour pouvoir auto-héberger le pack fusionné (aucun hôte de fichiers externe requis)
- peut se replier sur l'hébergement gratuit de MagmaGuy (auto-hébergement distant) lorsque l'auto-hébergement n'est pas viable
- peut forcer l'utilisation du pack ou la proposer en option
- surveille les modifications des packs et refusionne automatiquement lorsque les sources se stabilisent
- convertit le pack Java fusionné en pack de ressources Bedrock pour GeyserMC
- enregistre auprès de Geyser de véritables entités Bedrock personnalisées via une extension Geyser intégrée, afin que les entités modélisées (par ex. FreeMinecraftModels, EliteMobs) s'affichent et s'animent pour les joueurs Bedrock
- fonctionne sur les réseaux proxy : chaque backend produit son propre pack Bedrock, le plugin proxy les récupère, les fusionne et sert le résultat via Geyser
- relie un réseau sans aucune clé à coller : le proxy possède la clé réseau, l'enregistre dans son propre fichier
network-keyet la transmet automatiquement à chaque backend la première fois qu'un joueur s'y connecte - peut se tenir à jour à l'échelle d'un réseau : les backends proposent le jar de plugin universel via une route authentifiée ; le proxy valide sa structure et sa version, refuse les rétrogradations, vérifie les octets transférés par SHA-256 et le prépare pour le prochain arrêt
Aperçu de l'architecture
RSPM v2 est un build Maven multi-module, mais il est livré sous forme de jar unique : ResourcePackManager.jar. Ce jar unique contient à la fois le plugin Bukkit/Paper, le plugin Velocity et le plugin BungeeCord/Waterfall — Minecraft charge le point d'entrée correspondant à la plateforme sur laquelle il s'exécute. Il n'y a plus de fichiers ResourcePackManager-Velocity.jar / ResourcePackManager-BungeeCord.jar séparés à extraire.
Le dossier proxy-extension/ existe toujours, mais il signifie autre chose désormais : lorsqu'un backend remarque qu'il est derrière un proxy et qu'aucune clé réseau ne lui a jamais été remise, il prépare une copie octet par octet identique de son propre jar en cours d'exécution dans plugins/ResourcePackManager/proxy-extension/ResourcePackManager.jar et vous demande de copier ce seul fichier sur le proxy. C'est une copie de commodité du jar que vous avez déjà, pas un artefact distinct par plateforme.
Le même jar joue deux rôles selon l'endroit où vous le déposez :
- En tant que plugin backend (sur chaque backend Paper/Spigot) — fusionne les packs Java, exécute le convertisseur Bedrock, héberge le pack, expose un petit serveur HTTP et pousse les packs aux clients Java.
- En tant que plugin proxy (sur un proxy Velocity ou BungeeCord/Waterfall) — récupère le pack Bedrock et les mappings de chaque backend, les fusionne en un seul pack à l'échelle du réseau et le sert aux clients Bedrock via le Geyser du proxy.
Un serveur autonome n'a besoin que du jar sur le backend. Un réseau proxy a besoin du même jar sur chaque backend ET d'une copie sur le proxy.
Le même jar fait également office d'extension Geyser. Lorsque le backend détecte une installation Geyser-Spigot locale, il installe exactement ce même ResourcePackManager.jar universel dans Geyser-Spigot/extensions/ afin que Geyser puisse rendre les entités Bedrock personnalisées de RSPM ; le rôle proxy fait de même pour le Geyser du proxy. (Les anciennes versions livraient un ResourcePackManager-GeyserBridge.jar séparé — ce fichier est retiré et remplacé automatiquement via la file de mise à jour de Geyser.) Voir Extension Geyser et entités personnalisées.
Options d'hébergement
La distribution du pack Java suit cet ordre de priorité :
- Auto-hébergement forcé (
selfHostForce: true) — surchargeautoHostetselfHostEnabled, saute toutes les sondes et le téléversement distant, et annonce l'URL locale. Principalement pour les tests. - Auto-hébergement d'abord (
autoHost: true,preferSelfHost: trueetselfHostEnabled: true, tous par défaut) — RSPM démarre son propre serveur HTTP, exécute une chaîne de vérifications de cohérence (adresse non-LAN, sonde locale localhost, sonde d'accessibilité externe via magmaguy.com) et annonce l'URL locale aux clients. Aucun coût de bande passante pour MagmaGuy. Cette préférence « essayer d'abord l'auto-hébergement » est sautée sur un backend proxifié, qui passe directement à l'étape 3 ; le serveur HTTP propre au backend continue d'y tourner, car le proxy y récupère les artefacts Bedrock. - Repli sur l'auto-hébergement distant — si l'auto-hébergement est désactivé ou qu'une vérification réelle d'accessibilité échoue, RSPM téléverse le pack vers le CDN de MagmaGuy à
magmaguy.com/rsp/et annonce cette URL à la place. Si le chemin distant échoue, il peut se replier sur l'auto-hébergement lorsqueselfHostEnabled: true.
Si autoHost: false et selfHostForce: false, RSPM écrit le zip fusionné dans plugins/ResourcePackManager/output/ sans pousser d'URL.
Voir Auto-hébergement pour l'arbre de décision de distribution complet, la résolution du port et la détection de l'hôte externe.
Conversion Java vers Bedrock
Le convertisseur Bedrock n'est plus réservé à FreeMinecraftModels. Il parcourt récursivement chaque fichier de définition d'items 1.21.4+ (assets/<namespace>/items/**/*.json) du pack fusionné et produit la géométrie Bedrock, les attachables et les icônes d'inventaire pour le plugin qui les a fournis :
- Les joueurs Bedrock voient les items 3D, les armures personnalisées et les équipements modélisés pour tout plugin dont le pack utilise le format de définition d'items 1.21.4+.
- Les textures d'armure personnalisée s'affichent sur les joueurs Bedrock en utilisant la géométrie d'armure vanilla avec la texture Java comme couche visible.
- Les icônes d'inventaire pour les items 3D sont rendues par logiciel à partir du modèle Java via la transformation
display.gui. - Le pack Bedrock est servi en direct par session Bedrock via l'API de Geyser, de sorte que les ajustements de textures et de modèles atteignent le prochain joueur Bedrock qui se connecte sans redémarrage du serveur. Les mappings d'items personnalisés nécessitent toujours un redémarrage car Geyser les enregistre au démarrage.
- Douze paramètres réglables par l'utilisateur pour les décalages d'affichage des items tenus en main (six pour la première personne, six pour la troisième personne) dans
bedrock_display_offsets.yml.
Intégrations actuelles
ResourcePackManager est livré avec des entrées d'intégration préconfigurées pour ces plugins :
- BackpackPlus
- BetterHUD
- BetterStructures
- CannonRTP
- EliteMobs
- EternalTD
- FreeMinecraftModels
- InfiniteVehicles
- ItemsAdder
- MegaBlockSurvivors
- MMOInventory
- ModelEngine
- Nexo
- Nova
- Oraxen
- RealisticSurvival
- ResurrectionChest
- ValhallaMMO
- vane-core
Chaque intégration ne s'active que si le plugin est installé et que son chemin local ou son URL distante configurés sont exploitables. Le plugin détecte également Geyser (Geyser-Spigot sur un backend, Geyser-Velocity / Geyser-BungeeCord sur un proxy) au démarrage et câble la distribution du pack Bedrock dans celui qu'il trouve.
Où aller ensuite
- Configuration — flux de travail opérateur pour un serveur autonome
- Réseaux proxy — configuration étape par étape pour BungeeCord / Waterfall / Velocity
- Auto-hébergement — serveur HTTP intégré, résolution du port, détection de l'hôte externe
- Conversion Bedrock / Geyser — ce qui est converti, paramètres de réglage
- Extension Geyser et entités personnalisées — comment l'extension intégrée est installée, versions de Geyser requises
- FAQ — questions fréquentes
- Dépannage — quoi vérifier quand quelque chose ne fonctionne pas
- API — enregistrer des packs depuis votre propre plugin