Youtubeチャンネルはこちら!コマンド解説を動画で観れます!

【解決】寝る・寝ていることに関するコマンドを徹底解説【マイクラ】

【解決】寝る・寝ていることに関するコマンドを徹底解説【マイクラ】

この記事では、Minecraft Java Edition(バージョン1.18.1)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。

寝る行為に関するコマンドを知りたいマインクラフター
「寝ているプレイヤーってどうやって判別すればいい? 強制的に寝かせたり、寝ていることに関するコマンドってどういうものがあるのか教えて欲しいな」

こんな疑問を解決します!

本記事の内容
  • 寝ているプレイヤーはSleepTimerが100sを示す
  • 寝ることを強制させることはできない
  • 夜を超すために必要な、寝ているプレイヤーの割合を変更する

こんにちは! マインクラフターのなつめ(@natsume_717b)です。

なつめ

マイクラ歴は5年程で、最近は脱出マップを配布・制作しています!
配布マップ・ダウンロードページ

この記事では、寝ることに関するコマンドをまとめてあります。

具体的には、寝ているプレイヤーだけをコマンドの対象にする方法、寝ることをコマンドで強制することはできない、夜を超すために必要な寝ているプレイヤーの割合を変更する方法といったことを解説しています。

寝る、寝ていることに関するコマンドはあまり数が多くないので、この記事だけでも十分役立つかと思います。

使う場面こそ多くありませんが、寝るという行為に意味づけをすることができるようになるので、ふとした時に活用できますよ。
それでは、さっそく見ていきましょう!



寝ているプレイヤーはSleepTimerが100sを示す

寝ているプレイヤーはSleepTimerという値が100sを示しています。
この値は起きていると0sなので、SleepTimerが100sのプレイヤーを対象にするようコマンドを組めば、寝ているプレイヤーだけを対象にすることができるということです。

実際に寝ているプレイヤーを対象にしようとすると、以下のようにターゲットセレクターを入力します。

@a[nbt={SleepTimer:100s}]

上記のターゲットセレクターをgiveコマンドに使えば、寝ているプレイヤーだけにアイテムを付与することができますし、tpコマンドを使えば、寝ているプレイヤーだけをテレポートさせることができます。

ちなみにですが、100sではなく101sや1sと指定することで、少し違った挙動を起こすことができます。

というのも、寝た瞬間や起きる瞬間を感知することができるのです。
101sを指定した場合には起床時にコマンドが機能します。
1sの場合は寝た瞬間を感知することができますよ。

giveコマンドに組み込んだ場合は、101sの場合起床時にアイテムがもらえ、1sにした場合には寝た瞬間にアイテムがもらえます。

というわけでSleepTimerを指定することで、プレイヤーの寝ているかどうかの状態を判別することができます。

寝ることを強制させることはできない

プレイヤーを無理矢理寝かせることは、コマンドでもできません。
この理由としては、そういったコマンドがないほかにプレイヤーのNBTデータを変更することができないからですね。

変更することはできなくとも感知することは可能なので、先述の寝ているプレイヤーだけを対象にするといったことは可能です。

なので、どうしても寝かせたい場合は密室に閉じ込めてベッドで寝たことで密室を解除できるといったギミックを制作する必要があります。

Modなどを使えば無理矢理寝かせることはできるかもしれませんが、少なくともバニラの状態では不可能なので、工夫して寝かせる状況を作りましょう。

夜を超すために必要な、寝ているプレイヤーの割合を変更する

最後に、夜を超すための寝ているプレイヤーの割合を変更する方法を紹介します。

普通は100%が指定されているのでワールドにいる全てのプレイヤーが全員寝る必要があるのですが、gameruleコマンドのplayersSleepingPercentageという項目を弄ることでその割合を変更することができます。

/gamerule playersSleepingPercentage 値

playersSleepingPercentageの値を51にしたとします。
この場合、51%以上のプレイヤーが寝ていないといけないので、ワールドに2人いた場合は2人とも寝ないと夜が明けません。
これがもし3人いるワールドだとしたら、2人が寝れば約66%のプレイヤーが寝ていることになるので、もう1人が寝ていなくとも朝を迎えることができます。

というわけで、夜を超すかどうかの設定はplayersSleepingPercentageを使って、寝ているプレイヤーの割合で決めることができます。

まとめ

今回のまとめです。

今回使ったコマンドはこちら。

今回使ったコマンド
  • 寝ているプレイヤーをコマンドの対象にする際に使うターゲットセレクター
    (@aなので、寝ているプレイヤー全員が対象となる)
@a[nbt={SleepTimer:100s}]
  • 夜が明けるのに必要な寝ているプレイヤーの割合を変更するコマンド
/gamerule playersSleepingPercentage 値
ポイント
  • 寝た瞬間や起きた瞬間を感知するには、SleepTimerを1s、101sに設定すればOKです。
  • 強制的にプレイヤーを寝かせるコマンドは存在しません。

この記事は以上になります。