Boutique de mobilier FreeMinecraftModels
Pour une économie fondée uniquement sur les achats, définissez registerCraftingRecipes: false dans config.yml et redémarrez. Les entrées valides et activées restent dans le catalogue de la boutique, mais sont retirées de la fabrication Bukkit et du menu de fabrication /fmm des joueurs. Ce réglage vaut true par défaut.
FreeMinecraftModels propose une boutique facultative utilisant Vault pour acheter des props fabricables avec la monnaie du jeu. Elle est désactivée par défaut et ne s'enregistre que lorsqu'elle est explicitement activée et qu'un fournisseur d'économie Vault est disponible.
Configuration rapide
- Installez Vault et un fournisseur d'économie compatible Vault (EssentialsX, CMI, etc.).
- Démarrez le serveur une fois pour que
plugins/FreeMinecraftModels/shop_config.ymlsoit généré. - Définissez
enabled: truedansshop_config.yml. - Redémarrez le serveur ou terminez avec succès
/fmm reload; la boutique s'enregistre pendant l'initialisation complète. - Exécutez
/fmm shopen jeu pour confirmer que le menu s'ouvre.
Si un prérequis manque, la sous-commande de boutique reste non enregistrée : son gestionnaire n'utilise donc pas le message configurable de désactivation. Si la boutique est activée mais que Vault ou son fournisseur d'économie manque, FMM journalise un avertissement précis.
Fonctionnement
- La boutique lit les recettes depuis
plugins/FreeMinecraftModels/recipes/. - La boutique liste les recettes chargées avec
isEnabled: trueetshopEnabled: true. Les recettes se chargent comme un seul catalogue : une erreur de syntaxe YAML, deux fichiers de recette activés pour le mêmemodel_idou une recette rejetée par le serveur font échouer tout le catalogue au lieu de retirer une seule entrée ; consultez donc la console après/fmm reload. L'enregistrement construit et valide encore la recette lorsque la fabrication est désactivée - Chaque entrée utilise un objet en papier avec l'apparence du modèle si elle est disponible, une ligne de prix, une invitation à acheter et l'identifiant du modèle. Les achats produisent l'objet en papier servant à placer le modèle ; cette procédure ne crée pas une arme à partir de son
material:et de ses enchantements - Cliquer sur une entrée appelle
PurchaseHandler, qui vérifie le solde via Vault, prélève le prix et donne l'objet de placement au joueur. Les objets qui ne tiennent pas dans l'inventaire sont déposés à ses pieds.
Permissions
| Permission | Défaut | Description |
|---|---|---|
freeminecraftmodels.shop | true | Nécessaire pour ouvrir la boutique. Vaut true par défaut pour que tous les joueurs puissent la consulter |
La permission seule n'active pas la boutique — enabled: true dans shop_config.yml et un fournisseur d'économie fonctionnel sont toujours requis.
shop_config.yml
Voir la page Configuration pour la référence complète des clés. Les clés principales sont :
enabled— interrupteur principal (défautfalse)defaultPrice— valeur des recettes sansshopPrice; une valeur nulle ou négative est remplacée par100.0. Sa modification ne remplace pas les prix déjà enregistrés par recettemenuTitle,priceLoreFormat,clickToBuyLoreFormat— style visuelmessages.*: cinq messages de résultat personnalisables
Tous les messages acceptent les codes de couleur & et les variables de substitution indiquées dans la référence de configuration.
Champs par recette
Chaque recette dans plugins/FreeMinecraftModels/recipes/<model_id>.yml porte deux champs spécifiques à la boutique :
isEnabled: true
model_id: "wooden_chair"
shape:
- "L L"
- "LLL"
- "L L"
ingredients:
L: OAK_LOG
shopEnabled: true
shopPrice: 250.0
| Champ | Défaut | Comportement |
|---|---|---|
shopEnabled | true | Avec false, la recette est masquée à l'achat. La fabrication dépend toujours de l'activation de la recette et de registerCraftingRecipes |
shopPrice | defaultPrice depuis shop_config.yml | Coût en monnaie Vault lorsque le joueur clique sur l'objet |
L'éditeur /fmm craftify écrit ces deux champs à l'enregistrement, donc ajuster le prix se fait par une simple édition de texte sur le fichier de recette suivi de /fmm reload.
Résultats d'achat
PurchaseHandler distingue sept résultats. Les cinq premiers sont associés à des messages configurables dans shop_config.yml ; les deux messages d'échec de livraison sont fixes :
| Résultat | Déclenché lorsque | Clé de message |
|---|---|---|
SUCCESS | Le retrait a réussi et l'objet a tenu dans l'inventaire | messages.purchaseSuccess |
SUCCESS_WITH_OVERFLOW | Le prélèvement a réussi, mais l'objet a dû être déposé aux pieds du joueur | messages.purchaseSuccess + messages.inventoryFull |
INSUFFICIENT_FUNDS | Solde du joueur sous le prix, ou le fournisseur d'économie sous-jacent a rejeté le retrait | messages.insufficientFunds |
NOT_FOR_SALE | La recette est désactivée, a shopEnabled: false, ou son modèle n'est pas chargé | messages.itemNotForSale |
SHOP_DISABLED | La configuration de la boutique ou la connexion Vault mise en cache indique une désactivation | messages.shopDisabled |
DELIVERY_FAILED_REFUNDED | Le prélèvement a réussi, la livraison a échoué et le montant non livré a été remboursé | Fixe : The item could not be delivered. The undelivered amount was refunded. |
DELIVERY_FAILED_REFUND_PENDING | Le prélèvement a réussi, la livraison a échoué, et le remboursement a échoué ou la quantité livrée n'a pas pu être lue | Fixe : The purchase could not be settled. The shop has been disabled; contact an administrator to review your payment. |
Utilisez des valeurs shopPrice finies et non négatives. Le gestionnaire d'achat ne les valide pas avant d'appeler Vault. Une réponse de prélèvement refusé renvoie INSUFFICIENT_FUNDS, mais les exceptions du fournisseur pendant le prélèvement ne sont pas interceptées ici. La connexion conserve son fournisseur lors de l'initialisation et ne détecte pas continuellement sa disparition.
Si la livraison lève une exception après le prélèvement, FMM compte la part de l'achat qui a atteint l'inventaire ou le sol et rembourse le prix du reste. Si ce remboursement échoue, ou si la quantité livrée ne peut pas être lue, FMM désactive la boutique et journalise [FMM Shop] Disabled after unresolved purchase avec l'UUID du joueur et le montant à vérifier. La boutique reste désactivée jusqu'à ce que vous régularisiez le paiement et exécutiez /fmm reload.
Dépannage
/fmm shop n'existe pas.
La boutique n'est pas enregistrée. Vérifiez les trois :
- Vault est installé
- Un fournisseur d'économie est enregistré (exécutez
/balanceou/ecopour confirmer qu'un répond) enabled: truedansshop_config.yml
Redémarrez ensuite le serveur ou terminez /fmm reload. Un rechargement limité au contenu déclenché par l'importateur ne réinitialise pas la configuration de la boutique et n'enregistre pas sa commande.
Les objets que je m'attends à voir sont absents du menu.
Ouvrez le fichier de recette dans plugins/FreeMinecraftModels/recipes/. Vérifiez que isEnabled et shopEnabled sont tous deux à true. Exécutez /fmm reload après modification.
Les joueurs sont débités mais n'obtiennent pas d'objet.
Cherchez un objet déposé aux pieds du joueur faute de place et examinez la console autour du clic. Une réponse de prélèvement refusé renvoie INSUFFICIENT_FUNDS ; une exception du fournisseur pendant le prélèvement n'est pas convertie en ce résultat. Une livraison échouée journalise [FMM Shop] Item delivery failed avec la quantité livrée et le remboursement. Si la console affiche [FMM Shop] Disabled after unresolved purchase, le remboursement n'a pas abouti : régularisez ce paiement manuellement, conservez le journal de console et la preuve de transaction du fournisseur, puis exécutez /fmm reload pour réactiver la boutique.