[Minecraft ]Afficher Gamemode et la position des joueurs en PHP
Dans cette seconde vidéo, je vous explique comment ouvrir les fichiers dat de votre serveur Minecraft pour afficher le Gamemode de vos joueur ou même leur position, leur XP. Ainsi avec ces informations vous pourriez créer un panel pour afficher l’inventaire de vos joueurs et toute sorte de chose.
Pour cela vous aurez besoin de la class PHP: https://github.com/TheFrozenFire/PHP-NBT-Decoder-Encoder et l’extension GMP pour PHP.
La vidéo:
Le code:
require("nbt.class.php"); $nbt = new nbt(); // ---------- ---------- ---------- ---------- ---------- // echo '<hr>'; // echo '<hr><a href="">recharger la page</a><hr>'; // ---------- ---------- ---------- ---------- ---------- // Edit this -> define( 'MQ_SERVER_ADDR', 'simonbhb.fr' ); define( 'MQ_SERVER_PORT', 25565 ); define( 'MQ_TIMEOUT', 1 ); // Edit this <- // ---------- ---------- ---------- ---------- ---------- include 'MinecraftQuery.php'; $Query = new MinecraftQuery(); try { $Query->Connect( MQ_SERVER_ADDR, MQ_SERVER_PORT, MQ_TIMEOUT ); } catch( MinecraftQueryException $e ) { $Exception = $e; } $Players = $Query->GetPlayers( ); $GetInfo = $Query->GetInfo( ); // krumo($GetInfo); // Info serveur minecraft // var_dump($Players); // Joueur connecté // ---------- ---------- ---------- ---------- ---------- $whitelist = json_decode(file_get_contents("/home/simonbhb/minecraft/serveur/1.9/whitelist.json")); // krumo($whitelist); $ops = json_decode(file_get_contents("/home/simonbhb/minecraft/serveur/1.9/ops.json")); // krumo($ops); // ---------- ---------- ---------- ---------- ---------- $array_gamemode = array("0" => "Survie", "1" => "Créatif"); $grade = "Joueur"; foreach ($whitelist as $key => $value) { @$test = $nbt->loadFile("/home/simonbhb/minecraft/serveur/1.9/sauvegarde/Nouveau monde/playerdata/".$value->uuid.".dat"); if($Players != FALSE) { if(in_array($value->name, $Players)) { $array_joueurs[$value->uuid]['statut'] = "Connecté"; } else { $array_joueurs[$value->uuid]['statut'] = "Hors ligne"; } } else { } $array_joueurs[$value->uuid]['uuid'] = $value->uuid; $array_joueurs[$value->uuid]['grade'] = $grade; $array_joueurs[$value->uuid]['name'] = $value->name; $array_joueurs[$value->uuid]['pos']["x"] = number_format($test['value'][32]['value']['value'][0], 0); $array_joueurs[$value->uuid]['pos']["y"] = number_format($test['value'][32]['value']['value'][1], 0); $array_joueurs[$value->uuid]['pos']["z"] = number_format($test['value'][32]['value']['value'][2], 0); $array_joueurs[$value->uuid]['gamemode'] = $test['value'][16]['value']; $array_joueurs[$value->uuid]['gamemode_1'] = $array_gamemode[ $test['value'][16]['value'] ]; } // ---------- ---------- ---------- ---------- ---------- $grade = "Admin"; foreach ($ops as $key => $value) { @$test = $nbt->loadFile("/home/simonbhb/minecraft/serveur/1.9/sauvegarde/Nouveau monde/playerdata/".$value->uuid.".dat"); if($Players != FALSE) { if(in_array($value->name, $Players)) { $array_joueurs[$value->uuid]['statut'] = "Connecté"; } else { $array_joueurs[$value->uuid]['statut'] = "Hors ligne"; } } else { } $array_joueurs[$value->uuid]['uuid'] = $value->uuid; $array_joueurs[$value->uuid]['grade'] = $grade; $array_joueurs[$value->uuid]['name'] = $value->name; $array_joueurs[$value->uuid]['pos']["x"] = number_format($test['value'][32]['value']['value'][0], 0); $array_joueurs[$value->uuid]['pos']["y"] = number_format($test['value'][32]['value']['value'][1], 0); $array_joueurs[$value->uuid]['pos']["z"] = number_format($test['value'][32]['value']['value'][2], 0); $array_joueurs[$value->uuid]['gamemode'] = $test['value'][16]['value']; $array_joueurs[$value->uuid]['gamemode_1'] = $array_gamemode[ $test['value'][16]['value'] ]; } // ---------- ---------- ---------- ---------- ---------- ?> <pre> <?php var_dump($array_joueurs); ?> </pre>
Tous les codes sont testés et sont fonctionnels, si il arrive qu'un de ces codes ne fonctionne pas chez vous, merci de me le signaler.