NAPOAN.COM by マイクラ思考 
/ UPDATE :
POSTED BY :
sasigume

Fキーを押すと何か起こるアイテムの作り方 - オフハンドスロットにアイテムが入った瞬間を検知するには

Fキーを押すと何か起こるアイテムの作り方

バージョン1.9で追加された「オフハンドスロット」。Fキーで手持ちアイテムをオフハンドスロットと入れ替えられることは皆さんご存知ですよね。今回はあの持ち替えを利用した、Fキーを押すと何か起こるアイテム」の作り方を解説します。例えば「Fキーでファイアボールを召喚」「Fキーで周囲に爆発を起こす」など配布ワールドの作成にピッタリな仕掛けが作れます。マルチプレイにももちろん対応。新しいタイプの機能付きアイテムを今度こそ作ってみませんか。

Fキーで何か起こるアイテムとは? 作成例を紹介

ファイアボールを召喚する魔法のダイヤモンド

こちらの「魔法のダイヤモンド」というアイテムは、Fキーを押すと魔法が発動したっぽい音が鳴り、頭上にファイアボールが召喚されます。

周囲のMobにダメージを与える「斬撃のハサミ」

この「斬撃のハサミ」を持って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で鳴らします。
Fキーを押すと何か起こるアイテムの仕組み1

仕組みはこんな感じです。オフハンドスロットに該当するアイテムがあると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/データ値/アイテム名/説明文が合致している必要がある。

 


「○○についてまとめてほしい/解説してほしい」などのご意見ご感想、コメント欄やTwitterでお待ちしています。
Tweet

コメント

記事の内容が最新のものと異なる場合があります。ご了承ください。

“Fキーを押すと何か起こるアイテムの作り方 - オフハンドスロットにアイテムが入った瞬間を検知するには” への22件のフィードバック

  1. より:

    Spooky Adventure という配布ワールドでツールがブロックに刺さっているのを解説してほしいです。

  2. 黴と徹 より:

    透明な防具立てにもたせてるよんやで

  3. すー@Manaita より:

    一回使ったら少しの間使えなくしたいな

  4. たこ より:

    雪玉を投げて着地地点に爆発を起こすっていうのを改良してほしいです
    自分が考えたのは投げた雪玉に透明なクリーパーをのせて、雪玉が壊れて透明なクリーパーが地面についたらinGroundとかで爆破させるというのを思いついたんですけど、雪玉にクリーパーを載せるやり方がわかりません。。。

  5. えんすけ より:

    染料など、デタータグだけ異なるアイテムを検出するには、どうすればいいですか?

  6. 匿名 より:

    例えば「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の条件に加えます。
    後はスコアを条件に、お好きにコマンドを書いて下さい。

  7. えんすけ より:

    おお!ご丁寧にありがとうございました!解決することができました。これからも頑張ってください~

  8. えんすけ より:

    なんか度々すみません・・・
    /testforblockや、executeのdetectについてなのですが、これらのコマンドは、
    「特定のブロックがある場合に信号を送る」ではないですか、しかし
    「特定のブロック以外がある場合に信号を送る」ことはできませんでしょうか?
    今のところ僕の方では、コンパレータ―とトーチでNOT回路を作っているんですが、
    反応が遅くて・・・何かいい案あったら教えてください。
    長文失礼しました。

  9. ゆー より:

    スポーンエッグでやってみたのですが、染料はできたのになぜかできませんでした。
    シルバーフィッシュを出す場合ダメージ値を60にしてみたのにできませんでした。スポーンエッグの場合どうすればいいのでしょうか?

  10. ゆー より:

    {Item:{id:spawn_egg,Damage:60,Count:1,tag:{display:{Name:”JetCore”},EntityTag:{id:”Silverfish”}}}}
    で解決しました。

  11. 匿名 より:

    防具立てにアイテムを持たせれば可能です。
    http://exr-nap.sakura.ne.jp/www.napoan.com/armorstand-model-animation-generator/
    こちらの記事で解説しているツールを使えば、自由な大きさ/向きでアイテムを設置するコマンドを生成してくれます。

  12. らく より:

    最後の説明の常時実行のコマンドですけど
    /scoreboard players add @a[score_スコア名=1] スコア名 1 {Inventory:[{Slot:-106b,id:”アイテムID”,Damage:データ値,tag:{display:{Name:”アイテムID”,Lore:[説明文]}}}]}
    Name:の後ってアイテム名じゃないのですか?

  13. ゆっくりてぃあ より:

    1.8.4のForgeってありますか?

  14. うどん より:

    ポーションの効果エフェクトを消す事は可能でしょうか?

  15. パープルの実況チャンネル! より:

    MPというスコアを、斬撃のハサミを1回使うと10へらすコマンド
    とかありませんか??

  16. Carrot1101 より:

    斬撃のハサミの部分のコマンドにコマンドブロック(以下CB)を一個を追加し、
    /scoreboard players remove @a[score_スコア名_min=1,score_スコア名=1] MPのスコア 10
    と打ち、CBの設定を「チェーン」「無条件」「常時実行」にすればできるはずです。
    記事にも書かれていますが、CBの向きに注意してください。

  17. パープル より:

    回復する魔法を作ろうとして、
    /execute @a[score_offhand_min=2,score_offhand=2] ~ ~ ~ effect @a[r=2] minecraft:instant_heart 1 1としても回復しません!!

  18. kenchan04 より:

    すいませんMP30減らすコマンドを書いたんですが MPの回復ができません教えてくれませんか

  19. kenchan04 より:

    すいません MPを100以内にする方法教えてください(具体的に/scoreboard players add プレイヤー名 オブジェクトの名前 数値 何ですがこれをすると 100こえてしまいます越えない方法を教えてください

  20. E7kei_HAYABUSA より:

    バージョンは何ですか?
    1.9以上くらいなら effect @a[r=2] 6 1 1 でできるはず
    最新バージョンでやってるんでよくわかりませんが

  21. E7kei_HAYABUSA より:

    effect @p clear または effect @p ポーションID 0 0 で消えるはず

  22. 発動しない より:

    /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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です