ネコと和解せよ

MinecraftServerの状態表示API


Minecraftマルチプレイ、楽しいですよね。でもサーバーが生きてるかどうか、クライアントを立ち上げてチェックするのは面倒ですよね。


そこで、Minecraft1.8以上のサーバリストを見れるWebAPIを作りました。


Htmlでみる


Htmlで見るときは、以下のように使います。

http://nyatla.jp/ws/mcsapi/mcsapi.php?cmd=si&s=[サーバアドレス]&p=[ポート番号]

サーバアドレスには、マインクラフトサーバのアドレス、ポート番号は特にいじっていなければ、25565を指定します。


こちらのページでサーバアドレスを入力すると、サーバ状態表示用ページを作れます。
マインクラフトサーバ状態URLジェネレータ

JSON API

このAPIは、RESTリクエストでjsonを返すことが出来ます。かっこいいサーバ監視画面を作れる方は、javascriptJSONを取得して、作ってみてください。

リクエストは、こんな感じです。f=jsonを追加しただけですね。

http://nyatla.jp/ws/mcsapi/mcsapi.php?cmd=si&s=[サーバアドレス]&p=[ポート番号]&f=json

javascriptで取得するときは、evalしてオブジェクトに変換してください。IE以外はこんな感じでできます。

function xhrget(i_url)
{  
    var xhr = window.XDomainRequest ? new XDomainRequest() : new XMLHttpRequest();  
    try { 
        xhr.open("GET",i_url,false);
        xhr.send(null);  
    } catch (e) {
	    return null;
    }
    return xhr.responseText;
}

function update()
{
	number_of_update++;
	var s=xhrget("http://nyatla.jp/ws/mcsapi/t.php?cmd=si&s=****&p=25565&f=json");
	var v;
	if(s==null){
	}else{
		v=eval("("+s+")");
	}
	alert(v);
}

返却されるJSONは以下の通りです。

{online:true,
server:{name:"*****",port:25565},
result:{
  retcode:255,title:"server title",
  user:{active:1,max:20}
},
update_time:1317815356}
online サーバがオンラインならtrueです。
server name:サーバアドレス,port:サーバポート番号
result サーバの情報です。retcode:謎。title:サーバのタイトル名です。user.active:接続中のユーザ数です。user.max:最大接続人数です。
update_time サーバの状態を更新した時間です。Unix エポック (1970 年 1 月 1 日 00:00:00 GMT) からの通算秒です。


クロスドメイン通信になるので、Access-Control-Allow-Origin:*が使えない環境では使えません。

ソース

github.com


なお、ステータスの更新は、最小3分間隔で行います。