たくのろじぃのメモ部屋

プログラミング・数学・マイクラなどの内容を備忘録として残すブログ。

【MinecraftConnection】ライブラリメモ #2

自作ライブラリのメモです。(まだ未公開)

プレイヤーの位置を得る

Minecraft でプレイヤーの位置を得るには /data get entity <Player> Pos コマンドを使用すればいいのですが、その返り値がかなり長い文字列です。しかも、データ自体は数値だけではないので文字列の中から必要な情報を抽出しなければなりません。

例えば、上記のコマンドを実行したときの返り値はこのようになります。

<PlayerName> has the following entity data: [795.4707362866134d, 79.0d, 1406.5312841553482d]

この余計な文字列を消して、各座標ごとに抽出します。

PlayerData クラス

プレイヤーのデータを取得するためのクラスです。

名前空間 : MinecraftConnection.Data

コンストラクタ : RCON

メソッド :

  • GetPosX(string PlayerName) : プレイヤーの x 座標を取得
  • GetPosY(string PlayerName) : プレイヤーの y 座標を取得
  • GetPosZ(string PlayerName) : プレイヤーの z 座標を取得

返り値はそれぞれ int 型で返ってきます。コンストラクタに RCON が必要なので、あらかじめ RCON のインスタンスを生成しておきます。

using CoreRCON;
using MinecraftConnection.Data;
//名前空間
class Program
{
    private static IPAddress IP = IPAddress.Parse("127.0.0.1");
    private static ushort Port = 25575;
    private static string Password = "minecraft";
    private static RCON rcon = new RCON(IP, Port, Password);

    static void Main(string[] args)
    {
        PlayerData data = new PlayerData(rcon);

        string PlayerName = "<PlayerName>";

        int x = data.GetPosX(PlayerName);
        int y = data.GetPosY(PlayerName);
        int z = data.GetPosZ(PlayerName);

        Console.WriteLine($"x:{x} y:{y} z:{z}");
    }
}

実行結果

x:795 y:79 z:1406