マイクラの中でアイテムと通貨を交換することが出来るショップがあったらいいなと思ったことはありませんか?
それを実現するのが今回解説するNPCです!これを使うと今までディスペンサーなどを使っていたのが一気に見た目もよくなり機能性も上がります!それでは解説していきます。
NPCの使い方
まずNPCを召喚してみましょう。
コマンドは
/summon npc <NPCの名前>
です。/summon npcだけでも召喚できますが、コマンドで識別するために名前は絶対につけた方が良いです。
今回は分かりやすいようにaとbという名前のNPCを召喚しました。bの方は見えないところに置くべきです。召喚したときの名前はこの後も使うので絶対に覚えておいてください。
aはボタンを押す用、bはセリフを言わせる用です。
まずaの方を開いてみましょう。ブロックを置くボタンで開けます。
このような画面が出てきました。見た目は好きな見た目に変えることができます。
名前も好きな名前に変えられます。
今回は武器商人という名前にしてみましょう。それではセリフを入れていきます。
ダイアログの編集を押してください。
このような画面がでてきます。好きなセリフを入れてください。今回は「いらっしゃいませ!」と入れておきます。
NPCにコマンド入力
次に「詳細設定」を押してください。
このような画面が出てきます。
コマンドを追加を押してください。
大きなプラスのボタンを押してください。
そして下のコマンドを入力してください。
コピペ用
give @initiator[scores={money=30..}] diamond_sword
playsound note.chime @initiator[scores={money=30..}]
scoreboard players add @initiator[scores={money=30..}] money -30
execute as @initiator[tag=dialess] run dialogue open @e[name=b] @s
execute as @initiator[tag=dialess] run playsound random.anvil_land @s
※initiatorとはNPCのダイアログを開いている人のことです。
name=の後のbの部分の名前はもう片方の召喚時の名前を入れてください。
30の部分(-がついているところを含む)は自分の好きな値段を入れてください。
また、今回はダイアモンドの剣ですがdiamond_swordの部分を好きなアイテムのIDに変えれば違うアイテムを交換できます。tagも自分が分かりやすい名前にしてください。
そして右上の-を押し下のボタンのモードをオンにしてください。そして好きな文を入れます。今回は「ダイヤの剣 30money」と入れました。
別のアイテムを追加したい場合はコマンドを追加で上のコマンドをタグを変え、好きなアイテムの名前と値段を入力してください。
そしてもう片方(今回はb)を開きダイアログの編集を押し、好きなメッセージを入れます。
今回は「お金が足りません!」にしました。
その他のコマンド
次に必要なのが、スコアボードです。
スコアボードに関して詳しく知りたい方は以下の記事をご覧ください。
スコアボードの名前は何でもいいです。今回はmoneyと言う名前にしましょう。(moneyの部分は自分の好きな名前にして大丈夫です、必ず先ほどのscores=の{}の中と名前を揃えてください。)
/scoreboard objectives add money dummy
コマンドを打ったら分かりやすいように表示してみましょう。
今回はmoneyというスコアボードを降順、つまり大きい順に表示します。(小さい順に表示したい場合はdescendingの部分をascendingに変えてください。)
/scoreboard objectives setdisplay sidebar money descending
これで横に表示されます。
次にコマンドブロックを出してください。
コマンドは
/give @s command_block
です。貰ったコマンドブロックを設置し、以下のコマンドを入力してください。
{}の中の値段とaddの後のタグは必ず先ほどのNPCのコマンドのそれと揃えてください。
そしてリピート、無条件、常時実行でティックの遅延を5にしてください。
そしてもう一つコマンドブロックを置き、
もちろん、{}の中の値段とaddの後のタグは必ず先ほどのNPCのコマンドのそれと揃えてください。
リピート、無条件、常時実行で遅延はなしにします。
売るアイテムを追加した場合、その際追加した分新しいコマンドブロックにタグと値段を打つ必要があります。
実際に動かしてみる
まずサバイバルモードにします。
そして試しにmoneyを50にしてみます。
/scoreboard players add @s money 50
そしてaの方を右クリックしてみましょう。
そしてダイヤ剣を押します。すると
はい、ダイヤモンドの剣も貰えmoneyも値段分の30が減っていますね。
今は20しかmoneyが無いのでもう一度ボタンを押すと
はい、きちんとお金が足りないと出ました。
これでショップの完成です。
終わりに
これでRPGなどでショップが作れますね!食べ物や防具などを売ってみてもいいでしょう。
支払いと受け取りが同時に出来るのでかなり便利です!