内容をスキップ

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

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.○○」それぞれで指定する数字が違いますのでご注意下さい。

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

 


 

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

ポスト
マイクラ思考編集部
YouTubeでマインクラフトの役立つ動画を投稿しています。クロスマルチプレイ対応のマイクラサーバー「くろまる」も運営中!

44件のコメント

  1. Aodaruma
    2016年1月8日
    これBukkitのChestCommandsGUIに似てるような希ガス
  2. たいやき
    2016年1月8日
    すげーーー
  3. 初見
    2016年1月9日
    アイテムが無くなったという検知を遅延無しでやりたかったのでこの記事は本当に参考になりました。 ありがとうございます。
  4. blue_sea
    2016年1月10日
    あの~、これを頭装備にして作動させるにはどう書き換えればいいのでしょうか ?
  5. riku6460
    2016年1月11日
    (マルチならプラグインサーバーでできる...)
  6. たいやき
    2016年1月11日
    がすとぉ
  7. 2016年1月11日
    返信遅れて申し訳ありません。 「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. しおん
    2016年1月11日
    「2」のslotのところはどこがこの数字みたいなわかる方法はありますか?
  9. 2016年1月11日
    こちらの公式Wikiのページに、数字の一覧があります。 http://minecraft.gamepedia.com/Player.dat_format#Inventory_slot_numbers
  10. しおん
    2016年1月11日
    ありがとうございます!
  11. NIKOWARA
    2016年1月11日
    どんどんコマンドの可能性が広がっていく…
  12. 2016年1月11日
    [5]のコマンドのslot.inventory.13の13とはどういう意味ですか?
  13. 2016年1月12日
    ホットバーに、例えば花があるとして、それを釣竿使うみたいに右クリックすると、スコア追加して、スキルが使えるみたいなコマンドわかりませんか?
  14. 質問
    2016年1月12日
    質問です!クリックで取ったダイヤモンドはゲットできてしまうんですか?
  15. 2016年1月12日
    サバイバルモードかアドベンチャーモードで試してみてください。それらのモードではアイテムは増えないはずです。すぐに戻されます。
  16. 2016年1月12日
    インベントリ(手持ちバーは含まない)の左上を0とした時、そこから右へ数えて13番目という意味です。scoreboardコマンドやtestforコマンドで使う「{Inventory:[{Slot:"22b",id:"..."}]}」ではプレイヤーのアイテムがセットできる場所全てを通算して数えているので、同じ場所でも「Slot:"22b"」となりますが、replaceitemコマンドではバラバラで数えるので3x9のインベントリの中で0+13番目、ということで「slot.inventory.13」となります。 例えば手持ちバーの真ん中を指定する時は、データタグだと{Inventory:[{Slot:"4b",id:"..."}]}、replaceitemコマンドだと「slot.hotbar.4」と書きます。手持ちバーはreplaceitemコマンドだと「hotbar」として別扱いなんです。
  17. インベントリの番号が数えるの面倒だったがこんな感じのイラスト作っとけばよかったのか。なるほど。 って、ページ要素追加されとる!
  18. こちらを どうぞ。 http://exr-nap.sakura.ne.jp/www.napoan.com/43174379/
  19. blue_sea
    2016年1月23日
    あ、「5」のコマンドに@a[score_clickLobbyItem=-1] がないのですが、 いらないのでしょうか?
  20. 2016年1月23日
    おっと忘れていました! ご指摘ありがとうございます。正しくは /replaceitem entity @a[score_clickLobbyItem=-1] slot.armor.head 装備品のアイテムID 1 0 {display:{Name:"アイテム名",Lore:[説明文]}} です。
  21. blue_sea
    2016年1月23日
    あと、なぜかクリックしてとったアイテムがとれてしますのでなぜでしょうか?
  22. 2016年1月23日
    クリエイティブモードでは残念ながら増殖できてしまいます。サバイバルやアドベンチャーなら増えないと思いますので再度お確かめ下さい。
  23. blue_sea
    2016年1月25日
    一回アドベンチャーモードでやってもなぜか増えてしますのです・・・
  24. 2016年1月25日
    再度確認してみましたが、私の環境では増えませんでした。 クリックするアイテムのIDや名前、説明文と、各コマンドの内容が一致しているかもう一度ご確認下さい。
  25. ヌベスコ
    2016年1月31日
    死んでしまってリスポーンした時に、コマンドで設定したTPの座標にテレポートしてしまうのですが、なぜでしょうか?私の環境でだけ起こることなのでしょうか?
  26. 2016年1月31日
    申し訳ないです、死ぬとアイテムが無くなってクリックしたことになってしまうことを全然考えてませんでした... 現在対処法を試行錯誤中ですので、応急処置として「/gamerule keepInventory true」で死亡時のアイテムドロップを無効化してお使いください
  27. 2016年2月1日
    只今記事を修正し、死亡時にイベントが誤作動しないようにしました。 コマンドが6つに増えていて、既存のコマンドにも少し変更があります。お手数おかけしますがコマンドの書き換えをお願いします。それと必要なスコアボードも増えましたので、記事を参考に作成をお願いします。
  28. ヌベスコ
    2016年2月1日
    ③のコマンド「/tp @a[score_clickLobbyItem=-1,score_spawnTime_min=2] テレポート先のx y z」の「score_spawnTime_min=2」を「score_spawnTime_min=3」にしないと正常に動きませんでした(´;ω;`)
  29. ヌベスコ
    2016年2月1日
    訂正: 3 にしても正常に動かないことがあったため 4 にしてみたら安定しました。
  30. 2016年2月1日
    ご指摘ありがとうございます。修正しました。
  31. のーなめ
    2016年3月20日
    クリックではなく右クリックもしくは左クリックにできないでしょうか?
  32. 2016年3月20日
    右クリックと左クリックの区別ですが、アイテムが無くなったタイミングを検知しているので区別は無理です... それと私Hypixel遊んだこと無いのでコンパスをクリックすると何が起こるのか教えて頂ければアドバイスできるかもしれません。
  33. のーなめ
    2016年3月20日
    右クリックでした。 右クリックするとラージチェストみたいなのが出てきます
  34. 2016年3月21日
    コマンドでは"右クリックだけ"は無理ですが、左クリックでも構わないならば、「3」のコマンドを /execute @a[score_clickLobbyItem=-1,score_spawnTime_min=4] ~ ~ ~ setblock ~ ~ ~ minecraft:chest 0 replace とすれば擬似的にそういう機能が作れますが... ただ単にチェストが設置されるだけです。自動で画面を開く、という機能はコマンドでは無理なので残念ながらMODやサーバーのプラグインに頼るしかありません...
  35. きりん
    2016年7月17日
    TPした状態で永遠にTPされうごけなくなりワールドがパーになってしまったんですけどなにが悪いのでしょうか
  36. 2016年7月17日
    MCEditで3のコマンドブロックを消去すれば直ります。MCEditでAltキーを押せばブロックの中身を確認できるので、3のtpコマンドを探してブロックを削除してください。 次に、spawnTimeスコアを作成できているか、それと装置をONにする時に、 (1.9以上なら先頭のリピートコマブロを「レッドストーン信号が必要」にすればレバーでオンオフ可能になります) インベントリの真ん中に該当するアイテムを置いてから装置を動かしてください。
  37. かずまっちz@配布ワールド進歩1%
    2016年12月27日
    6のコマンドの説明の最後に/td>がついてますよ
  38. 2016年12月27日
    ご指摘ありがとうございます。修正しました。
  39. soramame
    2017年1月24日
    質問なんですが、ミニゲームをする際にワープするものを削除or無効化したいんです。 でもclear @p をするとコマンドの関係でロビーに戻されます。 ミニゲームの時だけ無効化や削除することってできますか?
  40. Carrot1101
    2017年3月10日
    ミニゲーム中のプレイヤーにだけタグ(ここではnowGameというタグとする)をつけ、 TPコマンドの部分のセレクターでtag=!nowGameを指定すればできるかと思います。 さん本人ではございませんので保証できませんが。。。
  41. Carrot1101
    2017年3月10日
    失礼しました。この記事では1.8での解説ですので、1.8でしたらタグ機能使えませんよね。。。 僕自身1.8でのコマンドに詳しくありませんので保証しかねますが、スコアボードでゴリ押しすればなんとかなる。。。と思います。
  42. カレー粉
    2017年4月9日
    これを、1つのアイテムにまとめて、そのアイテムを右クリックしたら、このページで解説されているアイテムが出てくるみたいなのはできないのでしょうが?
  43. カレー粉
    2017年4月9日
    まぁ、海外鯖によくあるサーバーメニューみたいなやつです!
  44. SIRO SIRO
    2017年4月30日
    なんか、ロビーから動けなくなりました。 どうしたらいいですか??

コメントを残す

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