【Minecraft】チェスト内のアイテムをコピーする

Minecraft 1.13 から追加された /data コマンドですが、これを上手く使うといろんなことができます。

まずは /data コマンドで何ができるかです。コマンドのオプションはこのようになっています。

/data get -> データを取得する
/data merge -> データを結合する
/data modify -> データを編集する
/data remove -> データを削除する

これらのコマンドでできることを一言で言えば、データの操作です。

まずはチェストを作って、そこにアイテムを収納しておきましょう。

f:id:takunology:20210204053129p:plain

チェスト内には石ブロックとダイヤモンドが入っています。このデータを取得してみます。

/data get block <チェストの座標> Items

f:id:takunology:20210204053534p:plain

これで中身は得られるのですが、このデータをこのまま手で打ち込むのは面倒ですね。なので、storage を使用します。

/data modify storage <任意の変数名> <任意の要素> set from block <チェストの座標> <欲しいデータの要素>

今回はチェストのアイテム要素が欲しいので、こんな感じにしました。

/data modify storage chestitems Items set from block <チェストの座標> Items

これを実行した後に、

/data get storage <任意の変数名>

を実行すると、元のチェストのアイテム要素と同じNBTになっています。

f:id:takunology:20210204054544p:plain

storage はマイクラで扱うデータ(NBT)を保存しておく変数を宣言できるコマンドです。

新しいチェストを作り、そのチェストに対してこのコマンドを実行すると、

/data modify block <チェストの座標> Items set from storage <コピーした変数名> Items

f:id:takunology:20210204055558p:plain

空になっていたもう一方のチェストの Items 要素に storage の Items 要素がセット(上書き)されて、元のチェストと同じになりました。

これを応用すると、チェストアイテムのバックアップをとることができます。ワールドを削除してしまっても、このデータを保持していることができれば、新しいワールドのチェストに同様のアイテムを復元することができます。

この storage を使って Mod なしでアイテムをソートするようなプログラムを作ろうと考えています。完成したら Minecraft with Code Project のほうにアップしておきます。