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

インベントリのアイテムをクリックする仕掛けの作り方 - サーバーや配布ワールドに是非

クリックで○○するアイテムの作り方

インベントリ内に「必殺技発動」やら「ロビーに戻る」などのボタンを設置して、クリックすると何かが起こる、という仕掛けの作り方を解説します。RPG風の戦闘を作ったり、テレポートなどに使えそうな仕掛けです。レゴブロックリソースパックの作者であるSaziumR氏から頂いたコマンドを、私の手でなんとかマルチプレイ(バージョン1.8~)に対応させました。

[2016年2月1日追記] 死亡時にイベントが誤作動するとのご指摘を頂き、コマンドを修正しました。必要なスコアボードも増えていますので、申し訳ないのですが装置の作り直しをお願いします。

 

インベントリのアイテムをクリックする仕掛けとは

常時「クリックすると○○する」機能を提供するには

サーバー内のテレポートなど、「いつでも押したら○○する」機能を作りたい場合、あなたならどうしますか? tellrawコマンドで「クリックで○○する」などと放送してクリックさせたりもできますが、常時放送し続けるわけにはいきません。

RPG風ワールドの制作に使えそう

そこで、インベントリ内にアイテムを設置して、ボタンとしてクリックさせる仕掛けはいかがですか。このボタンアイテムは動かすことはできませんが、状況に応じて表示/非表示を切り替えることもできます。

The Heistの再スタート用アイテム

この仕掛けの例として、この前紹介した配布ワールド「The Heist」では、インベントリのトランシーバーをクリックするとそのフロアを再スタートできる仕掛けがありましたね。そんなの知らねえよ! って方はダウンロードして遊んでみてください。ハマりますよ。日本語化もされています。

日本語化もされているパズル系配布ワールド「The Heist」

//exr-nap.sakura.ne.jp/napoan.com/the-heist-supported-japanese/

 

SaziumR氏の装置

実は以前、レゴブロックリソースパックでおなじみのSaziumR氏が、この「インベントリのアイテムをクリックする」仕掛けを作って下さりました!(ワールドのダウンロードはこちら) 1.8/1.9両対応とのことで、非常にありがたかったのですが...

残念なことに、SaziumR氏の機構はマルチプレイでうまく動かなかったのです。そこで私が無理やりマルチプレイに対応させました。これで大きなサーバーでも「アイテムをクリックする」仕掛けが使えます!


次のページでは、回路とコマンドを解説します >>

クリックするとテレポートできるアイテムのコマンドの解説

クリックするとテレポートするアイテム

それでは、クリックするとテレポートできるアイテムの作り方を解説します。

 

下準備! アイテムを設置してスコアボードを作成

まずはインベントリの真ん中に、クリックするとテレポートするアイテムを設置します。

プレイヤーのインベントリの真ん中にテレポートアイテムを設置するコマンド
/replaceitem entity @a slot.inventory.13 minecraft:diamond 1 0 {display:{Name:"ロビーに戻る",Lore:["クリックでロビーに戻ります"]}}
▲この仕掛けを動かす前に、必ずこのコマンドを実行してアイテムを設置して下さい。
アイテムは設置できましたか

 

次に、以下のscoreboardコマンドでオブジェクトを作成しておきます。

クリックするとテレポートするアイテムの動作に必要なスコアボードを作成
/scoreboard objectives add clickLobbyItem dummy
/scoreboard objectives add spawnTime stat.timeSinceDeath
▲「stat.timeSinceDeath」のスコアは、死ぬと0になりリスポーンすると増え続けます。死んだ時にイベントを一時無効化するためのスコアなんです。

 

いつものfillクロックの設置

fillクロック

いつものfillクロックを設置します。

Aのコマンドブロック/fill ~ ~-1 ~ ~3 ~-1 ~ redstone_block
Bのコマンドブロック/fill ~ ~1 ~ ~3 ~1 ~ stone

 

常時実行する6つのコマンドを解説

インベントリアイテムのクリックのコマンド

fillクロックの上に「1」~「6」までのコマンドブロックを設置して、内容を入力します。

