Aller au contenu principal

Boutique de mobilier FreeMinecraftModels

FreeMinecraftModels est livré avec une boutique optionnelle adossée à Vault qui permet aux joueurs d'acheter des props craftables avec la monnaie du jeu. La boutique est désactivée par défaut — elle ne s'enregistre que lorsqu'elle est explicitement activée et qu'un fournisseur d'économie Vault est disponible.

Configuration rapide

  1. Installez Vault et un fournisseur d'économie compatible Vault (EssentialsX, CMI, etc.).
  2. Démarrez le serveur une fois pour que plugins/FreeMinecraftModels/shop_config.yml soit généré.
  3. Définissez enabled: true dans shop_config.yml.
  4. Redémarrez le serveur (la boutique s'enregistre au démarrage).
  5. Exécutez /fmm shop en jeu pour confirmer que le menu s'ouvre.

Si l'une de ces préconditions manque, la commande /fmm shop reste non enregistrée et les joueurs voient une erreur « no such command » plutôt que le message désactivé configurable.

Comment ça fonctionne

  • La boutique lit les recettes depuis plugins/FreeMinecraftModels/recipes/.
  • Chaque recette avec isEnabled: true et shopEnabled: true est listée dans la boutique.
  • Chaque entrée affiche l'objet de sortie de la recette (l'objet de placement en papier du prop) avec deux lignes de lore ajoutées : une ligne Price: et une invite Click to purchase.
  • Cliquer sur une entrée appelle PurchaseHandler, qui vérifie le solde du joueur via Vault, retire le prix et donne au joueur l'objet de placement. Les objets qui ne tiennent pas dans l'inventaire sont droppés aux pieds du joueur.

Permissions

PermissionDéfautDescription
freeminecraftmodels.shoptrueRequise pour ouvrir la boutique. Par défaut à true afin que chaque joueur puisse parcourir

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éfaut false)
  • defaultPrice — écrit dans les fichiers de recette qui ne définissent pas leur propre shopPrice
  • menuTitle, priceLoreFormat, clickToBuyLoreFormat — style visuel
  • messages.* — cinq messages de feedback personnalisables

Toutes les chaînes de message supportent les codes de couleur & et les placeholders listés 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
ChampDéfautComportement
shopEnabledtrueLorsque false, la recette est toujours craftable mais n'apparaît jamais dans /fmm shop
shopPricedefaultPrice depuis shop_config.ymlCoû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

Le PurchaseHandler reconnaît cinq résultats. Chacun se mappe à un message configurable dans shop_config.yml :

RésultatDéclenché lorsqueClé de message
SUCCESSLe retrait a réussi et l'objet a tenu dans l'inventairemessages.purchaseSuccess
SUCCESS_WITH_OVERFLOWLe retrait a réussi mais l'objet a dû être droppé aux pieds du joueurmessages.purchaseSuccess + messages.inventoryFull
INSUFFICIENT_FUNDSSolde du joueur sous le prix, ou le fournisseur d'économie sous-jacent a rejeté le retraitmessages.insufficientFunds
NOT_FOR_SALELa recette est désactivée ou shopEnabled: falsemessages.itemNotForSale
SHOP_DISABLEDDésactivée de force au runtime (par ex. fournisseur d'économie disparu)messages.shopDisabled

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 /balance ou /eco pour confirmer qu'un répond)
  • enabled: true dans shop_config.yml

Puis redémarrez le serveur. La commande ne s'enregistre qu'au démarrage.

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. Vérifiez la console du serveur pour les erreurs Vault. Le handler ne consomme la monnaie qu'après une vérification de solde réussie, mais un fournisseur d'économie en aval peut toujours faire échouer le retrait réel — le handler capture cela et retourne INSUFFICIENT_FUNDS. Si le retrait a réussi et que l'objet n'est pas apparu, signalez un bug avec le log complet de console autour du clic.