Dépannage Resource Pack Manager
Cette page ne couvre que les comportements actuellement confirmés dans le code de ResourcePackManager.
La toute première étape la plus utile pour n'importe quel problème RSPM est :
/rspm status
Elle affiche la version, le mode de déploiement (autonome vs network-backend), la clé réseau masquée, l'état des packs Java + Bedrock, le chemin de distribution actif avec l'URL, l'hôte externe résolu + l'IP publique auto-détectée, tous les drapeaux de configuration pertinents, un rappel de déploiement proxy (le jar proxy réseau est le même ResourcePackManager.jar), et la détection de Floodgate / Geyser-Spigot. La même commande existe lorsque le jar s'exécute sur un proxy et affiche les équivalents côté proxy (liste des backends, résultats de récupération par backend, état du pack fusionné).
Les joueurs ne reçoivent pas le pack de ressources
Vérifiez d'abord ces points :
autoHostdoit être activé si vous voulez que ResourcePackManager envoie automatiquement une URL- le pack fusionné doit exister et au moins un chemin de distribution (auto-hébergement ou distant) doit avoir réussi
- les joueurs ne reçoivent le pack qu'à la connexion, ou via la diffusion du premier téléversement qui se déclenche au moment où l'hébergement devient prêt
Si nécessaire :
- Exécutez
/rspm statuset regardez la section « Hosting ».Active deliveryindique si l'auto-hébergement, le distant, ou aucun des deux est actuellement utilisé. - Si « active delivery: not yet ready » — le mix ou le téléversement est encore en cours. Le plugin l'affiche bien en évidence dans la console quand un joueur se connecte trop tôt et enverra automatiquement le pack au moment où la distribution est prête.
- Si « active delivery: none — hosting disabled or failed » —
autoHostest désactivé, ou les sondes d'auto-hébergement et le téléversement distant ont tous deux échoué. Voir « Les contrôles de cohérence d'auto-hébergement ont échoué » et « L'auto-hébergement ne peut pas atteindre le serveur distant » ci-dessous. - Exécutez
/rspm reload, surveillez la console pour les résultats de téléversement / de sonde d'auto-hébergement, puis reconnectez-vous avec un joueur de test.
Si vous auto-hébergez via votre propre pipeline externe (autoHost: false), RSPM ne pousse pas votre URL personnalisée à votre place. Dans cette configuration, vous avez toujours besoin de votre propre flux de distribution de pack côté serveur.
ItemsAdder est installé, mais son contenu est absent du pack final
Cela signifie généralement qu'ItemsAdder est encore configuré d'une manière qui empêche ResourcePackManager de lire ou d'héberger sa sortie.
Utilisez :
/rspm itemsadder configure
Cette commande, actuellement :
- active
resource-pack.hosting.no-host.enabled - désactive
protection_1,protection_2etprotection_3 - définit
resource-pack.zip.compress-json-files: false - exécute
/iareload, puis/iazip - recharge ResourcePackManager environ 15 secondes plus tard
Si la commande vous indique qu'ItemsAdder héberge déjà son propre pack, désactivez d'abord manuellement l'hébergement ItemsAdder, puis relancez la commande.
Le pack fusionné est invalide ou échoue au téléversement
L'intégration d'auto-hébergement de ResourcePackManager gère explicitement ces types d'erreurs côté serveur :
- fichiers requis manquants
- fichier trop volumineux
- format de fichier invalide
- session manquante
- serveur distant indisponible
Si vous rencontrez l'un de ces cas :
- Exécutez
/rspm reloadpour reconstruire le pack. - Vérifiez si l'un des packs source est malformé, chiffré ou autrement illisible.
- Vérifiez si le pack fusionné final contient toujours un
pack.mcmetaet unpack.pngvalides à la racine.
Le plugin ignore les packs qu'il ne peut pas extraire proprement et émet des avertissements dans la console quand cela se produit.
En cas d'erreur SESSION_NOT_FOUND de l'auto-hébergement distant, RSPM efface son UUID de session et se réinitialise au prochain tick de keep-alive — aucune intervention manuelle requise.
Les assets d'un plugin écrasent ceux d'un autre plugin
Cela est contrôlé par priorityOrder dans :
plugins/ResourcePackManager/config.yml
Les entrées plus hautes l'emportent sur les entrées plus basses.
Pour les fichiers non fusionnables, ResourcePackManager remplace le fichier de priorité inférieure. Pour les fichiers JSON fusionnables, il fusionne le contenu à la place. Les catégories JSON actuellement fusionnables sont :
sounds.json- les fichiers de langue
- le JSON des modèles d'items vanilla dans
minecraft/models/item(fusion non récursive : seul le tableauoverridesest combiné entre packs, le reste du fichier suit la règle priorité-la-plus-haute-l'emporte) - les fichiers atlas
- les fichiers de police
- les définitions de modèles d'items 1.21.4+ dans
items/(fusion adaptée au format qui respecte la structure de l'arbre de prédicats)
pack.mcmeta est également fusionné de manière spéciale : le pack_format le plus élevé l'emporte, les plages supported_formats sont élargies (les formats entier, tableau de deux entiers et objet {min_inclusive, max_inclusive} sont tous pris en charge), les entrées d'overlay sont combinées et les clés de premier niveau non standard sont préservées. Les entrées d'overlay sont normalisées pour la compatibilité 1.21.9+ en ajoutant les champs min_format/max_format lorsqu'ils sont absents. Les sources d'atlas de base sont également fusionnées dans les fichiers d'atlas d'overlay afin d'empêcher les overlays de masquer les entrées de base.
Si vous avez besoin d'inspecter ce qui s'est passé pendant la dernière fusion, consultez :
plugins/ResourcePackManager/collision_log.txt
Le texte de l'interface ou les éléments à base de polices semblent incorrects
Les fichiers de police font partie des catégories JSON que ResourcePackManager fusionne, mais cela ne garantit pas que deux systèmes de polices différents se comporteront bien ensemble dans Minecraft.
Si un menu ou un HUD piloté par les polices semble incorrect :
- Modifiez
priorityOrderpour que le pack que vous voulez voir l'emporter soit plus haut. - Exécutez
/rspm reload. - Vérifiez
collision_log.txtpour confirmer que les collisions se sont produites là où vous l'attendiez.
Les modifications du pack de ressources n'apparaissent pas immédiatement
ResourcePackManager possède un chien de garde pour les sources de packs prises en charge.
Il attend qu'un pack modifié reste inchangé pendant 3 secondes, puis, une fois que tous les packs surveillés sont stables, la refusion s'exécute immédiatement.
Si vous êtes en train de régénérer activement le pack d'un autre plugin, laissez quelques secondes après l'arrêt des écritures de fichiers. En cas de doute, exécutez /rspm reload une fois que le plugin amont a terminé.
Les contrôles de cohérence d'auto-hébergement ont échoué ; repli sur l'hébergement distant
Ce message est un comportement normal lorsque preferSelfHost: true (par défaut) et que l'un des trois contrôles de cohérence d'auto-hébergement a échoué :
- Couche 1 (heuristique) — l'hôte externe résolu est RFC1918 / loopback / link-local. Définissez soit
selfHostExternalHostsur votre vrai nom d'hôte public, soit assurez-vous que le plugin peut atteindre api.ipify.org / checkip.amazonaws.com. - Couche 2 (auto-sonde localhost) — une requête HEAD vers
http://127.0.0.1:<port>/rspm.zipn'a pas renvoyé 200 avec un corps non vide. Attrape les collisions de liaison de port ou les fichiers de pack manquants. - Couche 3 (sonde d'accessibilité externe) — magmaguy.com a essayé de récupérer votre URL annoncée et n'a pas pu l'atteindre. Le plus souvent : le port HTTP n'est pas redirigé au niveau du routeur / pare-feu. L'URL de la sonde et la raison sont enregistrées.
Correctifs (par ordre de préférence) : ouvrez le port HTTP au niveau de votre pare-feu + routeur, définissez selfHostExternalHost sur un nom d'hôte routable, ou définissez preferSelfHost: false pour sauter entièrement l'auto-hébergement.
Lorsque la sonde magmaguy.com est elle-même inaccessible (RSPM ne peut pas lui parler pour l'interroger), l'auto-hébergement est conservé plutôt qu'échoué — le raisonnement étant que le chemin de repli a aussi besoin de magmaguy.com, donc refuser de s'engager en raison de l'incapacité à sonder serait paradoxal.
Voir Auto-hébergement pour l'arbre de décision complet.
L'auto-hébergement ne peut pas atteindre le serveur distant
L'hôte distant intégré de ResourcePackManager communique avec :
https://magmaguy.com/rsp/
Si cette connexion échoue, le plugin émet des avertissements de communication et ne peut pas utiliser le repli distant tant qu'il ne s'est pas reconnecté avec succès.
Vos options sont :
- corriger la connectivité HTTPS sortante du serveur
- attendre que le service distant redevienne joignable
- désactiver
autoHostet héberger vous-même le zip généré - ouvrir votre port HTTP et garder
preferSelfHost: trueafin que RSPM utilise l'auto-hébergement sans avoir besoin de magmaguy.com du tout (dans ce scénario, définissez aussiselfHostExternalHostsur votre nom d'hôte public afin que la sonde externe de couche 3 soit inutile — RSPM conserve l'auto-hébergement en cas d'IOException de la sonde)
Je veux auto-héberger le pack fusionné via mon propre serveur web
La configuration prise en charge par le code est :
- Définissez
autoHost: false. - Définissez
resourcePackReroutingsi vous voulez que ResourcePackManager écrive une copie supplémentaire dans un dossier existant. - Hébergez vous-même
ResourcePackManager_RSP.zip.
resourcePackRerouting est résolu relativement au répertoire plugins, et le dossier cible doit déjà exister.
Si vous voulez plutôt utiliser le serveur HTTP d'auto-hébergement intégré de RSPM (chose différente — même JVM que le plugin), voir Auto-hébergement.
J'ai besoin d'inspecter les données distantes stockées pour ce serveur
Utilisez :
/rspm data_compliance_request
S'il y a une session d'hébergement distant active, ResourcePackManager télécharge la réponse dans :
plugins/ResourcePackManager/data_compliance
S'il n'y a pas de session distante (par ex. si vous utilisez l'auto-hébergement), la commande signale qu'il n'y a aucune donnée distante à demander.
Le pack Bedrock n'est pas généré
bedrockConversionEnabled vaut true par défaut, donc cela devrait s'exécuter automatiquement. Exécutez d'abord /rspm status — la section Bedrock Pack vous dira pourquoi le pack n'est pas sur le disque :
- « No Bedrock target detected » — pas de Geyser-Spigot local, pas de Floodgate local, et pas en mode réseau. La conversion est intentionnellement sautée. Installez Floodgate (pour les configurations proxy) ou Geyser-Spigot (pour les configurations autonomes) et
/rspm reload. - « Network mode is active so this backend SHOULD produce a Bedrock pack. The file is missing » — généralement le premier cycle de fusion n'est pas encore terminé (attendez ~30 s après le démarrage), ou le scanner a trouvé zéro définition d'items dans le pack fusionné, ou la conversion a levé une exception. Cherchez dans la console les avertissements
[BedrockConverter]ouGeneric scanner: discovered 0 items definition files.
Si la détection automatique de Geyser échoue :
- Définissez
bedrockGeyserFolderdansconfig.ymlsur le chemin de votre dossier de données Geyser (par ex.Geyser-Spigot). - Le chemin peut être absolu ou relatif au répertoire
plugins.
Le convertisseur détecte automatiquement Geyser dans plugins/Geyser-Spigot/, toute variante plugins/Geyser-*/, ou config/Geyser-*/ pour les configurations Fabric/NeoForge.
Pour une sortie de journal par item / par os, définissez bedrockConverterDebug: true et rechargez.
Les joueurs Bedrock voient les items tenus en main à la mauvaise position
Il s'agit d'un problème de réglage, pas d'un bug de conversion. Ouvrez plugins/ResourcePackManager/bedrock_display_offsets.yml et ajustez l'axe concerné. La première personne et la troisième personne sont indépendantes — régler l'une n'affecte pas l'autre. Le client Bedrock recharge à chaud le JSON des attachables sans relancement, donc l'itération est rapide. Consultez la page Conversion Bedrock pour la liste complète des paramètres et ce que chacun contrôle.
Les textures d'armure personnalisée sont absentes sur les joueurs Bedrock
L'armure personnalisée est rendue sur Bedrock en combinant la géométrie d'armure vanilla avec la texture Java comme couche visible. Pour que cela fonctionne, le pack du plugin source doit définir un fichier d'équipement sous assets/<namespace>/equipment/<material>.json aux côtés de la définition d'items. Si le journal de conversion affiche l'item mais qu'aucune texture d'armure n'apparaît en jeu, vérifiez que ce fichier existe bien dans le pack fusionné.
Proxy : « Floodgate key.pem missing » au démarrage du proxy
Le plugin proxy n'a pas pu trouver plugins/floodgate/key.pem sur l'hôte proxy et est resté inactif. RSPM dérive l'identité réseau de ce fichier, donc sans lui le proxy ne peut se lier à aucun backend. Correctif :
- Installez Floodgate sur le proxy. Il est de toute façon requis pour que les joueurs Bedrock atteignent le proxy, c'est donc quelque chose dont vous avez besoin indépendamment de RSPM.
- Assurez-vous que
plugins/floodgate/key.pemsur le proxy est identique octet par octet au même fichier sur chaque backend. Copiez unkey.pemcanonique vers chaque composant (autres backends + le proxy) et redémarrez tout. Floodgate l'exige déjà pour l'authentification Bedrock, donc si les joueurs Bedrock fonctionnent actuellement sur votre réseau, c'est déjà fait.
Proxy : « no merged pack » après plusieurs cycles d'interrogation
Après ~20 secondes de cycles d'interrogation vides (4 cycles × 5 s d'intervalle par défaut) sur le proxy, RSPM enregistre une bannière de diagnostic unique listant chaque backend qu'il a interrogé, l'URL HTTP qu'il a essayée et le résultat (200 / 304 / 404 / CONNECT_FAILED / etc.). La bannière explique les correctifs les plus courants :
CONNECT_FAILEDsur chaque backend → le proxy ne peut pas atteindre le port HTTP du backend. Vérifiez que l'adresse dansvelocity.toml/config.ymlen est une que le proxy peut réellement atteindre (pas, par ex., un nom interne Docker qui ne se résout pas depuis le réseau du proxy), et que le port HTTP annoncé du backend est ouvert entre le proxy et le backend. La bannière affiche l'URL exacte qu'il a essayée ; avant qu'un backend ait annoncé son port, le proxy se replie surmcPort + network-http-offset-v2, donc unCONNECT_FAILEDprécoce peut aussi signifier que ce port de repli n'est pas encore joignable.NOT_FOUND_404sur chaque backend → les backends sont en marche mais ne produisent pas de pack Bedrock. Exécutez/rspm statussur chaque backend ; le bloc de diagnostic Bedrock Pack vous dira pourquoi.
La bannière se déclenche une fois par période de blocage et une ligne « NetworkSync: recovered » est enregistrée lorsqu'au moins un backend recommence à renvoyer du contenu. Voir Réseaux proxy pour plus de détails.
Proxy : les joueurs Bedrock ne voient aucun modèle au premier démarrage du proxy
Geyser enregistre sa table d'items personnalisés uniquement au démarrage du proxy. Si le proxy a démarré avant qu'un backend produise un pack Bedrock, Geyser tourne avec une table de mappings vide et le reste pour le reste de la session.
Le correctif est de redémarrer le proxy après que le backend a enregistré Wrote merged Geyser mappings: N entries. RSPM pré-déploie les mappings du run précédent au démarrage du proxy, donc cela ne se produit que sur une toute nouvelle installation — les démarrages suivants ont déjà quelque chose de prêt avant que Geyser scanne.
Backend : « Backend HTTP server failed to bind on port X »
En mode réseau, le backend expose ses sorties Bedrock via un petit serveur HTTP. Si le port est utilisé ou indisponible, vous verrez un bloc [ERROR] multi-ligne dans la console. Correctifs :
- Définissez
selfHostPortsur une autre valeur positive dansconfig.yml. - Ou changez
networkHttpOffset-v2pour éloigner le port auto-dérivé de la collision (par ex. RCON surmcPort + 1? réglez-le sur 2 ou 3). Vous n'avez pas besoin de mettre à jour le proxy pour correspondre : une fois que le backend se lie avec succès, il annonce automatiquement son port HTTP réel au proxy, donc le proprenetwork-http-offset-v2du proxy ne compte que comme estimation avant l'annonce.
Tant que le serveur HTTP du backend est hors service, le pack Bedrock de ce backend n'atteindra pas le proxy via la récupération directe. Le repli par relais magmaguy.com fonctionne toujours (le backend pousse ses fichiers vers le relais et le proxy les récupère par ce biais).
Nettoyer une configuration v1 obsolète
Les opérateurs effectuant une mise à niveau depuis RSPM v1 peuvent avoir une clé morte networkHttpOffset (sans -v2) dans leur config.yml. RSPM v2 ne lit délibérément pas l'ancienne clé — vous obtenez la valeur par défaut v2 (1) écrite dans la configuration au prochain démarrage automatiquement. La clé v1 morte reste dans votre configuration comme un artefact inoffensif jusqu'à ce que vous la nettoyiez à la main.