NovaMoney

Plugin d'économie complet avec support multi-stockage (JSON/MySQL/API)

Multi-stockage

JSON, MySQL ou API Node.js au choix

Transactions

Paiements entre joueurs avec système de taxe

Classement

Top 10 des joueurs avec interface graphique

Multi-langue

Français, Anglais, Espagnol, Allemand

Télécharger NovaMoney

NovaMoney-v1.0.0.jar 256 KB

📋 Requirements

  • Minecraft 1.21+
  • Java 17+
  • Paper/Spigot

Commandes

Commandes Joueurs

/balance

Description : Voir votre solde ou celui d'un autre joueur

/balance [joueur]

novamoney.balance

/money

Description : Alias de /balance

/money [joueur]

novamoney.balance

/pay

Description : Payer un autre joueur

/pay <joueur> <montant>

novamoney.pay

/topbalance

Description : Afficher le top 10 des joueurs les plus riches

/topbalance

novamoney.top

Commandes Admin

/novamoney add

Description : Ajouter de l'argent à un joueur

/novamoney add <joueur> <montant>

novamoney.admin.add

/novamoney remove

Description : Retirer de l'argent à un joueur

/novamoney remove <joueur> <montant>

novamoney.admin.remove

/novamoney set

Description : Définir le solde d'un joueur

/novamoney set <joueur> <montant>

novamoney.admin.set

/novamoney get

Description : Voir le solde d'un joueur

/novamoney get <joueur>

novamoney.admin.get

/novamoney status

Description : Vérifier le statut de l'API

/novamoney status

novamoney.admin.status

/novamoney taxe

Description : Gérer la taxe des paiements

/novamoney taxe <get/set/enable/disable/reset>

novamoney.admin.taxe

/novamoney reload

Description : Recharger la configuration

/novamoney reload

novamoney.admin.reload

Interface Graphique

La commande /topbalance ouvre une interface graphique intuitive avec les têtes des joueurs.

Classement visuel

Top 10 des joueurs avec leurs têtes, leur rang et leur solde.

Rangs distinctifs

Chaque rang est représenté par un symbole unique et coloré (👑, ⚡, ✯)

Formatage intelligent

Affichage des grands nombres (1.5K, 2.3M, 1.2B) pour une meilleure lisibilité.

Captures d'écran

Interface /topbalance

Interface /topbalance

Classement des 10 joueurs les plus riches avec leurs têtes

Détails du top

Détails du classement

Informations détaillées sur chaque joueur

Système de Permissions

NovaMoney utilise un système de permissions granulaire. Voici la liste complète :

novamoney.*

Donne accès à toutes les permissions du plugin NovaMoney

Permissions Joueurs

novamoney.balance Voir son solde TOUS
novamoney.balance.others Voir le solde des autres OP
novamoney.pay Payer d'autres joueurs TOUS
novamoney.top Voir le top balance TOUS

Permissions Admin

novamoney.admin.add Ajouter de l'argent OP
novamoney.admin.remove Retirer de l'argent OP
novamoney.admin.set Définir un solde OP
novamoney.admin.get Voir solde des autres OP
novamoney.admin.status Vérifier statut API OP
novamoney.admin.taxe Gérer les taxes OP
novamoney.admin.reload Recharger la config OP

API Node.js

NovaMoney peut communiquer avec un serveur Node.js pour le stockage des données.

Configuration

api:
  enabled: true
  url: "domaine.fr"  # Domaine ou IP (192.168.1.100:3000)
  api-key: "MDP"
  timeout: 5000

Endpoints disponibles

GET /api/novamoney/status Vérifier que l'API fonctionne
GET /api/novamoney/balance/:uuid Récupérer le solde d'un joueur
POST /api/novamoney/balance/:uuid Mettre à jour le solde
POST /api/novamoney/account/create/:uuid Créer un compte
POST /api/novamoney/save-all Sauvegarder tous les comptes
GET /api/novamoney/load-all Charger tous les comptes

Exemple serveur Node.js

Serveur basique
Avec Express
Client Fetch
// Serveur Node.js basique avec http
const http = require('http');
const fs = require('fs').promises;

const API_KEY = 'MDP';
const DATA_FILE = './balances.json';

const server = http.createServer(async (req, res) => {
    // Vérification de la clé API
    const apiKey = req.headers['x-api-key'];
    if (apiKey !== API_KEY) {
        res.writeHead(401);
        return res.end(JSON.stringify({ error: 'Non autorisé' }));
    }

    // Route /status
    if (req.url === '/api/novamoney/status' && req.method === 'GET') {
        res.writeHead(200, { 'Content-Type': 'application/json' });
        return res.end(JSON.stringify({
            success: true,
            status: 'online',
            timestamp: new Date().toISOString()
        }));
    }

    // Route /balance/:uuid
    if (req.url.match(/^\/api\/novamoney\/balance\/.+/) && req.method === 'GET') {
        const uuid = req.url.split('/').pop();
        const data = JSON.parse(await fs.readFile(DATA_FILE, 'utf8'));
        const balance = data[uuid] || 0;
        
        res.writeHead(200, { 'Content-Type': 'application/json' });
        return res.end(JSON.stringify({ success: true, uuid, balance }));
    }

    res.writeHead(404);
    res.end(JSON.stringify({ error: 'Route non trouvée' }));
});

server.listen(3000, () => {
    console.log('Serveur NovaMoney démarré sur port 3000');
});