[CraftBukkit] Jsonapi - Reliez votre serveur à votre site !

I- INTRODUCTION

Bien le bonjour, aujourd’hui je rédige ce tutoriel pour vous permettras de faire une liaison entre votre serveur bukkit et votre site, vous pourrez alors affichier sur votre site le nombre de joueurs en ligne, nombre de joueurs maximum…

II- PRÉS REQUIS

  • Posséder un serveur Minecraft CraftBukkit
  • Posséder un hébergement web
  • L’extension Curl doit être activer sur votre site Internet. (pour connaitre si votre extension est activer, créez un fichier en PhP et mettez ce bout de code “<?php phpinfo(); ?>” et rechercher la ligne “Curl”)
  • Quelques connaissances en PhP sont requises
  • Le plugins Jsonapi ainsi que le fichier PhP
  • Le serveur FTP est requis afin de mettre en ligne vos fichiers, généralement il est inclus dans votre hébergement web.

1] Installation et configuration du plugins Jsonapi

Vous devrez vous rendre dans votre espace ftp puis vous vous rendrez dans “Plugins” ensuite vous glisserez votre plugins dedans.
Redémarrez votre serveur, puis des fichiers devront apparaitre.

2] Configuration du plugins

Rendez-vous maintenant dans le dossier plugins de votre serveur chercher le dossier JSONAPI, puis ouvrez “config.yml”.
Vous devez voir apparâitre ceci :

method-whitelist: // Les méthodes qui seront utilisés
- getPlayerLimit
- dynmap.getPort
logins:    
votrenomd'utilisateur: votremotdepasse
options:
startup-delay: 2000    
port: 20059    // Demandez un port LIBRE et EXCLUSIF via le formulaire contact
ip-whitelist: []    
log-to-console: true   // Si "true" toutes les actions effectués par le plugins seront indiqués dans la console
log-to-file: 'false'    // Si "true" toutes les actions effectués par le plugins seront enregistrés dans vos logs
salt: 'inscrivez votre salt'    // Le "salt" est une sorte de second mot de passe
anyone-can-use-calladmin: true    
server-name: 'default' // Le nom de votre serveur

Commencez par modifier le “usernameGoesHere” et renseigner un nom d’utilisateur faites pareil pour le mot de passe ainsi que le “salt”.
Une fois complété, faite un redémarrage du serveur.

3] Configuration partie site

Rendez-vous désormais dans votre espace web puis transfèrer le fichier préalablement télécharger “JSONAPI.php” dans votre ftp et créer un autre fichier php. Ouvrez-le et insérer dedans ce code :

<?phprequire('JSONAPI.php'); // get this file at: https://github.com/alecgorge/jsonapi/raw/master/sdk/php/JSONAPI.php$ip = "localhost"; // Ip du serveur$port = 20059; //port du plugin (par défaut : 20059)$utilisateur = "root"; //nom d'utilisateur$motdepasse ="root"; //mot de passe$salt ="salt"; $api = new JSONAPI($ip, $port, $utilisateur, $motdepasse, $salt);// on affiche le nombre de joueurprint_r($api->call("getPlayerCount"));?>

Une fois ceci fais, enregistrez votre fichier puis vous devriez obtiendre ceci:

Array(    [result] => success    [source] => getPlayerCount    [success] => 0)

Malheureusement, si vous obtenez cela:

Array(    [result] => error    [error] => Invalid API key.    [source] => getPlayerCount)

C’est que vous avez fait une erreur dans la configuration du fichier.

4] Récupérer des données du serveur

Comme vous l’aurez compris, le code que je vous ai fait faire permet d’afficher le nombre de joueur.

Pour commencer on va modifier ce code :

print_r($api->call("getPlayerCount"));

Et mettre en place celui-ci

$PlayerCount = $api->call("getPlayerCount");print_r($PlayerCount["success"]);

Si votre serveur Minecraft est vide, vous devrez remarquer ce résultat:

0

Exemple d’utilisation:

Les informations du serveur

Je vous propose ce petit bout de code que j’ai créer avec l’utilisation de quelque méthodes utiles:

<?phprequire('JSONAPI.php'); // get this file at: https://github.com/alecgorge/jsonapi/raw/master/sdk/php/JSONAPI.php$ip = "localhost"; // Ip du serveur$port = 20059; //port du plugin (par défaut : 20059)$utilisateur = "root"; //nom d'utilisateur$motdepasse ="root"; //mot de passe$salt ="salt";$api = new JSONAPI($ip, $port, $utilisateur, $motdepasse, $salt);$PlayerCount = $api->call("getPlayerCount");$PlayerLimit = $api->call("getPlayerLimit");$ServerVersion = $api->call("getServer");echo "Ip : $ip " ; echo " Etat : ";if ($ServerVersion["success"] == '') { echo "Serveur hors ligne "; } else { echo "Serveur en ligne "; echo ' Nom du serveur : '; print_r($ServerVersion["success"]["serverName"]); echo " Nombre de joueur : "; print_r($PlayerCount["success"]); echo "/"; print_r($PlayerLimit["success"]); echo ' Version du Serveur : '; print_r($ServerVersion["success"]["version"]); echo ''; } ?>

