【マイクラ】ガチャPVPの作り方!ガチャシステムでアイテム入手

minecraft-gacha-systemメディア

今回はマイクラガチャPVPで最も重要なガチャシステムの作り方をご紹介します!
マイクラガチャPVPでは、ガチャガチャで運良く手に入れた武器や防具、アイテムが勝敗を決めると言っても過言ではありません!
公平を保つためにもコマンドブロックを駆使してしっかり作って行きましょう!

待機場所の作り方

【ガチャPVP】待機場所の作り方
【ガチャPVP】待機場所の作り方

画像を見ての通り、特定のアイテムを持った状態でボタンを押すと、看板に関係するアイテム入手できるといった、マイクラではお馴染みの仕組みになっています。

特に待機場所の作り方に正解があるわけではありませんが、注意点として、ガチャガチャを隣同士に並べると、アイテムドロップした際に、近くにいる他のプレイヤーに奪われる場合がありますので、少し離して設置しましょう。

ガチャシステムの作り方

マイクラで単純にランダムアイテムを与えるだけのガチャシステムなら、ドロッパーを使えば誰でも簡単に実現できると思いますが、無制限に回せてしまったり、減ったアイテムを補充しなければなりませんので、コマンドブロックを利用して解決していきます!
公平かつ便利なガチャシステムに必要な条件は以下の3点です。

ガチャシステムの条件
  • POINT.1
    ゲーム内通貨

    ガチャガチャを回すためにアイテムを消費すること

  • POINT.2
    ランダムで入手

    武器や防具などのアイテムはランダムで入手すること

  • POINT.3
    アイテムを補充

    アイテムは自動で補充し、常に同じ確率であること

必要なブロックを準備する

それでは、ガチャシステム裏側に回ってみましょう。
マイクラガチャシステムで上記の条件を実現するには、以下の3種類のブロックを使用します。

必要なブロック
  • ドロッパー × 2
  • コマンドブロック(衝撃タイプ) × 1
  • コマンドブロック(チェーンタイプ) × 3

コマンドブロック衝撃チェーンタイプの説明については、前回の記事をご覧ください!

ドロッパーにアイテムを詰める

ドロッパーにアイテムを詰める
ドロッパーにアイテムを詰める

マイクラドロッパーは基本的にランダムドロップしますので、アタリを少なめ、ハズレを多めに入れておきましょう。
武器や防具はできませんが、1スタックに複数入るアイテムならもっと差別化できます。

上記でドロッパーを2つ準備するように記述しましたが、それぞれガチャガチャを回してプレイヤーにアイテムを渡すドロッパーと、アイテム補充用のドロッパーになります。
どちらのドロッパーも同じアイテム、同じ数を入れ、同じ向きで少し離して設置しておきましょう。
どのように補充するかはこの後説明します。

コマンドブロックの設定

ガチャシステムの作り方
ガチャシステムの作り方

画像を見ての通り、下から上にコマンドブロックを繋げています。(ブロック繋げる方向はどちらでも構いません)
では、1番下の衝撃タイプコマンドブロックから設定していきます。

アイテムを使用する

出典:そのほかの村

前回の記事でも紹介しましたが、マイクラガチャガチャを回すには待機場所に移動する際に与えられたゲーム内通貨を使用します。
ここでは、ゲーム内通貨エメラルドとして説明します。

プレイヤーのインベントリから特定のアイテムを削除するには、clearコマンドを使用します。

clear [player: target] [itemName: Item] [data: int] [maxCount: int]

第1引数はプレイヤー(@p)、第2引数はアイテム(emerald)を指定します。
第3引数を「」にすると、プレイヤーが指定したアイテムを所持しているか確認できます。
そして、最後の第4引数を「1」とすると、指定したアイテムを1つ減らすことができます。
完成形がこちら!

clear @p emerald 0 1

これで、プレイヤーが所持しているエメラルドが1つ減らないと、次のコマンドブロックが実行されないので、結果的にエメラルドを所持してないとガチャガチャを回せないように制御できます。

ガチャガチャを回す

出典:そのほかの村

最初の衝撃タイプコマンドブロックで、エメラルドを消費したらガチャガチャを回せるようにしたいので、直接ボタンではドロップさせないようにします。

そこで、次の下から2つ目と3つ目のチェーンタイプコマンドブロックで、fillコマンドを使用してレッドストーンブロックを配置してドロッパーを動かすようにします。

fill <from: x y z> <to: x y z> <tileName: Block>

fillコマンドは、指定した座標(範囲)を指定したブロックで満たす効果があります。
ここでは、1ブロック分をレッドストーンブロックで満たすので、以下のようになります。

fill ~-2 ~-4 ~ ~-2 ~-4 ~ redstone_block

~(チルダ)は前回説明した通り、このコマンドを設定したコマンドブロックの位置になり、後ろの数字で、そのコマンドブロックからの移動距離を表します。(座標でも構いませんよ!)
先程の画像でいうところの、下のドロッパーの真下にレッドストーンブロックを配置します。

そして、そのままレッドストーンブロックを置きっぱなしにすると、次からガチャガチャを回せなくなってしまいますので、ドロップさせたらすぐに3つ目のコマンドブロックで、同じようにレッドストーンブロックを他のブロック(または空)に置き換えて元の状態に戻しておきます。

fill ~-2 ~-5 ~ ~-2 ~-5 ~ stonebrick

アイテムを補充する

出典:そのほかの村

最後(4つ目)のコマンドブロックで、アイテム補充します。
最初に同じアイテムが入った2つのドロッパーを準備していたと思いますが、ドロップしていない方のドロッパーcloneコマンドを使用して、ドロップしてアイテムが減ったドロッパーコピーします。
上記の画像でだと、コマンドブロック上のドロッパーを下のドロッパーへコピーします。

clone <begin: x y z> <end: x y z> <destination: x y z>

clonefillコマンドと同じように指定した座標(範囲)のブロックを指定した座標にコピーする効果があります。
これで永遠にアイテム補充せずに、ずっと同じ確率ガチャガチャを回すことができます。

clone ~ ~1 ~ ~ ~1 ~ ~-2 ~-5 ~

【おまけ】ボタンやドロッパーの向きに注意!

ガチャガチャを回す
ボタンやドロッパーの向きに注意!

こちらの画像で、プレイヤーガチャガチャを回す側(表側)を見てみましょう。
ボタンの裏側に1つ目のコマンドブロックを設置しています。
プレイヤーアイテムドロップするためのドロッパーは、上向きにして1ブロック手前の床に埋め込んで、上にカーペットやハーフブロックを被せています。

ボタンの下にドロッパーを置かない!

見た目の問題で、ガチャシステムとしてボタンとドロッパーを1箇所にまとめたくなりますが、例えば、ボタンの下にドロッパーを配置してしまうと、エメラルドを所持していなくてもガチャガチャを回せてしまいます。

また、ドロッパーを正面に配置してしまうと、プレイヤードロッパーの中に入っているアイテムを自由に取り出せてしまいますし、勢いよく飛び出たアイテムを上手く受け取れず、他のプレイヤーに拾われてしまう可能性もあります。

以上!次回は闘技場についてご紹介します!

東京生まれ福岡育ちの文系プログラマー。
テクノロジーの恩恵を感じながら日々精進しています。
広く浅くをモットーに、最近ではプログラミングだけでなく、仮想サーバーからセキュリティ、監視システムなども勉強中です。

管理者をフォローする

コメント

タイトルとURLをコピーしました