今回はマイクラのガチャPVPで最も重要なガチャシステムの作り方をご紹介します!
マイクラのガチャPVPでは、ガチャガチャで運良く手に入れた武器や防具、アイテムが勝敗を決めると言っても過言ではありません!
公平を保つためにもコマンドブロックを駆使してしっかり作って行きましょう!
待機場所の作り方
画像を見ての通り、特定のアイテムを持った状態でボタンを押すと、看板に関係するアイテムを入手できるといった、マイクラではお馴染みの仕組みになっています。
特に待機場所の作り方に正解があるわけではありませんが、注意点として、ガチャガチャを隣同士に並べると、アイテムをドロップした際に、近くにいる他のプレイヤーに奪われる場合がありますので、少し離して設置しましょう。
ガチャシステムの作り方
マイクラで単純にランダムでアイテムを与えるだけのガチャシステムなら、ドロッパーを使えば誰でも簡単に実現できると思いますが、無制限に回せてしまったり、減ったアイテムを補充しなければなりませんので、コマンドブロックを利用して解決していきます!
公平かつ便利なガチャシステムに必要な条件は以下の3点です。
ガチャガチャを回すためにアイテムを消費すること
武器や防具などのアイテムはランダムで入手すること
アイテムは自動で補充し、常に同じ確率であること
必要なブロックを準備する
それでは、ガチャシステムの裏側に回ってみましょう。
マイクラのガチャシステムで上記の条件を実現するには、以下の3種類のブロックを使用します。
- ドロッパー × 2
- コマンドブロック(衝撃タイプ) × 1
- コマンドブロック(チェーンタイプ) × 3
コマンドブロックの衝撃とチェーンタイプの説明については、前回の記事をご覧ください!
ドロッパーにアイテムを詰める
マイクラのドロッパーは基本的にランダムでドロップしますので、アタリを少なめ、ハズレを多めに入れておきましょう。
武器や防具はできませんが、1スタックに複数入るアイテムならもっと差別化できます。
上記でドロッパーを2つ準備するように記述しましたが、それぞれガチャガチャを回してプレイヤーにアイテムを渡すドロッパーと、アイテム補充用のドロッパーになります。
どちらのドロッパーも同じアイテム、同じ数を入れ、同じ向きで少し離して設置しておきましょう。
どのように補充するかはこの後説明します。
コマンドブロックの設定
画像を見ての通り、下から上にコマンドブロックを繋げています。(ブロック繋げる方向はどちらでも構いません)
では、1番下の衝撃タイプのコマンドブロックから設定していきます。
アイテムを使用する
前回の記事でも紹介しましたが、マイクラでガチャガチャを回すには待機場所に移動する際に与えられたゲーム内通貨を使用します。
ここでは、ゲーム内通貨をエメラルドとして説明します。
プレイヤーのインベントリから特定のアイテムを削除するには、clear
コマンドを使用します。
1 |
clear [player: target] [itemName: Item] [data: int] [maxCount: int] |
第1引数はプレイヤー(@p)、第2引数はアイテム(emerald)を指定します。
第3引数を「0」にすると、プレイヤーが指定したアイテムを所持しているか確認できます。
そして、最後の第4引数を「1」とすると、指定したアイテムを1つ減らすことができます。
完成形がこちら!
1 |
clear @p emerald 0 1 |
これで、プレイヤーが所持しているエメラルドが1つ減らないと、次のコマンドブロックが実行されないので、結果的にエメラルドを所持してないとガチャガチャを回せないように制御できます。
ガチャガチャを回す
最初の衝撃タイプのコマンドブロックで、エメラルドを消費したらガチャガチャを回せるようにしたいので、直接ボタンではドロップさせないようにします。
そこで、次の下から2つ目と3つ目のチェーンタイプのコマンドブロックで、fill
コマンドを使用してレッドストーンブロックを配置してドロッパーを動かすようにします。
1 |
fill <from: x y z> <to: x y z> <tileName: Block> |
fill
コマンドは、指定した座標(範囲)を指定したブロックで満たす効果があります。
ここでは、1ブロック分をレッドストーンブロックで満たすので、以下のようになります。
1 |
fill ~-2 ~-4 ~ ~-2 ~-4 ~ redstone_block |
~(チルダ)は前回説明した通り、このコマンドを設定したコマンドブロックの位置になり、後ろの数字で、そのコマンドブロックからの移動距離を表します。(座標でも構いませんよ!)
先程の画像でいうところの、下のドロッパーの真下にレッドストーンブロックを配置します。
そして、そのままレッドストーンブロックを置きっぱなしにすると、次からガチャガチャを回せなくなってしまいますので、ドロップさせたらすぐに3つ目のコマンドブロックで、同じようにレッドストーンブロックを他のブロック(または空)に置き換えて元の状態に戻しておきます。
1 |
fill ~-2 ~-5 ~ ~-2 ~-5 ~ stonebrick |
アイテムを補充する
最後(4つ目)のコマンドブロックで、アイテムを補充します。
最初に同じアイテムが入った2つのドロッパーを準備していたと思いますが、ドロップしていない方のドロッパーをclone
コマンドを使用して、ドロップしてアイテムが減ったドロッパーにコピーします。
上記の画像でだと、コマンドブロックの上のドロッパーを下のドロッパーへコピーします。
1 |
clone <begin: x y z> <end: x y z> <destination: x y z> |
clone
もfillコマンドと同じように指定した座標(範囲)のブロックを指定した座標にコピーする効果があります。
これで永遠にアイテムを補充せずに、ずっと同じ確率でガチャガチャを回すことができます。
1 |
clone ~ ~1 ~ ~ ~1 ~ ~-2 ~-5 ~ |
【おまけ】ボタンやドロッパーの向きに注意!
こちらの画像で、プレイヤーがガチャガチャを回す側(表側)を見てみましょう。
ボタンの裏側に1つ目のコマンドブロックを設置しています。
プレイヤーにアイテムをドロップするためのドロッパーは、上向きにして1ブロック手前の床に埋め込んで、上にカーペットやハーフブロックを被せています。
ボタンの下にドロッパーを置かない!
見た目の問題で、ガチャシステムとしてボタンとドロッパーを1箇所にまとめたくなりますが、例えば、ボタンの下にドロッパーを配置してしまうと、エメラルドを所持していなくてもガチャガチャを回せてしまいます。
また、ドロッパーを正面に配置してしまうと、プレイヤーがドロッパーの中に入っているアイテムを自由に取り出せてしまいますし、勢いよく飛び出たアイテムを上手く受け取れず、他のプレイヤーに拾われてしまう可能性もあります。
以上!次回は闘技場についてご紹介します!
コメント