ルッキーのコマンドメモ

主にマイクラのコマンドやデータパックに関することを書いていきます。

(マイクラ コマンド・データパック) clearコマンドの使い方とその利用例

clearコマンドの使い方・応用例

今回はclearコマンドの使い方について紹介していきます。

このコマンドをうまく使えば、プレイヤのインベントリから特定のnbtを持ったアイテムだけを消したり、プレイヤが特定のアイテムを持っているかを検知したりと、データパックを作る上でのかなり有用な操作ができるようになります。

目次

clearコマンドの基本的な使い方

まず、clearコマンドの基本的な使い方を説明しておきます。

このコマンドの構文は以下のようになります。

clear <対象> <消したいアイテム> <最大個数>

例えば、プレイヤのインベントリにある石を全て消したいのであればこのような構文になります。

# プレイヤから石だけを消す
clear @p stone

また、アイテムの欄で、tagを指定することもできます。

# ダメージ増加1のエンチャントがついたダイヤの剣を1つだけ消す
clear @p diamond_sword{Enchantments:[{id:"minecraft:sharpness",lvl:1s}]} 1

さらに、アイテム欄にはアイテムタグを指定することもできます。

# #arrowsタグ、つまり光の矢と効果付きの矢と普通の矢を全て消す
clear @p #arrows

そして、アイテムを消す最大の個数を0に設定すれば、単純にプレイヤがアイテムを持っているかどうかを調べられます。

# プレイヤが#arrowsタグのアイテムを持っていたらyesと表示
execute store success score @p test run clear @p #arrows 0
execute if score @p test matches 1 run say yes

これはアイテムの個数を0に設定するとexecute store successでアイテムを持っていた場合に1、持っていなければ0の値が入ることを利用しています。

clearコマンドの利点

clearコマンドを使う利点は以下の2つが挙げられると思います。

プレイヤのインベントリのアイテムを消せる

まずはプレイヤのインベントリから簡単にアイテムを消せるという点が挙げられます

プレイヤのnbtデータは読み取り専用で編集不可能なので、clearコマンドを使わずにプレイヤのインベントリからアイテムを消そうとするとかなり面倒な操作が必要になります。
(プレイヤのnbtから該当するアイテムのスロット番号を取得、そのスロット番号のアイテムをitemコマンドにより消すという操作になります)

しかし、このコマンドを使えばたったの1コマンドだけでこの操作を行えます。この点はとても重要な点だと言えると思います。

アイテムタグを利用して操作を行える

個人的にはこちらの方が重要な点だと思うのですが、アイテムタグを指定してアイテムをけせるという点がこのコマンドの強みだと思っています。

clearコマンドの基本的な使い方の最後のコマンドでは、#arrowsというアイテムタグのアイテムを持っているかを検知していました。

これを利用すると、まず、このようなアイテムタグをデータパックのdata/<名前空間>/tags/itemsに以下のような形で作成して、

iron_armor.json

{
  "values": [
    "minecraft:iron_boots",
    "minecraft:iron_leggings",
    "minecraft:iron_chestplate",
    "minecraft:iron_helmet"
  ]
}

以下のようなコマンドを打つことで、作成したアイテムタグ内に指定したアイテム、つまり今回であれば全ての鉄装備を消すことができます。

# 鉄装備を全て消す
clear @p #<名前空間>:iron_armor

clearコマンドの応用例

clearコマンドの応用例を紹介します

プレイヤのインベントリから特定のタグがついたアイテムのみを消す

例えば、配布マップなどで、チェストの装飾用や表示用のアイテムとして、プレイヤがインベントリに入れた場合にすぐに消すアイテムを作りたいとします。

しかし、表示用のアイテム一つ一つにclearコマンドを指定して毎tickコマンドを実行するのは処理がとても重くなりますし、書くのが面倒です。

そこで、そのようなアイテムに対して例えば{display_item:1}というような形でカスタムタグをつけておき、表示用に使うアイテム全てを書いたアイテムタグを作成しておけば、

このようなコマンド1つで全てのアイテムを消すことができます。

clear @p #<名前空間>:<作ったアイテムタグの名前>{display_item:1} 

まとめ

clearコマンドを使うことで、プレイヤのインベントリから特定のアイテムを消すことができます。

さらにアイテム名の指定部分でアイテムタグを指定することもでき、あらかじめ自分でアイテムタグを作っておけば、指定したアイテム全てを1コマンドだけで消すこともできます。