子どもと岡山と

岡山に来て経験したこと。誰かの役に立ったらいいな。

【マインクラフト】特定のブロックにしか置けないアイテムを出すコマンド

スポンサーリンク

f:id:momoanko:20210127144622j:plain

「ダイヤモンドブロックにしか置けないレバーが欲しいから、そのコマンド打って。」

と息子に頼まれました。

 

自分でも調べてみたけど、そのコマンドで合ってるか分からない。

とりあえず打ち込んでみたけど実行されない。

英語だし長いし意味わかんないし。

だからもうやって!

 

だって。

 

なるほど。

 

課題はこの3つ。

 

それを実行するコマンドの書き方。

入力ミスの原因。

そして忍耐。

 

忍耐はちょっと置いといて、

 

コマンドの書き方と、入力ミスを見つけるためコマンドの解析をしていきたいと思います。

 

※Switch版です。

 

いつ使う?

マイクラには、「アドベンチャーモード」というモードがあって、そこで使うんだって。

 

このモードでは、何も置けない、何も壊せない設定になっています。

 

だけど、「限定したブロックにだけ置けるアイテム」なら、限定されたブロックにだけ置けるようになります。

 

で、何に使うの??

 

子どもの発想力に任せます。

 

コマンドの基本

こちらにまとめました。

 

momoanko.hatenablog.com

 

全部は見なくていいんですが、

基本的な入力の仕方、ブロックID、give、@エンティティ、データ値。

このあたりは知っておいて欲しいです。

 

特定のブロックにしか置けないコマンド

今回の内容で言えば、

「ダイヤモンドの上にしか置けない」レバー。

 

これをプレイヤーに与えればいいんだよね。

 

なのでまずは、giveを使います。

 

基本 

giveコマンドは、

 

/give もらう人 あげる物 数 データ値

の順で入力します。

 

誰にあげてもいいんだけど、欲しい時に自分で出したいなら「@s」(自分のこと)が都合がいいかな。

 

あげる物は「レバー」です。

なので「lever」。

 

数はとりあえず1個でいいかな。

 

データ値はないので0。

 

データ値っていうのは、同じ名前の物がいくつかある時に、区別をつけるため付けられている番号。

 

例えば木材はみんな「planks」だけど、その後ろに数字を付けて木の種類を区別してます。

 

「planks」はオーク。

「planks 1」はマツ。

「planks 2」はシラカバ。

といった感じ。

 

オークのようにデータ値がないものは、省略または「0」と書いておきます。

省略出来ない時もあって、その時はコマンドが働きません。

 

今回もデータ値が必要な感じです。

leverはデータ値がないので「0」を入れておきます。

 

ここまでまとめると、

/give @s lever 1 0

になります。

 

でも、これだけではただレバー。

 

「ダイヤモンドブロックにしか置けない」レバーが欲しいので、その条件をコンポーネントでくっつけていきます。

 

コンポーネント

コンポーネントとは、今回のように要素を付け加えるときに使います。

 

{}内に記入して「"」(ダブルクォーテーションマーク)で挟みます。

これ以外はよくわかりません。

ごめんなさい!

 

「”」の付け方とか、:の意味とか、

調べたけどよくわからなかった。

 

わかったら追記しますね。

 

とりあえず構文を見て、アイテムIDを変えたり、「,」(カンマ)で区切って付け足したりしてみてください。

 

なんとかなります。

 

ブロックIDを知りたいときは、こちらが見やすかったです。

switchは「BE」の方を見てください。

n5v.net

 

今回の例ではこうなります。

/give @s lever 1 0 {"can_place_on":{"blocks":["diamond_block"]}}

 

"can_place_on"で置けるという許可を与えてます。

 

どこに?は、"can_place_on"の次の"blocks"。

どの"blocks"か?と言うと、"diamond_block"。

 

きっとこういう事かな?

 

「ダイヤモンドブロックと金ブロックの上だけ」など、ちょっと限定するものを増やしたいときは、,(カンマ)で区切ってくっつけていきます

 

そうすると、こうなります。

/give @s lever 1 0 {"can_place_on":{"blocks":["diamond_block","gold_block"]}}

 

どんどん応用しみてください。

 

コマンドが動かない時の対応

原因は入力ミスがほとんどです。

 

「/」は入力されているか。(コマンドブロックに書くときは省略可) 

全て半角で入力しているか。(記号や空白も)

スペルはあっているか。

大文字・小文字・数値を間違えていないか。

データ値は入力されているか。

空白は適切に入っているか。

”や{}などが抜けていないか。(ペアで使います)

 

このあたりを確認してみてください。

 

今回のコマンドではデータ値の0の後ろの{以降は、空白は入っていません。

 

空白が分かりやすいように、空白の部分を■で書くとこんな感じ。

/give■@s■lever■1■0■{"can_place_on":{"blocks":["diamond_block","gold_block"]}}

 

空白って見えないから、間違っていても気づきにくい。

必要なところに入っているか、変なところに入ってないか、半角になっているか。

ちょっと注意してみてください。

 

そしてもう一つ。

 

今回コマンドを調べていて、いろんなコマンドを入力してみたけど、動かなかったものもありました。

 

動かなかったコマンドには、「minecraft」の文字が入っていました。

 

こんな感じ。

/give @s lever 1 0 {"minecraft:can_place_on":{"blocks":["diamond_block","gold_block"]}}

 

結局これが原因なのか分かりませんが、「minecraft」の文字を省いたら動くようになったので、同じような症状でお困りの方は省略してみてください。

 

もしかして、PC用のコマンドなのかな?

 

きっとこれで作動するはず。

してほしい!

 

まとめ

特定のブロックにだけ置けるアイテムを入手するには、こちらの構文を使ってください。

 

/give 受け取る人 あげるアイテム 数 データ値 {"can_place_on":{"blocks":["特定のブロックのブロックID","特定のブロックのブロックID"]}}

 

動かない時のチェック項目は、他のコマンドでも同じなので、困った時はこちらを確認してみてください。