マルチプレイなら『シン・VPS』がおすすめ!

【マイクラ】エンダーチェストの中身をランダムに排出する【コマンド】

【マイクラ】エンダーチェストの中身をランダムに排出する【コマンド】

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

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

なつめ

2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!

この記事では、こんな疑問を解決します!

本記事の内容
  • 変数を使ってエンダーチェストの中身をランダムに取り出す

今回はエンダーチェストの中身をランダムに選び、それを付与するコマンドを紹介していきます。

実際にやってみた様子がこちら。

storageや変数を扱いますが、記述するコマンド数は少ないため、めちゃくちゃ難しいわけではありません。

さっそく見ていきましょう!

変数を使ってエンダーチェストの中身をランダムに取り出す

エンダーチェストの中身を参照してアイテムを付与させる場合

  • ランダムに数字を1つ選ぶ
  • 選出された数字とエンダーチェストの中身(位置)から該当するアイテムを参照し、付与させる

といった段階を踏む必要があります。

また、今回は変数を扱うためfunctionコマンドを使用します。
データパックを作成する必要がありますので、その説明もしていきます。

データパックの構造

mcfunctionを呼び出せればよいので、難しいことはしません。

  • datapack本体
    • data
      • sample
        • functions
          • draw_result.mcfunction
          • draw_item.mcfunction
    • pack.mcmeta

いつものことですが、pack.mcmeta、mcfunction以外は全てフォルダです。

また、pack.mcmetaは以下のように書いておけば機能します。

{
  "pack": {
    "pack_format": 26,
    "description": ""
  }
}

次項からは各mcfunctionの内容とどのような働きがあるのかを見ていきましょう。

draw_result.mcfunction

draw_result.mcfunctionでは、エンダーチェストの中身からアイテムをランダムに選ぶことを行います。

具体的な記述内容はこちら。

#ランダムにドロー
execute store result storage draw:item number int 1 run random value 0..26
#乱数を指示した関数に渡しつつ実行
function sample:draw_item with storage draw:item

2行目のコマンドにて、randomコマンドを用いて0~26の値を抽選しつつ、それをdraw:itemのnumberに格納しています。

この辺りはstorageの知識がいるため、よく分かっていないという方は【マイクラ】dataコマンドでstorageにデータを追加するあたりの記事で勉強することをお勧めします。

格納後は4行目のfunctionコマンドにて、sample:draw_itemを呼び出しています。

ここに含まれているコマンドについては次項で解説しますが、覚えておきたいのは、withを用いてdraw:itemのデータを参照すると言っている点ですね。

先ほど保存したデータを、呼び出す関数で活用します。
というわけでdraw_item.mcfunctionを見ていきましょう。

draw_item.mcfunction

記述されている内容はこちら。

$item replace entity @s hotbar.0 from entity @s enderchest.$(number)

itemコマンドが書かれており、文末に$(number)があります。

この部分は呼び出す際に指示していたdraw:itemの、numberを参照するということなので、言ってしまえばランダムに選ばれた数字に置き換えられます。

1が抽選されていた場合には、”enderchest.1”と同じ意味合いになるわけですね。

これによって、hotbar.0の位置にエンダーチェストの中身(該当するアイテム)へと置き換えることが可能というわけです。

データパック作成後

データパックでの作業を終え導入することができたら、エンダーチェストにアイテムを詰め込みます。

その後

/function sample:draw_result

を実行してみましょう。

ホットバーの左端に、ランダムに選ばれたアイテムが設置されるはずです。

まとめ

というわけで、今回のまとめです。

ポイント
  • エンダーチェストの中身を参照してランダムに中身を取り出すには、変数を駆使する必要がある。

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

  • 【まとめ】functionコマンドの基本から応用【マイクラ】
  • 【まとめ】カスタムストラクチャーの実装・カスタム方法【マイクラ】
  • 【一覧】夏メの制作物【マップ・データパック配布】