Fキーを押すと何か起こるアイテムの作り方 – オフハンドスロットにアイテムが入った瞬間を検知するには【Minecraft】
バージョン1.9で追加された「オフハンドスロット」。Fキーで手持ちアイテムをオフハンドスロットと入れ替えられることは皆さんご存知ですよね。今回はあの持ち替えを利用した、「Fキーを押すと何か起こるアイテム」の作り方を解説します。例えば「Fキーでファイアボールを召喚」「Fキーで周囲に爆発を起こす」など配布ワールドの作成にピッタリな仕掛けが作れます。マルチプレイにももちろん対応。新しいタイプの機能付きアイテムを今度こそ作ってみませんか。
目次
Fキーで何か起こるアイテムとは? 作成例を紹介
こちらの「魔法のダイヤモンド」というアイテムは、Fキーを押すと魔法が発動したっぽい音が鳴り、頭上にファイアボールが召喚されます。
この「斬撃のハサミ」を持ってFキーを押すと、Sweep攻撃のパーティクルを出し、同時に周囲のMobにダメージを与えます。確実に範囲攻撃が出来るアイテム、ってことです。
この「爆発のファイアチャージ」を持ってFキーを押すと、自分を中心に爆発を引き起こします。死にそう? 安心して下さい、爆発の直前に自分だけ無敵になる仕様にしています。
装置はこんな感じ。常時実行するコマンドはそれぞれ4個、5個、4個で結構コンパクトにしたつもりです。(右クリック検知に比べれば相当少ないですよね)そしてマルチプレイにも対応しています。PvPで活躍する便利アイテムを作ってみましょう!
紹介した3つのアイテムの仕組みとコマンドを解説
スコアボードとアイテムを用意しよう
まずは動作に必要なスコアボードのオブジェクトとアイテムを用意しましょう。
- 「魔法のダイヤモンド」を作成するために必要なスコアボードとアイテムを用意するコマンド
- /scoreboard objectives add offhandMagicDia dummy
/give @p diamond 1 0 {display:{Name:”魔法のダイヤモンド”,Lore:[“Fキーを押して使う”]}}
- 「斬撃のハサミ」を作成するために必要なスコアボードとアイテムを用意するコマンド
- /scoreboard objectives add offhandZangeki dummy
/give @p minecraft:shears 1 0 {display:{Name:”斬撃のハサミ”,Lore:[“Fキーを押して使う”]}}
- 「爆発のファイアチャージ」を作成するために必要なスコアボードとアイテムを用意するコマンド
- /scoreboard objectives add offhandFC dummy
/give @p minecraft:fire_charge 1 0 {display:{Name:”爆発のファイアチャージ”,Lore:[“Fキーを押して使う”]}}
Fキーを押すとファイアボールが出てくる仕組みとコマンドを解説
左から4つコマンドブロックを繋げて設置します。左端だけレッドストーン信号が必要モードにして、オンオフ可能にしています。1,2,3,4それぞれのコマンドは以下の通りです:
「1」 | Repeat(リピート)Unconditional(無条件)Needs Redstone(レッドストーン信号が必要) |
---|---|
/scoreboard players add @a[score_offhandMagicDia=1] offhandMagicDia 1 {Inventory:[{Slot:-106b,id:”minecraft:diamond”,tag:{display:{Name:”魔法のダイヤモンド”,Lore:[“Fキーを押して使う”]}}}]} 「魔法のダイヤモンド」をオフハンドスロット(Slot:-106b)にセットすると、offhandMagicDiaのスコアが1づつ増えていき、2で止まります。(スコアが1以下なら増やすので) |
|
「2」 | Chain(チェーン)Unconditional(無条件)Always Active(常時実行) |
/scoreboard players set @a offhandMagicDia 0 {SelectedItem:{id:”minecraft:diamond”,tag:{display:{Name:”魔法のダイヤモンド”,Lore:[“Fキーを押して使う”]}}}} オフハンドに魔法のダイヤがある状態でもう一度Fキーを押すと、メインハンドにダイヤが戻ってきます。(メインハンドのアイテムはSelectedItemタグで判定できる) 戻ってきたらoffhandMagicDiaの値を0にセットします。 |
|
「3」 | Chain(チェーン)Unconditional(無条件)Always Active(常時実行) |
/execute @a[score_offhandMagicDia_min=1,score_offhandMagicDia=1] ~ ~ ~ summon Fireball ~ ~2 ~ {direction:[0.0,0.0,0.0],ExplosionPower:0} 「1」のコマンドによってoffhandMagicDiaの値が0→2に増やされる過程で、一瞬だけ値が「1」になります。そのタイミングでファイアボールを召喚します。 |
|
「4」 | Chain(チェーン)Unconditional(無条件)Always Active(常時実行) |
/playsound entity.zombie.infect player @a[score_offhandMagicDia_min=1,score_offhandMagicDia=1] ~ ~ ~ 5.0 ▲「player」はサウンドのカテゴリを示しています。(詳しくはこちらの解説へどうぞ) 代わりに「master」「music」「record」「weather」「block」「hostile」「neutral」「ambient」「voice」も使えます。それぞれサウンド設定の音のカテゴリと対応しています。 「3」と同様のタイミングで、playsoundコマンドで村人ゾンビが治療される時の効果音を音量5.0で鳴らします。 |
仕組みはこんな感じです。オフハンドスロットに該当するアイテムがあるとoffhandMagicDiaの値が増加しますが、2で止まるようにしています。その途中で一瞬だけ「1」になるので、「offhandMagicDiaが1以上1以下の人」をターゲットにexecuteコマンドでファイアボールを召喚させているんです。
Fキーを押すとパーティクルが出てダメージを与える仕組みとコマンドを解説
次は「斬撃のハサミ」を動作させるコマンドを入力していきましょう。先程と同様、左端だけレッドストーン信号が必要モードにしてオンオフ可能にしています。
「5」 | Repeat(リピート)Unconditional(無条件)Needs Redstone(レッドストーン信号が必要) |
---|---|
/scoreboard players add @a[score_offhandZangeki=1] offhandZangeki 1 {Inventory:[{Slot:-106b,id:”minecraft:shears”,tag:{display:{Name:”斬撃のハサミ”,Lore:[“Fキーを押して使う”]}}}]} 「斬撃のハサミ」をオフハンドスロット(Slot:-106b)にセットすると、offhandZangekiのスコアが1づつ増えていき、2で止まります。(スコアが1以下なら増やすので) |
|
「6」 | Chain(チェーン)Unconditional(無条件)Always Active(常時実行) |
/scoreboard players set @a offhandZangeki 0 {SelectedItem:{id:”minecraft:shears”,tag:{display:{Name:”斬撃のハサミ”,Lore:[“Fキーを押して使う”]}}}} メインハンドにハサミを戻したらoffhandZangekiの値を0にセットします。 |
|
「7」 | Chain(チェーン)Unconditional(無条件)Always Active(常時実行) |
/playsound entity.player.attack.sweep player @a[score_offhandZangeki_min=1,score_offhandZangeki=1] ~ ~ ~ 10.0 offhandZangekiの値が1になったプレイヤーに対してsweep攻撃のサウンドを音量10.0で再生します。 |
|
「8」 | Chain(チェーン)Unconditional(無条件)Always Active(常時実行) |
/execute @a[score_offhandZangeki_min=1,score_offhandZangeki=1] ~ ~ ~ particle sweepAttack ~ ~ ~ 3 3 3 0.1 300 force 「7」と同様のタイミングで、プレイヤーの周辺にsweep攻撃のパーティクルを表示させます。forceと書けばビデオ設定のパーティクルが「最小」でも表示されます。 |
|
「9」 | Chain(チェーン)Unconditional(無条件)Always Active(常時実行) |
/execute @a[score_offhandZangeki_min=1,score_offhandZangeki=1] ~ ~ ~ effect @e[type=!Player,r=3] minecraft:instant_damage 1 0 ▲offhandZangekiが1以上1以下の人に、半径3ブロック以内のプレイヤー以外のエンティティにダメージ効果を与えるeffectコマンドを実行させています。 |
Fキーを押すと無敵になって爆発が起こる仕組みとコマンドを解説
最後に「爆発のファイアチャージ」のコマンドを入力していきましょう。他2つと同様に左端だけレッドストーン信号が必要モードにしてオンオフ可能にしています。
「10」 | Repeat(リピート)Unconditional(無条件)Needs Redstone(レッドストーン信号が必要) |
---|---|
/scoreboard players add @a[score_offhandFC=1] offhandFC 1 {Inventory:[{Slot:-106b,id:”minecraft:fire_charge”,tag:{display:{Name:”爆発のファイアチャージ”,Lore:[“Fキーを押して使う”]}}}]} 「爆発のファイアチャージ」をオフハンドスロット(Slot:-106b)にセットすると、offhandFCのスコアが1づつ増えていき、2で止まります。(スコアが1以下なら増やすので) |
|
「11」 | Chain(チェーン)Unconditional(無条件)Always Active(常時実行) |
/scoreboard players set @a offhandFC 0 {SelectedItem:{id:”minecraft:fire_charge”,tag:{display:{Name:”爆発のファイアチャージ”,Lore:[“Fキーを押して使う”]}}}} 爆発のファイアチャージをメインハンドに戻したら、offhandFCの値を0にセットします。 |
|
「12」 | Chain(チェーン)Unconditional(無条件)Always Active(常時実行) |
/effect @a[score_offhandFC_min=1,score_offhandFC=1] minecraft:resistance 3 255 true offhandFCの値が1になったプレイヤーにレベル255の「耐性」効果を3秒間与えます。 |
|
「13」 | Chain(チェーン)Unconditional(無条件)Always Active(常時実行) |
/execute @a[score_offhandFC_min=1,score_offhandFC=1] ~ ~ ~ summon PrimedTnt ~ ~ ~ {Fuse:0} 「12」の直後に着火済みTNTを召喚します。(Fuse:0なので即爆発) |
新しい種類の「Fキーで何か起こるアイテム」を自分で作る際の手順
それでは最後に、オリジナルの「Fキーで何か起こるアイテム」を自作する際の手順を解説します。
- オリジナルのFキーで何か起こるアイテムの作り方
- 下準備:
- アイテムを動作させるためのスコアボードを作成する。
例: /scoreboard objectives add スコア名 dummy - 使うアイテムを作成する。
例: /give @p アイテムID 個数 データ値 {display:{Name:”アイテム名”,Lore:[“説明文”]}}
▲データ値は大抵は0。F3+Hで各アイテムに表示される。「#0035/2」ならデータ値は2
以下、常時実行するコマンドについて:
- オフハンドスロットに自作アイテムが入ったらスコアを増やすコマンドを常時実行する。
例: /scoreboard players add @a[score_スコア名=1] スコア名 1 {Inventory:[{Slot:-106b,id:”アイテムID”,Damage:データ値,tag:{display:{Name:”アイテムID”,Lore:[“説明文”]}}}]}
▲データ値は大抵は0。 - メインハンドに戻したらスコアを0にするコマンドを常時実行する。
例: /scoreboard players set @a スコア名 0 {SelectedItem:{id:”アイテムID”,Damage:データ値,tag:{display:{Name:”アイテム名”,Lore:[“説明文”]}}}} - スコアが1以上1以下のプレイヤーを対象にイベントを起こすコマンドを常時実行する。
例: /execute @a[score_スコア名_min=1,score_スコア名=1] ~ ~ ~ summon LightningBolt ~ ~ ~ なら雷を落とす。
※全てのコマンドでアイテムID/データ値/アイテム名/説明文が合致している必要がある。
- アイテムを動作させるためのスコアボードを作成する。
23件のコメント
-
あ2016年3月6日Spooky Adventure という配布ワールドでツールがブロックに刺さっているのを解説してほしいです。
-
黴と徹2016年3月6日透明な防具立てにもたせてるよんやで
-
すー@Manaita2016年3月21日一回使ったら少しの間使えなくしたいな
-
たこ2016年3月26日雪玉を投げて着地地点に爆発を起こすっていうのを改良してほしいです 自分が考えたのは投げた雪玉に透明なクリーパーをのせて、雪玉が壊れて透明なクリーパーが地面についたらinGroundとかで爆破させるというのを思いついたんですけど、雪玉にクリーパーを載せるやり方がわかりません。。。
-
えんすけ2016年3月29日染料など、デタータグだけ異なるアイテムを検出するには、どうすればいいですか?
-
匿名2016年3月29日例えば「offhandYellow」というスコアを作った場合(黄色い染料を検出する場合)、常時実行するコマンドを以下のようにします。 /scoreboard players add @a[score_offhandYellow=1] offhandYellow 1 {Inventory:[{Slot:-106b,id:"minecraft:dye",Damage:11,tag:{display:{Name:"アイテム名",Lore:[説明文]}}}]} ▲1つ目のコマンド。IDの後に「Damage:数字」でデータ値を条件に加えます。この例では黄色い染料なので「Damage:11」を追記しています。 /scoreboard players set @a offhandYellow 0 {SelectedItem:{id:"minecraft:dye",Damage:11,tag:{display:{Name:"アイテム名",Lore:[説明文]}}}} ▲2つ目のコマンド。同じようにデータ値をSelectedItemの条件に加えます。 後はスコアを条件に、お好きにコマンドを書いて下さい。
-
えんすけ2016年3月29日おお!ご丁寧にありがとうございました!解決することができました。これからも頑張ってください~
-
えんすけ2016年3月30日なんか度々すみません・・・ /testforblockや、executeのdetectについてなのですが、これらのコマンドは、 「特定のブロックがある場合に信号を送る」ではないですか、しかし 「特定のブロック以外がある場合に信号を送る」ことはできませんでしょうか? 今のところ僕の方では、コンパレータ―とトーチでNOT回路を作っているんですが、 反応が遅くて・・・何かいい案あったら教えてください。 長文失礼しました。
-
ゆー2016年4月17日スポーンエッグでやってみたのですが、染料はできたのになぜかできませんでした。 シルバーフィッシュを出す場合ダメージ値を60にしてみたのにできませんでした。スポーンエッグの場合どうすればいいのでしょうか?
-
ゆー2016年4月17日{Item:{id:spawn_egg,Damage:60,Count:1,tag:{display:{Name:"JetCore"},EntityTag:{id:"Silverfish"}}}} で解決しました。
-
匿名2016年4月29日防具立てにアイテムを持たせれば可能です。 http://exr-nap.sakura.ne.jp/www.mcthnk.com/armorstand-model-animation-generator/ こちらの記事で解説しているツールを使えば、自由な大きさ/向きでアイテムを設置するコマンドを生成してくれます。
-
らく2016年5月8日最後の説明の常時実行のコマンドですけど /scoreboard players add @a[score_スコア名=1] スコア名 1 {Inventory:[{Slot:-106b,id:"アイテムID",Damage:データ値,tag:{display:{Name:"アイテムID",Lore:[説明文]}}}]} Name:の後ってアイテム名じゃないのですか?
-
ゆっくりてぃあ2016年8月4日1.8.4のForgeってありますか?
-
うどん2016年10月10日ポーションの効果エフェクトを消す事は可能でしょうか?
-
パープルの実況チャンネル!2016年12月29日MPというスコアを、斬撃のハサミを1回使うと10へらすコマンド とかありませんか??
-
Carrot11012017年1月31日斬撃のハサミの部分のコマンドにコマンドブロック(以下CB)を一個を追加し、 /scoreboard players remove @a[score_スコア名_min=1,score_スコア名=1] MPのスコア 10 と打ち、CBの設定を「チェーン」「無条件」「常時実行」にすればできるはずです。 記事にも書かれていますが、CBの向きに注意してください。
-
パープル2017年3月4日回復する魔法を作ろうとして、 /execute @a[score_offhand_min=2,score_offhand=2] ~ ~ ~ effect @a[r=2] minecraft:instant_heart 1 1としても回復しません!!
-
kenchan042017年4月13日すいませんMP30減らすコマンドを書いたんですが MPの回復ができません教えてくれませんか
-
kenchan042017年4月13日すいません MPを100以内にする方法教えてください(具体的に/scoreboard players add プレイヤー名 オブジェクトの名前 数値 何ですがこれをすると 100こえてしまいます越えない方法を教えてください
-
E7kei_HAYABUSA2017年5月18日バージョンは何ですか? 1.9以上くらいなら effect @a[r=2] 6 1 1 でできるはず 最新バージョンでやってるんでよくわかりませんが
-
E7kei_HAYABUSA2017年5月18日effect @p clear または effect @p ポーションID 0 0 で消えるはず
-
発動しない2017年12月24日/give @p diamond 1 0 {display:{Name:"魔法のアイテム"}} /scoreboard objectives add offhand0 dummy /scoreboard players add @a[score_offhand0=1] offhand0 1 {Inventory:[{Slot:-106b,id:"minecraft:diamond",tag:{display:{Name:"魔法のアイテム"}}}]} /scoreboard players set @a offhand0 0 {SelectedItem:{id:"minecraft:diamond",tag:{display:{Name:"魔法のアイテム"}}}} /execute @a[score_offhand0_min=1,score_offhand0=1] ~ ~ ~ particle sweepAttack ~ ~ ~ 3 3 3 0.1 300 force /execute @a[score_offhand0_min=1,score_offhand0=1] ~ ~ ~ effect @e[type=!Player,r=3] minecraft:instant_damage 1 0
-
匿名2023年9月3日Javaで太刀筋が見える剣を作ってください。