ろきくんわーるど

フォロワーさん!ブログですよ!ブログ!

PHPでMinecraft鯖の情報を取得する

一番新しいの(2015年8月ぐらい)
ろき鯖サイトをリニューアルした話 - ろきくんわーるど





なんか前にも同じような記事書いたような気もしますが、違う方法です。
Minecraft鯖の状態を取得する - ろきくんわーるど
Minecraft鯖の状態を取得する - その2 - ろきくんわーるど

以前の方法で使っていたのはMinecraft APIを利用したJSON情報の取得ですが、最近このAPIサーバーに接続できないのでやり方を変えました。


使うのはこのライブラリです。
xPaw/PHP-Minecraft-Query · GitHub

使うにはserver.propertiesを以下のように設定しておきます。

enable-query=true
query.port=25565

このライブラリだけだと、プレイヤースキンのアイコンが取得できないので、以下のWebAPIも使います
The Miner's Avatar — Minotar


ライブラリを使えばGetInfo()からサーバー仕様やログイン人数、GetPlayers()からプレイヤーIDが取得できるので、こんな感じで以前(Minecraft鯖の状態を取得する - その2 - ろきくんわーるど)と同じようなのができると思います。

<?php
    require __DIR__ . '/MinecraftQuery.class.php';

    $Query = new MinecraftQuery( );

    try
    {
        $Query->Connect( サーバーIPアドレス, ポート番号, 1 );
        $Info = $Query->GetInfo( );
        $Player = $Query->GetPlayers( );
    }
    catch( MinecraftQueryException $e )
    {
        echo $e->getMessage( );
    }

    if ($Info)
    {
    	echo 'ログイン人数:' . $Info[Players] . '/' . $Info[MaxPlayers] . '<br>';
        if( 0 < $Info[Players]){
            echo 'いま遊んでる人たち<br>';
            foreach ($Player as $Player) {
                //プレイヤースキンのアイコンを表示する
                $icon = 'https://minotar.net/helm/'. $Player .'/64.png'; 
                echo '<img src="'.$icon.'">';
            }
        }
    }

ほとんどサンプルに沿ってます。後半部分は前の記事のと殆ど変わらないです。
前より安定してていい感じだと思います。