「1」のコマンド
/scoreboard players remove @a clickLobbyItem 1
後で作成する「clickLobbyItem」のスコアは、常に1づつ減らされていきます。
「2」のコマンド
/scoreboard players set @a clickLobbyItem 1 {Inventory:[{Slot:22b,id:"minecraft:diamond",Count:1b,tag:{display:{Name:"ロビーに戻る",Lore:["クリックでロビーに戻ります"]}}}]}
インベントリに「ロビーに戻る」アイテムがあるプレイヤーは、「clickLobbyItem」の値が1になります。この際、「Slot:22b」というのはインベントリの真ん中を意味していますのでそれ以外の場所に置いても「ない」と判断されます。

公式Wikiより転載
▲公式Wikiのこちらのページの画像です。この画像を参考に、「Slot:○○b」の数字を適宜変更して下さい。
「3」のコマンド
/tp @a[score_clickLobbyItem=-1,score_spawnTime_min=4] テレポート先のx y z
もしプレイヤーがアイテムをクリックしたら、インベントリからアイテムが一時的になくなるので「clickLobbyItem」スコアは減らされてしまいます。「-1」まで減らされたら(つまりアイテムをクリックして浮かせたら)テレポートを実行します。
[2016年2月1日修正]「spawnTime」スコアはリスポーン時に0から増え続けるので、ここで「spawnTimeが4以上」と書くことでリスポーン直後はイベントを無効化しています。
「4」のコマンド
/clear @a[score_clickLobbyItem=-1,score_clickLobbyItem_min=-1] minecraft:diamond 0 1 {display:{Name:"ロビーに戻る",Lore:["クリックでロビーに戻ります"]}}
「3」と同時に実行されます。インベントリ上のテレポートアイテムを消します。
「5」のコマンド
/replaceitem entity @a[score_clickLobbyItem=-1] slot.inventory.13 minecraft:diamond 1 0 {display:{Name:"ロビーに戻る",Lore:["クリックでロビーに戻ります"]}}
「3」と同時に実行されます。アイテムが無くなった場所に即座にテレポートアイテムを再設置します。「slot.inventory.13」の数字は、「2」のコマンドブロックの「Slot:○○b」の数字とは違いますのでご注意下さい。例えば装備なら「slot.armor.head」などで、手持ちバーなら「slot.hotbar.○○」です。
「6」のコマンド
/execute @a[score_spawnTime=0] ~ ~ ~ kill @e[type=Item,c=1] {Item:{id:"minecraft:diamond",Name:"ロビーに戻る",Lore:["クリックでロビーに戻ります"]}}
「spawnTime」スコアは死亡時に0になるので、死んだ時に実行されます。死亡時に落としたアイテムを後で回収した時に、イベントが誤発動するのを防止するために、死亡時にアイテムを消します。

 

クリックするアイテムの位置を変えるには

アイテムの位置を変更するには

クリックするためのアイテムの位置を変更するには、「2」と「5」のコマンドブロックのこれらの数字をずらします。同じスロットを指定したい場合でも、「Slot:○○b」「inventory.○○」それぞれで指定する数字が違いますのでご注意下さい。

また、アイテムの位置を変更する前にかならずその位置に該当するアイテムを設置して下さい! でないとテレポートなどが発動してしまいます。

 


 

いかがでしたか。この仕掛けを使った楽しい配布ワールドが沢山作られるのを楽しみにしています。この仕掛けを応用して素晴らしい仕掛けを作ってみてください。また、皆さんがコマンドや回路で気になることなどコメント下さい。

Tweet

コメント

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