Ne vous inquiéter pas, toutes les méthodes sont disponible ici

Si vous rajouter ce code:

 $PlayerNames = $api->call("getPlayerNames");

Vous pourrez avoir alors les pseudos des joueurs connectés sur votre serveur Minecraft.

Nous pouvons même aller plus loin en ajoutant ce bout de code permettant de récupérer les skins des joueurs connectés:

foreach ($PlayerNames["success"] as $value) {
        echo"<img src=\"https://minotar.net/avatar/$value/32.png\" alt=\"$value\" title=\"$value\"> $value";
    }                }

Nous restons à votre entière disposition.

Cordialement,

  • Finalisation du tutoriel
  • Modification des liens

Merci beaucoup !!! Je suis une b… En dev web :confused:

Merci merci merci !

Personnellement, le code ne marche pas pour la détection serveur Online/Offline
J’utilise du coup celui-ci

[php]

<? require('JSONAPI.php'); function preint_r($array) { echo '
';
      print_r($array);
      echo '
'; echo '
'; } $ip = "**********"; // Ip du serveur $port = *****; //port du plugin jsonapi(par défaut : 20059) $port2 = *****; //port du serveur $utilisateur = "*****"; //nom d'utilisateur jsonapi $motdepasse ="*****"; //mot de passe jsonapi $salt ="salt"; $timeout = "10"; $api = new JSONAPI($ip, $port, $utilisateur, $motdepasse, $salt); //recup info joueur en ligne $result_getPlayers = $api->call("getPlayerCount"); $playercount = $result_getPlayers["success"]; //recup info joueur max $result_getPlayerLimit = $api->call("getPlayerLimit"); $playermax = $result_getPlayerLimit["success"]; //ip du serv echo '

IP: *****

'; //etat serv (online/offline) if ($ip and $port2 and $timeout) { $verbinding = @fsockopen("$ip", $port2, $errno, $errstr, $timeout); } if($verbinding) { echo " Online"; } else { echo " Offline"; } //joueur en ligne echo '

Joueurs en ligne

'; echo '

'.$playercount.' / '.$playermax.'

'; ?>

[/php]

Voila le résultat:

tu peu me le faire stp

Sa ne marche pas avec craftmycms

Ca fonctionne trés bien avec craftmycms (meme si j’ai passer 3h à trouver u_u), la preuve: http://seekcraft.fr/

Donc, je vais t’expliquer comment relier ton serveur minecraft-mania avec ton site.
Suis bien cette vidéo: http://www.youtube.com/watch?v=oDEPrC0a_Nk
désactive bien “use-new-api:” en le mettant sur false.

Et la ça devrait marcher ^^

Impossible pour moi de relier mon serveur à Craftmycms ! Deux jours que j’essaye vainement … lorsque l’on réserve un port sur le site es-ce qu’il est “ouvert” ?

Oui mais ton hébergeur web doit lui aussi ouvrir ses ports .

Cordialement

Ah, enfin une piste. Pourrai-je avoir plus de précisions s’il vous plait ? Je suis chez ovh. Que dois-je leur demander exactement d’ouvrir certains ports en particulier ?

Merci pour la réponse rapide en tous cas je commençai à désespérer ^^

Ovh marche trés bien avec craftmycms. Regarde mon post au dessus qui explique comment faire ^^

Déjà fait bien évidemment et ça ne règle pas mon problème :frowning:

Meme en ouvrant un port depuis le panel minecraft-mania ?

Oui bien sur ^^ Par contre la bizarrement le site semble fontionné mais dans le panel admin il me dit que c’est pas lié …

"Etat du CMS Problème de liaison "

Et pourtant : http://theoldworld.fr/

j’ai le meme chose :slight_smile:

Edit: si tu veux un aperçu du mien: http://seekcraft.fr/

undefined
[hr]
salut j’aimerai cree un site web avec mineshop ect dedans j’ai essayer mais imposible d’y arriver qq’un peu m’aider pliss

aider moi a relier mon cms a mon serveur svp

J’me permet de HS pour te dire que je vois ton serveur depuis pas mal de temps, j’ai suivis ton évolution, et je suis content pour toi que tu te développe bien.

Sauf que le HS est interdit …

Cordialement

c’est quoi le hs ?