Récompenser les votes de vos joueurs
Trois façons de relier CraftRank à votre serveur. Choisissez celle qui correspond à votre plugin : elles peuvent aussi être combinées.
1. Votifier (NuVotifier)
Installez NuVotifier sur votre serveur (ou sur votre proxy BungeeCord / Velocity), puis votre plugin de récompense préféré. Dans le formulaire de votre serveur, section « Récompenses de vote » :
- Hôte : l'adresse publique de votre serveur (sans http://).
- Port : le port de NuVotifier (8192 par défaut), ouvert chez votre hébergeur.
- Token :
plugins/Votifier/config.yml→tokens: default:(protocole v2, recommandé). - Ou clé publique :
plugins/Votifier/rsa/public.keypour l'ancien Votifier ou un forwarder qui ne gère que le protocole v1.
Le protocole est choisi automatiquement : v2 avec le token si votre serveur le propose, sinon v1 avec la clé publique. Le bouton « Envoyer un vote de test » vérifie tout en un clic. Les joueurs Bedrock (Geyser / Floodgate) sont transmis avec leur pseudo, point compris.
2. API HTTP
Créez une clé API dans le formulaire de votre serveur. Gardez-la secrète : utilisez-la uniquement depuis votre serveur, jamais dans une page web. La clé peut être passée en paramètre key ou dans l'en-tête Authorization: Bearer.
A-t-il voté ?
GET https://craftrank.fr/api/v1/vote/check?key=VOTRE_CLE&username=Steve
{ "voted": true, "claimed": false, "voted_at": 1759480000000, "next_vote_at": 1759566400000 }
Donner la récompense une seule fois
Renvoie claimed: true une seule fois par vote : vous ne pouvez pas récompenser deux fois le même vote.
GET https://craftrank.fr/api/v1/vote/claim?key=VOTRE_CLE&username=Steve
{ "claimed": true } ← donnez la récompense
{ "claimed": false, "reason": "already_claimed" } ← déjà récompensé
{ "claimed": false, "reason": "no_vote" } ← pas de vote depuis 24 h
Derniers votes (pour un plugin qui interroge régulièrement)
GET https://craftrank.fr/api/v1/votes?key=VOTRE_CLE&since=1759480000000
{ "votes": [ { "username": "Steve", "timestamp": 1759480123000, "claimed": false } ], "now": 1759480200000 }
Exemple Skript
command /voterecompense:
trigger:
set {_r} to text from "https://craftrank.fr/api/v1/vote/claim?key=VOTRE_CLE&username=%player%"
if {_r} contains """claimed"":true":
give player 1 diamond
send "&aMerci pour ton vote !"
else if {_r} contains "already_claimed":
send "&eRécompense déjà récupérée, reviens demain !"
else:
send "&cVote sur craftrank.fr puis refais /voterecompense"
Il faut un addon Skript capable de faire des requêtes HTTP : adaptez la ligne « set {_r} » à la syntaxe de votre addon.
Limite : 300 requêtes par minute. Un vote compte pendant 24 h, comme sur le site.
3. Webhook
Indiquez une URL dans le formulaire de votre serveur : à chaque vote, CraftRank l'appelle en POST avec ce contenu JSON :
POST https://monserveur.fr/craftrank-vote
Content-Type: application/json
X-CraftRank-Signature: sha256=…
{ "event": "vote", "server": { "id": 12, "slug": "mon-serveur", "name": "Mon serveur" }, "username": "Steve", "timestamp": 1759480123000 }
Vérifiez la signature pour être sûr que l'appel vient bien de CraftRank : c'est le HMAC-SHA256 du corps brut, avec votre clé API.
// Node.js
const sig = 'sha256=' + crypto.createHmac('sha256', CLE_API).update(rawBody).digest('hex');
if (!crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(req.get('X-CraftRank-Signature') || ''))) return res.sendStatus(401);
// PHP
$sig = 'sha256=' . hash_hmac('sha256', file_get_contents('php://input'), CLE_API);
if (!hash_equals($sig, $_SERVER['HTTP_X_CRAFTRANK_SIGNATURE'] ?? '')) { http_response_code(401); exit; }
Répondez avec un code 2xx en moins de 8 secondes (les redirections sont suivies). Le vote de test du formulaire envoie aussi un appel avec "event": "test". Le résultat du dernier appel est affiché sous le champ du webhook.
Afficher les votes dans un salon Discord
Collez directement l'URL d'un webhook Discord (Paramètres du salon → Intégrations → Webhooks → Nouveau webhook → Copier l'URL) : CraftRank poste un message dans le salon à chaque vote, avec le pseudo du joueur et le nombre de votes du mois. Rien à programmer.