リファレンス - ver2系
-
MinecraftCommands
-
Fireworks
-
ChestBlock
- ChestBlock
-
メソッド
-
Player
-
Cast
-
拡張メソッド
-
構造体
アイディア集
-
コマンドを使ったゲーム
-
便利な機能をつくる
-
パフォーマンス関連
GetPlayerData メソッド
更新日 : 2022/10/15
編集者 : Takunology
概要
プレイヤーに関するエンティティデータを受け取ることができます.
引数
変数名 | 型 | 説明 |
---|---|---|
playerName | string | プレイヤーのID |
プロパティ
フィールド | 型 | 説明 |
---|---|---|
OnGround | bool | プレイヤーが地面についているかどうかの有無 |
Air | short | プレイヤーが無呼吸でいられる時間 [tick] |
Fire | short | エンティティについた火が消えるまでの時間 [tick] |
FallDistance | double | エンティティの落下した距離 [block] |
Motion | Motion | プレイヤーの速度 (x, y, z) |
Rotation | Rotation | プレイヤーの向いている方角 (x, y) |
Position | Position | プレイヤーの座標 (x, y, z) |
EntityId | string | プレイヤーのID(名前) |
PortalCooldown | int | ポータルを通過できない状態でいる残り時間 [tick] |
Invulnerable | bool | 無敵状態の有無 |
使い方
プレイヤーのエンティティデータそのものが返って来ますので, 各種プロパティへアクセスしてデータを取得します.
プレイヤーのIDを取得する
MinecraftCommands commands = new MinecraftCommands("127.0.0.1", 25575, "passwd");
// プレイヤーのエンティティクラスを取得する
var result = commands.GetPlayerData("takunology");
// プレイヤーIDを参照してコンソール出力
Console.WriteLine(result.EntityId);
実行結果
takunology
プレイヤーの座標を取得する
var result = commands.GetPlayerData("takunology").Postision;
Console.WriteLine($"{result.X}\t{result.Y}\t{result.Z}");
実行結果
213.79175149505863 -42 -184.95366446483624
プレイヤーの動きを取得する
地面に立っている間にも重力による影響は受けているので, Y軸方向の値は常に一定になります. ただし, 空中で静止している間はどの軸の値も 0 になります.
var motion = commands.GetPlayerData("takunology").Motion;
Console.WriteLine($"{motion.X}\t{motion.Y}\t{motion.Z}");
実行結果
0 -0.0784000015258789 0
プレイヤーの速度を重複なく取得するサンプルコード
プレイヤーを255の高さから落下させていくときの速度の変化をコンソール出力するプログラムです. リストの重複をなくすために Distinct()
メソッドを使用しています.
commands.SendCommand("tp takunology ~ 255 ~");
var data = new List<string>();
while(true)
{
var posY = commands.GetPlayerData("takunology").Postision.Y;
var motY = commands.GetPlayerData("takunology").Motion.Y;
if (posY < -55)
{
break;
}
data.Add(posY.ToString());
}
var motData = data.Distinct();
foreach(var item in motData)
{
Console.WriteLine(item);
}
実行結果の例
-0.0784000015258789
-0.1552320045166016
-0.230527368912964
-0.30431682745754424
...
実行結果をグラフに直すとこのような関係を得られます.
素朴な疑問
Q. データ取得して何の役に立つの?
プレイヤーの座標を取得しながらブロックを設置したり、物理演算の解析?に役立てられるかも??