マイクラ統合版(BE)でコマンドブロックを使って、ガチャPVPを作っていきます!
今回はスポーン地点を決めて、そこからガチャガチャのある待機場所へ移動しますが、スポーン地点は初期スポーンだけでなく、対戦を終えて装備をしたままリスポーンするプレイヤーも来ますので、次の待機場所に行く前に装備を剥ぎ取って、ガチャガチャを回すアイテムを与えます。
スポーン位置を決定する
初期スポーン地点や対戦が終了した際のリスポーン地点と範囲を決めて、プレイヤーが同じ場所にスポーンされるようにしましょう。
使用するコマンドは以下の3つです。
コマンド | 説明 |
---|---|
/setworldspawn [spawnPoint: x y z] | ワールドの初期スポーン地点を設定する |
/spawnpoint [player target:] [spawnPos: x y z] | プレイヤーのリスポーン地点を設定する |
/gamerule spawnradius [value: int] | スポーンする範囲を指定する |
初期スポーン地点
まず、プレイヤーが初めてワールドに入ってきた時に最初にスポーンする、初期スポーン地点を設定します。
こちらのコマンドは、以下のようにコマンドの後に座標を入れるだけです!
/setworldspawn 40 70 -30
上記の例だと「X=30,Y=70,Z=-30」が初期スポーン地点になります。
リスポーン地点
次に、対戦して倒されたプレイヤーがリスポーンする際のリスポーン地点を設定します。
これで、ベッドを触ってリスポーン地点を設定するのと同じ効果があります。
/spawnpoint @a 40 70 -30
上記のコマンド例は、全てのプレイヤーのリスポーン地点を「X=30,Y=70,Z=-30」にする設定です。
「@a」のすべてのプレイヤーを対象に、この位置にリスポーンすることを意味します。
他の対象も以下のように指定することができますが、プレイヤー名で指定することも可能です。
対象 | 説明 |
---|---|
@s | 自己 |
@p | 最寄りのプレイヤー |
@r | ランダムなプレイヤー |
@a | すべてのプレイヤー |
@e | すべてのエンティティ |
入力が面倒な場合は、リスポーンしたい地点に立って、以下のコマンドを実行します。
/spawnpoint @a ~ ~ ~
「~(チルダ)」は、今現在自分が立っている位置を表します。
もちろん、座標の数字と組み合わせて使うこともできます。
/spawnpoint @a 40 ~ -30
上記はY軸だけ現在位置で、他は座標を指定するコマンドになります。
スポーン範囲
最後に、上記で決めたスポーン地点を中心に、半径何ブロックの範囲でスポーンするかも決定します。
建築したスポーン地点が広ければ特に気にする必要はありませんが、狭いとプレイヤーが建築した場所から外に出てしまいます。
/gamerule spawnradius 1
この設定で、必ずスポーン地点にスポーンするようになります。
待機場所へ移動する
では、無事にスポーン地点が完成したら、そこからガチャガチャを回して装備をする待機場所へ移動する際に、コマンドブロックで制御をしましょう。
初期スポーン時には関係ありませんが、対戦を終えたプレイヤーが同じ場所にリスポーンすることも想定してコマンドで制御していきます。
- Step 1プレイヤーを初期状態に戻す
対戦を終えたプレイヤーのアイテムや装備を剥ぎ取って初期状態に戻します。
- Step 2ガチャガチャ用アイテム
ガチャガチャを回すためのアイテム(ゲーム内通貨)をプレイヤーに与えます。
- Step 3待機場所へ移動する
最後にスポーン地点からガチャガチャを回して準備する待機場所へ移動します。
プレイヤーを初期状態に戻す
冒頭でも少し触れましたが、アイテムや装備を持ったままリスポーンすることを想定していますので、アイテムが散乱して他のプレイヤーや次回対戦する時にも拾わせないために、プレイヤーを初期状態に戻します。
最初のコマンドブロックは、感圧板を踏むと発動するようにしておき、種類や条件は以下の通りです。
オレンジ色の衝撃タイプのコマンドブロックですね。
設定項目 | 設定値 |
---|---|
ブロックの種類 | 衝撃 |
条件 | 無条件 |
レッドストーン | レッドストーンが必要 |
最初のティックで実行 | オフ |
ティックの遅延 | 0 |
2つ目以降のコマンドブロックは、上記の衝撃タイプに繋げていきますので、ブロックの種類を全てチェーンにしてください。
コマンドブロックがチェーンタイプの緑色に変わるはずです。
設定項目 | 設定値 |
---|---|
ブロックの種類 | チェーン |
条件 | 無条件 |
レッドストーン | 常にアクティブ |
最初のティックで実行 | オフ |
ティックの遅延 | 0 |
ここからコマンドの効果を与える対象は全て感圧板を踏んだプレイヤー「@p(最寄りのプレイヤー)」とします。
まず、インベントリに入っている持ち物(アイテム等)を空にします。
clear @p
次に、装備している武器や防具を剥ぎ取っていきます。
replaceitem entity @p slot.amaor.head 0 air
以下のスロットIDを参考に、頭から足、両手も全てのスロットを空にします。
スロットID | スロット番号 | 制限 |
slot.armor.chest | 0 | 防具立て、 Mob、 プレイヤーのみ |
slot.armor.feet | 0 | |
slot.armor.head | 0 | |
slot.armor.legs | 0 | |
slot.weapon.mainhand | 0 | |
slot.weapon.offhand | 0 |
こちらのコマンドは少し複雑なので、以下の参考サイトをご覧ください。
また、対戦で減っている体力を満タンにして、ポーション等による効果も全て無効化します。
effect @p instant_health 1 255
effect @p clear
ガチャガチャ用のアイテム
最後に、ガチャガチャを回すためのアイテム(ゲーム内通貨)を与えます。
著者が作ったガチャPVPでは、エメラルドとダイヤモンドをゲーム内通貨としています。
give @p emarald 6
エメラルドでガチャガチャを回し、当たりのダイヤモンドが入っていたら、プレミアムガチャが回せるようにしています!
そのお話は次回の待機場所編で詳しく説明します。
待機場所へ移動する
初めは、トラップドアでスポーン地点から真下にある待機場所へ移動していましたが、チートできることが発覚したので、コマンドによるテレポートに変更しました。
これまでと同じように、最後のコマンドブロックとして繋げて、tpコマンドでテレポートします。
/tp @p 40 70 -30
tpコマンドは、単純に対象のプレイヤーと座標を指定するだけの簡単なものです。
コマンドブロックは隠しておくこと!
コマンドブロックを繋げていくと、かなりの量になります。
見た目も悪くなるので、プレイヤーにコマンドブロックの存在を目に触れさせないためにも、ブロック等で隠しておきましょう。
お疲れ様です、今回はこれで完成です!
次回はいよいよガチャPVPのキモとなるガチャシステムを作っていきたいと、思いまぁ~す!
- Original:https://minory.org/minecraft-sporn-to-gacha.html
- Source:Minory
- Author:管理者