“インベントリのアイテムをクリックする仕掛けの作り方 - サーバーや配布ワールドに是非” への44件のフィードバック

  1. Aodaruma より:

    これBukkitのChestCommandsGUIに似てるような希ガス

  2. たいやき より:

    すげーーー

  3. 初見 より:

    アイテムが無くなったという検知を遅延無しでやりたかったのでこの記事は本当に参考になりました。
    ありがとうございます。

  4. blue_sea より:

    あの~、これを頭装備にして作動させるにはどう書き換えればいいのでしょうか ?

  5. riku6460 より:

    (マルチならプラグインサーバーでできる…)

  6. たいやき より:

    がすとぉ

  7. 匿名 より:

    返信遅れて申し訳ありません。
    「2」のコマンドは
    /scoreboard players set @a clickLobbyItem 1 {Inventory:[{Slot:103b,id:”装備品のID”,Count:1b,tag:{display:{Name:”アイテム名”,Lore:[説明文]}}}]}
    「5」のコマンドは
    /replaceitem entity @a slot.armor.head 装備品のアイテムID 1 0 {display:{Name:”アイテム名”,Lore:[説明文]}}
    になります。「Inventory」内では「Slot:”103b”」、replaceitemコマンドでは「slot.armor.head」が頭装備です。

  8. しおん より:

    「2」のslotのところはどこがこの数字みたいなわかる方法はありますか?

  9. 匿名 より:

    こちらの公式Wikiのページに、数字の一覧があります。
    http://minecraft.gamepedia.com/Player.dat_format#Inventory_slot_numbers

  10. しおん より:

    ありがとうございます!

  11. NIKOWARA より:

    どんどんコマンドの可能性が広がっていく…

  12. より:

    [5]のコマンドのslot.inventory.13の13とはどういう意味ですか?

  13. より:

    ホットバーに、例えば花があるとして、それを釣竿使うみたいに右クリックすると、スコア追加して、スキルが使えるみたいなコマンドわかりませんか?

  14. 質問 より:

    質問です!クリックで取ったダイヤモンドはゲットできてしまうんですか?

  15. 匿名 より:

    サバイバルモードかアドベンチャーモードで試してみてください。それらのモードではアイテムは増えないはずです。すぐに戻されます。

  16. 匿名 より:

    インベントリ(手持ちバーは含まない)の左上を0とした時、そこから右へ数えて13番目という意味です。scoreboardコマンドやtestforコマンドで使う「{Inventory:[{Slot:”22b”,id:”…”}]}」ではプレイヤーのアイテムがセットできる場所全てを通算して数えているので、同じ場所でも「Slot:”22b”」となりますが、replaceitemコマンドではバラバラで数えるので3×9のインベントリの中で0+13番目、ということで「slot.inventory.13」となります。
    例えば手持ちバーの真ん中を指定する時は、データタグだと{Inventory:[{Slot:”4b”,id:”…”}]}、replaceitemコマンドだと「slot.hotbar.4」と書きます。手持ちバーはreplaceitemコマンドだと「hotbar」として別扱いなんです。

  17. インベントリの番号が数えるの面倒だったがこんな感じのイラスト作っとけばよかったのか。なるほど。
    って、ページ要素追加されとる!

  18. blue_sea より:

    あ、「5」のコマンドに@a[score_clickLobbyItem=-1] がないのですが、
    いらないのでしょうか?

  19. 匿名 より:

    おっと忘れていました! ご指摘ありがとうございます。正しくは
    /replaceitem entity @a[score_clickLobbyItem=-1] slot.armor.head 装備品のアイテムID 1 0 {display:{Name:”アイテム名”,Lore:[説明文]}}
    です。

  20. blue_sea より:

    あと、なぜかクリックしてとったアイテムがとれてしますのでなぜでしょうか?

  21. 匿名 より:

    クリエイティブモードでは残念ながら増殖できてしまいます。サバイバルやアドベンチャーなら増えないと思いますので再度お確かめ下さい。

  22. blue_sea より:

    一回アドベンチャーモードでやってもなぜか増えてしますのです・・・

  23. 匿名 より:

    再度確認してみましたが、私の環境では増えませんでした。
    クリックするアイテムのIDや名前、説明文と、各コマンドの内容が一致しているかもう一度ご確認下さい。

  24. ヌベスコ より:

    死んでしまってリスポーンした時に、コマンドで設定したTPの座標にテレポートしてしまうのですが、なぜでしょうか?私の環境でだけ起こることなのでしょうか?

  25. 匿名 より:

    申し訳ないです、死ぬとアイテムが無くなってクリックしたことになってしまうことを全然考えてませんでした… 現在対処法を試行錯誤中ですので、応急処置として「/gamerule keepInventory true」で死亡時のアイテムドロップを無効化してお使いください

  26. 匿名 より:

    只今記事を修正し、死亡時にイベントが誤作動しないようにしました。
    コマンドが6つに増えていて、既存のコマンドにも少し変更があります。お手数おかけしますがコマンドの書き換えをお願いします。それと必要なスコアボードも増えましたので、記事を参考に作成をお願いします。

  27. ヌベスコ より:

    ③のコマンド「/tp @a[score_clickLobbyItem=-1,score_spawnTime_min=2] テレポート先のx y z」の「score_spawnTime_min=2」を「score_spawnTime_min=3」にしないと正常に動きませんでした(´;ω;`)

  28. ヌベスコ より:

    訂正: 3 にしても正常に動かないことがあったため 4 にしてみたら安定しました。

  29. 匿名 より:

    ご指摘ありがとうございます。修正しました。

  30. のーなめ より:

    クリックではなく右クリックもしくは左クリックにできないでしょうか?

  31. 匿名 より:

    右クリックと左クリックの区別ですが、アイテムが無くなったタイミングを検知しているので区別は無理です…
    それと私Hypixel遊んだこと無いのでコンパスをクリックすると何が起こるのか教えて頂ければアドバイスできるかもしれません。

  32. のーなめ より:

    右クリックでした。
    右クリックするとラージチェストみたいなのが出てきます

  33. 匿名 より:

    コマンドでは”右クリックだけ”は無理ですが、左クリックでも構わないならば、「3」のコマンドを
    /execute @a[score_clickLobbyItem=-1,score_spawnTime_min=4] ~ ~ ~ setblock ~ ~ ~ minecraft:chest 0 replace
    とすれば擬似的にそういう機能が作れますが… ただ単にチェストが設置されるだけです。自動で画面を開く、という機能はコマンドでは無理なので残念ながらMODやサーバーのプラグインに頼るしかありません…

  34. きりん より:

    TPした状態で永遠にTPされうごけなくなりワールドがパーになってしまったんですけどなにが悪いのでしょうか

  35. 匿名 より:

    MCEditで3のコマンドブロックを消去すれば直ります。MCEditでAltキーを押せばブロックの中身を確認できるので、3のtpコマンドを探してブロックを削除してください。
    次に、spawnTimeスコアを作成できているか、それと装置をONにする時に、
    (1.9以上なら先頭のリピートコマブロを「レッドストーン信号が必要」にすればレバーでオンオフ可能になります)
    インベントリの真ん中に該当するアイテムを置いてから装置を動かしてください。

  36. かずまっちz@配布ワールド進歩1% より:

    6のコマンドの説明の最後に/td>がついてますよ

  37. 匿名 より:

    ご指摘ありがとうございます。修正しました。

  38. soramame より:

    質問なんですが、ミニゲームをする際にワープするものを削除or無効化したいんです。
    でもclear @p をするとコマンドの関係でロビーに戻されます。
    ミニゲームの時だけ無効化や削除することってできますか?

  39. Carrot1101 より:

    ミニゲーム中のプレイヤーにだけタグ(ここではnowGameというタグとする)をつけ、
    TPコマンドの部分のセレクターでtag=!nowGameを指定すればできるかと思います。
    さん本人ではございませんので保証できませんが。。。

  40. Carrot1101 より:

    失礼しました。この記事では1.8での解説ですので、1.8でしたらタグ機能使えませんよね。。。
    僕自身1.8でのコマンドに詳しくありませんので保証しかねますが、スコアボードでゴリ押しすればなんとかなる。。。と思います。

  41. カレー粉 より:

    これを、1つのアイテムにまとめて、そのアイテムを右クリックしたら、このページで解説されているアイテムが出てくるみたいなのはできないのでしょうが?

  42. カレー粉 より:

    まぁ、海外鯖によくあるサーバーメニューみたいなやつです!

  43. SIRO SIRO より:

    なんか、ロビーから動けなくなりました。
    どうしたらいいですか??

コメントを残す

メールアドレスが公開されることはありません。