Guide
Comment créer un plugin d'économie Minecraft
Mis à jour le 18 octobre 2026
Un plugin d'économie tient un solde pour chaque joueur et leur permet de se payer entre eux, de gagner de l'argent et de le dépenser dans des boutiques. Le plus important n'est pas les commandes mais la liaison avec Vault : c'est elle qui permet aux plugins de boutique, de métiers et d'enchères d'utiliser votre argent. Ce guide couvre la conception, le stockage et la façon de le compiler et de le tester.
Partez de cet exemple et remplacez les règles par les vôtres.
Générer ceci avec CodexeÉtape par étape
1.Décidez du rôle du plugin
Soit il est l'économie (il stocke les soldes et s'enregistre comme économie Vault), soit il utilise une économie existante via Vault (une boutique, des primes, un plugin de métiers). La plupart des serveurs ont besoin d'un de chaque, pas de deux économies.
2.Choisir le serveur et la version
Indiquez le logiciel et la version du serveur, par exemple Paper 1.21.4. Le plugin est compilé pour l'API et la version de Java de cette version.
3.Listez les commandes et les règles
/balance,/pay <player> <amount>,/baltop, et des commandes admin comme/eco give|take|set. Ajoutez le solde de départ, le nom de la monnaie, les décimales et un paiement minimum.4.Choisissez où les soldes sont sauvegardés
SQLite pour un seul serveur, MySQL si plusieurs serveurs doivent partager les mêmes soldes. L'argent doit survivre aux redémarrages et aux plantages, il n'est donc jamais gardé uniquement en mémoire.
5.Laisser Codexe l'écrire et le compiler
Décrivez le plugin et nommez explicitement Vault pour qu'il soit ajouté comme dépendance. Codexe écrit le code Java,
plugin.ymletconfig.yml, le compile et corrige les erreurs de build avant que le projet soit prêt.6.Testez les paiements en jeu
Cliquez sur Tester maintenant et rejoignez le serveur de test. Faites des paiements entre deux comptes, essayez des montants trop élevés, négatifs ou qui ne sont pas des nombres, puis redémarrez et vérifiez que les soldes sont toujours là.
7.L'installer
Placez Vault et votre .jar dans le dossier
plugins/du serveur et redémarrez. Retirez tout autre plugin d'économie, ou décidez lequel Vault doit utiliser.
Le rôle de Vault
Vault est un pont, pas une économie. Un plugin d'économie implémente l'interface Economy de Vault et l'enregistre auprès du gestionnaire de services du serveur ; les autres plugins la demandent avec getServer().getServicesManager().getRegistration(Economy.class) et appellent des méthodes comme getBalance, withdrawPlayer et depositPlayer.
Ainsi, un plugin de boutique n'a jamais besoin de savoir quelle économie vous utilisez. Dans plugin.yml, utilisez depend: [Vault] quand le plugin ne peut pas fonctionner sans, ou softdepend quand Vault est facultatif. L'API de Vault n'est nécessaire que pour compiler ; Vault lui-même est installé sur le serveur.
Les choix à préciser dans la demande
- Format de l'argent : nom de la monnaie au singulier et au pluriel, symbole, nombre de décimales.
- Limites : solde de départ, solde maximum, possibilité ou non d'avoir un solde négatif.
- Joueurs hors ligne : si
/payet/ecofonctionnent sur des joueurs qui ne sont pas connectés. - Journalisation : un historique des transactions dans la base de données ou dans un fichier, pour que le staff puisse vérifier les litiges.
- Gagner de l'argent : en tuant des mobs, en récompense du temps de jeu, en vendant des objets, ou uniquement via des commandes admin.
Où sauvegarder les soldes
| Stockage | Idéal pour | Points d'attention |
|---|---|---|
| Fichier YAML | Très petits serveurs, facile à lire | Lent avec beaucoup de joueurs, se corrompt facilement en cas de plantage |
| SQLite | Un seul serveur, aucune configuration | Ne peut pas être partagé entre serveurs |
| MySQL / MariaDB | Réseaux partageant un même solde | Nécessite un serveur de base de données et ses identifiants dans config.yml |
Exemple de description
« Un plugin d'économie Paper 1.21.4 appelé Coins qui s'enregistre comme économie Vault. /balance [player], /pay <player> <amount> avec un minimum de 1, /baltop avec le top 10, et /eco give|take|set pour les joueurs ayant coins.admin. Les nouveaux joueurs commencent avec 100 pièces. Deux décimales. Chaque paiement est enregistré avec la date, l'expéditeur, le destinataire et le montant. Soldes sauvegardés dans SQLite. Noms de la monnaie et tous les messages dans config.yml. »
Codexe utilise SQLite par défaut si vous ne demandez pas autre chose. Si vous demandez MySQL, le plugin est écrit avec un paramètre storage-type, et le serveur de test lui fournit sa propre base de données MySQL pendant vos essais.
Questions
Ai-je besoin de Vault ?
Pas pour une économie autonome que rien d'autre n'utilise. Il devient nécessaire dès que d'autres plugins (boutiques, métiers, enchères) doivent lire ou modifier les soldes, car c'est l'API qu'ils recherchent.
Puis-je l'utiliser avec EssentialsX ?
EssentialsX a sa propre économie et l'enregistre lui aussi auprès de Vault. N'utilisez qu'une seule économie à la fois, ou désactivez celle dont vous ne voulez pas, sinon d'autres plugins risquent d'utiliser un solde différent de celui qu'affichent vos commandes.
Plusieurs serveurs peuvent-ils partager les mêmes soldes ?
Oui, avec MySQL ou MariaDB comme stockage et la même base de données dans le config.yml de chaque serveur. Demandez-le dans la demande pour que le plugin lise les soldes depuis la base de données au lieu de les garder trop longtemps en cache.
Comment le tester sans vrai serveur ?
Avec Tester maintenant : un serveur Paper privé de votre version démarre avec le plugin compilé, et les plugins listés dans depend et softdepend, comme Vault, sont installés pour lui. L'offre Free inclut 3 serveurs de test par jour, de 10 minutes chacun.
Créez l'économie de votre serveur
Ce prompt s'ouvre prêt à être envoyé :
“Un plugin d'économie Paper 1.21.4 appelé Coins qui s'enregistre comme économie Vault : /balance, /pay avec un minimum de 1, /baltop top 10, /eco give|take|set pour coins.admin, solde de départ de 100, deux décimales, chaque paiement enregistré, soldes dans SQLite, noms de la monnaie et messages dans config.yml.”
Générer ceci avec Codexe