1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Minecraft Kotlinプラグイン開発 ミニ構文紹介 プレイヤーの取得

Posted at

初めに

今回はミニ番外編としてプレイヤーの取得に焦点を当てて紹介していきます。

今までかなり一記事当たりの内容が濃かったので、
それに比べたら内容は薄くなってしまいますが
今回からはちょっとした構文の紹介もしていきたいと思います。

また、ミニ番外編は特に繋がりを持たない記事にする予定なので
次の記事とかのURLは無しで行きます。

今回紹介するコードの基本構文

今記事で紹介するコードは Bukkit.getPlayer() です。
このコードでは名前やUUIDを使用してプレイヤーを取得できます。
コマンドを作る時に使用したり、
そもそも特定のプレイヤーにのみ反応する機能を作る時に活用できます。

名前でプレイヤーを指定

引数にプレイヤー名(MCID)を記入することでプレイヤーが関数の返り値で返ってきます。

@EventHandler
fun onJump(event: PlayerJumpEvent) {
    val player = Bukkit.getPlayer("towa0111")
    if (player == null) return
    player.sendMessage("${event.player}がジャンプしました")
}

上の例文では誰かがジャンプした時に、プレイヤー(towa0111) にメッセージを送信します。
ここで大事なのが4行目のif (player == null) returnの部分です。

UUIDでプレイヤーを指定

引数にUUIDを記入することでプレイヤーが関数の返り値で返ってきます。

@EventHandler
fun onJump(event: PlayerJumpEvent) {
    val player = Bukkit.getPlayer(event.player.uniqueId)
    if (player == null) return
    player.sendMessage("あなたはジャンプしました")
}

上の例文ではジャンプした時にそのプレイヤーへメッセージを送信します。
(event.playerを使って省略できる文をわざと解説のために、回りくどい文にしています。)

基本的な使い方は一緒です。

UUIDはplayer.uniqueIdで取得出来ます。
UUIDはMCIDとは違い変更ができないので、データの保存に使用される事が多いです。

このコードは一つ前のMCIDの方法でも全く問題なく動きます。
UUIDで指定する方法はデータベースを使用するようになってから
使うことが多いので最初の方は特にUUIDを使う必要はありません。

オフラインのプレイヤーも取得

先ほど紹介した**getPlayer()**はオンラインのプレイヤーしか取得できません。
そのためそのプレイヤーがオフラインだとnullが返されてしまいます。

その対策で Bukkit.getOfflinePlayer() という関数も存在します。
使用方法は getPlayer() と同じなので紹介しませんが
全く同じでUUIDとMCIDで取得できます。

終わりに

短いですが今回の記事はここまでです。

今回の記事ではMCIDやUUIDを使用してプレイヤーを取得する方法を紹介しました。

紹介した内容はデータベースを使うときやコマンドの引数で
プレイヤーを取得するときなど、プラグイン開発序盤じゃ使うことは少ないと思いますが
今後どこかで使うことはあると思うので多少でも覚えておいてもらえると幸いです。

それでは次回はまた別の文を紹介したいと思います。
お疲れ様でした。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?