Minecraft【ミニゲーム】1vs1PVPバトルv1.1。

Java版1.19.4、統合版はv1.19.83で動作確認。
装備ガチャ(全6種類)を回してバトルスタート! プレイヤー対プレイヤーで対戦するミニゲームを作成。
1vs1PVPバトルv1.1。
待機エリアでバトルエントリー。対戦相手が見つかったらバトルステージに移動。来なければロビーへ戻ります(10秒)。「START!」が表示されたらバトル開始。1歩動くと装備が入った樽が出現するので、急いで装備します。対戦中はサバイバルモードになるので、ステージを破壊したり、ブロックを設置したり出来ます。制限時間は5分。相手を倒すか、残り時間が0になると試合終了。勝敗結果を表示してロビーに戻ります。※バトルエリアから出ると負け。引き分けの表示はありません。同じ操作方法での対戦推奨。
◻︎装置の特徴
・tagを使ったプレイヤー管理。
・ストラクチャーブロックを使ったステージ復元。
・中身が変わる装備ガチャ。
・「execute if score」を使ったスコアの検知。
完成動画(旧式)
動画は統合版v1.14.3マルチプレイ時のスキンバグで、相手と同じスキンになっています。
1.作成準備
・フラットワールド。
・チャットコマンド。
2.コマンドブロックの設置
3.装置全体図
・1vs1PVPバトルv1.1の装置全体図。
4.バトルエリア
・ステージの大きさ。・壁と床。・ステージの土台。
5.待機エリア
・ロビー。・ホームと壁。
6.装置エリア
・スコアボードの作成。・ゲームルールの変更。・1P側(赤)。・2P側(空)とタイマー。・バトル開始と勝敗判定。・勝敗結果の表示。・エントリールーム(AND回路)。・リセット。
7.装備ガチャ
・防具立ての設置。・樽の中身。・装備ガチャ(赤)。・装備ガチャ(空)。
8.ステージの作成
・仕上げ。
9.ワールドデータ
・完成データのダウンロード。
更新履歴
2023-5-27/統合版の「test」を廃止して「execute if score」に変更しました。
2023-3-2/新設計!1vs1PVPバトルv1.1。コマンドブロックを大幅に減らし、統合版の新コマンドにも対応しました。
作成準備
フラットワールド。
マインクラフトのバージョンも上がり、フラットワールドの作成が簡単になりました。 詳しくは、下記の関連記事を参考に作成してください。
- フラットワールドの作り方はこちら→ 新規フラットワールド作成。
チャットコマンド。
チャットに大量のコマンドログが流れ、装置作成の邪魔になるのでログを非表示にしておきます。 ※Java版では、新規ワールド作成時にも非表示に出来ます。
◻︎コマンドログの非表示 ※表示する場合 「false」を「true」に変更。
/gamerule commandBlockOutput false |
装置作成に必要なコマンドブロックを手に入れます。
◻︎コマンドブロックの入手
/give @s command_block |
コマンドブロックの設置
Java版と統合版では、コマンドやブロックの名称など違いがあります。
装置の解説はJava版の名称で統一しています。
コマンドブロックは画像に合わせて配置。「ブロックの種類」「レッドストーン」を変更します。変更がある場合は、個別に解説していきます。
配置したコマンドブロックの状態/すべて無条件
※()内は統合版の名称。
コマンドブロックの色 | ブロックの種類 | レッドストーン |
黄色 | インパルス (衝撃) |
動力が必要 (レッドストーンが必要) |
青色 | チェーン | 常時実行 (常にアクティブ) |
紫色 | リピート (反復) |
常時実行 (常にアクティブ) |
装置全体図
1vs1PVPバトルv1.1の装置全体図。
大きく分けると3つのエリアがあり、コマンドブロックは解説しやすいように広げてあります。装置は開始点座標(0 -60 0)を基準に、南が正面がになるよう設置にしています。座標を合わせてブロックを設置していくと、コマンドはコピー&ペーストで作れます。
❶バトルエリア ❷待機エリア ❸装置エリア
◻︎南向きを確認するには
ストラクチャーブロックを設置して、境界線の青い線が伸びる方が南。※赤い線は東。
/give @s structure_block
バトルエリア
ステージの大きさ。
ストラクチャーブロックを使って、バトルステージの大きさを決めます。境界線は大型建築の時など、目安にもなるので便利です。
「A」は座標(0 -62 0)。
2ブロック下にストラクチャーブロックを設置して、セーブモードで座標を入力。ストラクチャーのサイズ X:「17」 Y:「22」 Z:「42」。
壁と床。
コマンドを使って、ステージの壁と床を作成。バリアブロックで箱を作り、中を空洞にします。床を草ブロックに変え、石レンガの床を設置。
「A」は座標(0 -62 0)。
【Java版】
①/give @s barrier ②/fill 0 -62 0 16 -41 41 barrier ③/fill 1 -60 1 15 -41 40 air ④/fill 1 -61 1 15 -61 40 grass_block ⑤/fill 1 -60 7 15 -59 34 stone_bricks |
【統合版】①②③はJava版と同じ。
④/fill 0 -61 0 16 -61 41 grass ⑤/fill 1 -60 7 15 -59 34 stonebrick |
ステージの土台。
階段を作り、プレイヤーの出現場所、装備ガチャの設置場所に色付きコンクリートを設置します。土台が出来たら、一度ストラクチャーブロックに保存します。
「T1」は座標(8 -61 39)、「赤」は座標(6 -59 34)。「T2」は座標(8 -61 2)、「空」は座標(10 -59 7)。
「T1、T2」はプレイヤーのテレポート場所。「赤、空」の上には装備の入った樽(タル)を設置します。 ストラクチャーブロックは草ブロックで埋め、座標(0 -60 0)に開花したツツジの葉を設置。
土台の保存
座標(0 -62 0)に設置したストラクチャーブロックをセーブモードにして座標を入力。ストラクチャーのサイズ X:「17」 Y:「22」 Z:「42」。ストラクチャー名を「stage1」にして保存します。
【Java版】
Java版では、ストラクチャーブロックのロード時に動力が必要なので、追加でコマンドブロックを設置します。※統合版は必要なし。
「A」は座標(0 -62 0)。①②は2ブロック下。②は動力が必要に変更。
①execute if block 0 -62 0 structure_block ②setblock 0 -62 0 barrier replace |
①「A」にストラクチャーブロックがある時、信号を出します。
②信号がある時「A」をバリアブロックに置き換えます。
待機エリア
バトルにエントリーしたり、バトル終了後に戻ってくる場所(ロビー)を作ります。
ロビー。
「あ」は座標(23 -60 38)。「B」は座標(24 -60 33)。「P1」は座標(23 -60 27)、「P2」は座標(25 -60 27)。
「あ」の座標から3×3ブロックの足場を作成。高さは2ブロックにします。「B」はワールドスポーン位置にします。「P1、P2」はエントリールーム。座標を確認し、高さ3ブロックの壁を作ります。
ホームと壁。
「C」は座標(24 -58 39)。「赤壁」は範囲座標(23 -60 28)、(23 -58 28)。 「空壁」は範囲座標(25 -60 28)、(25 -58 28)。
「C」の座標はプレイヤーがロビーに戻る時に使います(ホームポイント)。ステータスや装置もリセットします。エントリールームでは「赤壁、空壁」を開け閉めして、バトルにエントリー出来るプレイヤーを制限します。
装置エリア
スコアボードの作成。
2種類のスコアボードを作成。「count」は、タイマーや勝敗装置、装備ガチャなどに使用。「Time」は残り時間を表示します。装置が完成するまで「count」をサイドバーに表示しておきます。※確認用
【Java版/統合版 共通】
/scoreboard objectives add count dummy /scoreboard objectives add Time dummy /scoreboard objectives setdisplay sidebar count |
◻︎削除する場合。
/scoreboard objectives remove count
/scoreboard objectives remove Time
ゲームルールの変更。
コマンドを使ってゲームルールを変更します。※統合版は、コマンドを使わなくても設定から変更出来ます。
【Java版】
/gamerule doImmediateRespawn true /gamerule doMobLoot false |
◻︎戻す場合。
/gamerule doImmediateRespawn false
/gamerule doMobLoot true
死んだ時、メニューを出さすに即リスポーン。モブがアイテムを落とさない。
1P側(赤)。
プレイヤーが「P1」にいる時、動作する装置を作ります。
①は座標(19 -60 24)。②にはレッドストーントーチ(のたいまつ)を設置。③は動力が必要(レッドストーンが必要)に変更。
【Java版】
①execute if entity @p[x=23,y=-60,z=27,dx=0,dy=2,dz=0] ②tag @p[x=23,y=-60,z=27,dx=0,dy=2,dz=0] add aka ③scoreboard players add ティック count 1 ④scoreboard objectives setdisplay sidebar Time ⑤scoreboard players set 残り時間 Time 10 ⑥fill 25 -60 28 25 -58 28 air ⑦fill 23 -60 28 23 -58 28 red_concrete ⑧fill 25 -60 28 25 -58 28 light_blue_concrete |
【統合版】①〜⑥はJava版と同じ。
⑦fill 23 -60 28 23 -58 28 concrete 14 ⑧fill 25 -60 28 25 -58 28 concrete 3 |
【タグ付け】
①「P1」にプレイヤーがいる時、信号を出す。
②「P1」にいるプレイヤーにタグ「aka」を追加。
【タイマー】
③④⑤「Time」をサイドバーに表示。 10秒のタイマーを起動。
【壁の開閉】
⑥「空壁」に空気ブロックを設置。
⑦「赤壁」に赤色のコンクリートを設置。
⑧信号がない時「空壁」に空色のコンクリートを設置。
2P側(空)とタイマー。
「P2」にいるプレイヤーにタグを付けます。また、ティック(tick)を数えたり、残り時間が0になった時、プレイヤーを移動させます。
レッドストーンリピーター(反復装置)は、2回クリック。④は条件付きに変更。
【Java版/統合版 共通】
①tag @p[x=25,y=-60,z=27,dx=0,dy=2,dz=0] add ao ②execute if score ティック count matches 18.. ③scoreboard players set ティック count 0 ④scoreboard players remove 残り時間 Time 1 ⑤execute if score 残り時間 Time matches 0..0 ⑥tp @p[tag=aka] 24 -58 39 ⑦tp @p[x=0,y=-63,z=0,dx=16,dy=24,dz=41] 24 -58 39 ⑧scoreboard players set 勝敗 count 3 |
【タグ付け】
①「P2」にいるプレイヤーにタグ「ao」を追加。
【タイマー】
②③④18ティック(tick)を1秒に変換し「Time」の残り時間を1引く。
【プレイヤーの移動】◻︎待機エリア、ホームと壁を参照。
⑤⑥⑦残り時間が0になったら、タグ「aka」バトルエリアにいるプレイヤーを「C」に移動。
⑧「count」の勝敗を3にします。
バトル開始と勝敗判定。
プレイヤーがバトルエリアに入ったら、開始の合図とタイマーを起動。どちらかのプレイヤーがバトルエリア外に出た時、勝敗を決定します。※残り時間が0まで勝負がつかない場合は、引き分けになります。
⑨は動力が必要(レッドストーンが必要)に変更。
【Java版】
①execute if entity @p[tag=aka,x=0,y=-63,z=0,dx=16,dy=20,dz=41] ②scoreboard players set 勝敗 count 1 ③tp @p[x=0,y=-63,z=0,dx=16,dy=24,dz=41] 24 -58 39 ④execute if entity @p[tag=ao,x=0,y=-63,z=0,dx=16,dy=20,dz=41] ⑤scoreboard players set 勝敗 count 2 ⑥tp @p[x=0,y=-63,z=0,dx=16,dy=24,dz=41] 24 -58 39 ⑦execute if entity @p[x=0,y=-63,z=0,dx=16,dy=20,dz=41] ⑧scoreboard players set 残り時間 Time 300 ⑨scoreboard players add ティック count 1 ⑩title @a title {"text":"START!","bold":true} |
【統合版】①〜⑨はJava版と同じ。
⑩title @a title START! |
【タグ「aka」の検知】◻︎待機エリア、ホームと壁を参照。
①バトルエリア内にタグ「aka」がいる時、信号を出す。
②「aka」が勝った時「count」の勝敗を1に設定。
③バトルエリア内のプレイヤーを「C」に移動。
【タグ「ao」の検知】◻︎待機エリア、ホームと壁を参照。
④バトルエリア内にタグ「ao」がいる時、信号を出す。
⑤「ao」が勝った時「count」の勝敗を2に設定。
⑥バトルエリア内のプレイヤーを「C」に移動。
【タイマー】
⑦バトルエリア内のプレイヤーを検知。
⑧⑨300秒(5分)のタイマーを起動。
⑩タイトルに「START!」と表示。
※バトルエリアから後に出る方が信号が遅れるのを利用して、勝敗を決めています。
勝敗結果の表示。
スコアボード「count」の勝敗のスコアに合わせて、結果をタイトルに表示します。また、ストラクチャーブロックをロードして、ステージを復元します。
リピーター(反復装置)は3回クリック。②④は動力が必要(レッドストーンが必要)に変更。
【Java版】
①execute if score 勝敗 count matches 1.. ②execute if score 勝敗 count matches 1 ③title @a title {"text":"RED WIN!","bold":true} ④execute if score 勝敗 count matches 2 ⑤title @a title {"text":"BLUE WIN!","bold":true} ⑥scoreboard players set 勝敗 count 0 ⑦setblock 0 -62 0 structure_block{mode:"LOAD",name:"stage1"} ⑧kill @e[type=!armor_stand,type=!player] |
【統合版】③⑤⑦以外はJava版と同じ。
③title @a title RED WIN! ⑤title @a title BLUE WIN! ⑦structure load "stage1" 0 -62 0 |
【勝敗結果】
①「count」の勝敗が1以上の時、信号を出す(統合版は1〜3の時)。
②「count」の勝敗が1の時、信号を出す。
③タイトルに「RED WIN!」を表示。
④「count」の勝敗が2の時、信号を出す。
⑤タイトルに「BLUE WIN!」を表示。
⑥「count」の勝敗を0に設定。
【ステージの復元】◻︎バトルエリア、ステージの大きさを参照。
⑦「A」の座標にロードモード「stage1」のストラクチャーブロックを設置。
⑧落ちているアイテム削除。
エントリールーム。(AND回路)
タグ「aka、ao」が揃った時、プレイヤーをバトルステージに移動し、ゲームモードを変更します。
【Java版/統合版 共通】
①execute if entity @p[tag=ao] ②execute if entity @p[tag=aka] ③kill @e[type=item] ④tp @p[tag=aka] 8 -60 39 ⑤tp @p[tag=ao] 8 -60 2 ⑥gamemode survival @p[tag=aka] ⑦gamemode survival @p[tag=ao] |
【タグ検知】◻︎バトルエリア、ステージの土台を参照。
①②タグ「aka、ao」がいる時、信号を出す。
③落ちているアイテムを削除。
④⑤タグ「aka、ao」をバトルエリア「T1、T2」に移動。
⑥⑦タグ「aka、ao」のゲームモードをサバイバルに変更。
リセット。
バトル終了後に、プレイヤーのステータスや装置をリセットします。
【Java版】
①execute if entity @p[x=23,y=-59,z=38,dx=2,dy=2,dz=2] ②fill 23 -60 28 23 -58 28 air ③tag @a remove aka ④tag @a remove ao ⑤gamemode adventure @a ⑥effect clear @a ⑦clear @a ⑧effect give @a instant_health 1 20 ⑨effect give @a saturation 1 20 |
【統合版】⑥⑧⑨以外はJava版と同じ。
⑥effect @a clear ⑧effect @a instant_health 1 20 ⑨effect @a saturation 1 20 |
【リセット】◻︎待機エリア、ホームと壁を参照。
①プレイヤーが金ブロックの上にいる時、信号を出す。
②「赤壁」に空気ブロックを設置。
③④タグ「aka、ao」を削除。
⑤ゲームモードをアドベンチャーに変更。
⑥⑦エフェクトを解除し、持ち物すべてを消す。
⑧⑨体力や空腹を回復。
装備ガチャ
防具立ての設置。
チャットコマンドを使って、名前を付けた防具立てを設置します。「R、B」は装備ガチャに使用。
【Java版】
/summon armor_stand 21 -60 8 {CustomName:"\"R\""} /summon armor_stand 21 -60 7 {CustomName:"\"B\""} |
【統合版】
/summon armor_stand R 21 -60 8 /summon armor_stand B 21 -60 7 |
樽の中身。
樽の中に装備を入れます。バトルが面白くなるように、装備の組み合わせを調整してください。例として、配布ワールドに入れてあるものを紹介します。
6種類のマスター装備。
【ソードマスター】
攻撃力は高いが守備力は弱い。(溶岩と肉と草ブロック)
【ボウマスター】
遠距離戦は強いが接近戦は弱い。(毒矢と移動速度上昇ポーション)
【TNTマスター】
当たれば破壊力最強。攻撃手段が少ない。(ガラスと釣竿)
【ガードマスター】
守備力が高いが攻撃力は弱い。(弱体化ポーションとクモの巣)
【ポーションマスター】
毒ポーションが勝敗を決める!? 操作が難しい。(治癒、力、跳躍ポーション)
【エッグマスター】
モブの使い方が勝敗のカギ!? 装備は弱い。(ブロックとツルハシ)
装備ガチャ(赤)
ループ式抽選装置を使って、バトルステージに樽を設置します。
④は条件付きに変更。「いうえ」の座標はコマンド内に記載。
【Java版/統合版 共通】
①execute if entity @p[x=8,y=-60,z=39,dx=0,dy=0,dz=0] ②scoreboard players add @e[name=R] count 1 ③execute if entity @e[name=R,scores={count=4..}] ④scoreboard players set @e[name=R] count 1 ⑤execute if entity @e[name=R,scores={count=1}] run clone 24 -60 7 24 -60 7 6 -58 34 ⑥execute if entity @e[name=R,scores={count=2}] run clone 25 -60 7 25 -60 7 6 -58 34 ⑦execute if entity @e[name=R,scores={count=3}] run clone 26 -60 7 26 -60 7 6 -58 34 ⑧setblock 8 -60 39 barrier |
【リセット】◻︎バトルエリア、ステージの土台を参照。
①「T1」にプレイヤーがいる時、信号を出す。
②防具立て「R」の「count」を1足す。
③④防具立て「R」の「count」が4以上になったら、1に戻す(条件付き)。
⑤⑥⑦防具立て「R」の「count」のスコアに合わせて「いうえ」の樽を「赤」の上にクローン。
⑧何度も装備ガチャを引けないように「T1」にバリアを設置。
装備ガチャ(空)
ループ式抽選装置を使って、バトルステージに樽を設置します。
④は条件付きに変更。「おかき」の座標はコマンド内に記載。
【Java版/統合版 共通】
①execute if entity @p[x=8,y=-60,z=2,dx=0,dy=0,dz=0] ②scoreboard players add @e[name=B] count 1 ③execute if entity @e[name=B,scores={count=4..}] ④scoreboard players set @e[name=B] count 1 ⑤execute if entity @e[name=B,scores={count=1}] run clone 28 -60 7 28 -60 7 10 -58 7 ⑥execute if entity @e[name=B,scores={count=2}] run clone 29 -60 7 29 -60 7 10 -58 7 ⑦execute if entity @e[name=B,scores={count=3}] run clone 30 -60 7 30 -60 7 10 -58 7 ⑧setblock 8 -60 2 barrier |
【リセット】◻︎バトルエリア、ステージの保存を参照。
①「T2」にタグ「ao」がいる時、信号を出す。
②防具立て「B」の「count」を1足す。
③④防具立て「B」の「count」が4以上になったら、1に戻す(条件付き)。
⑤⑥⑦防具立て「B」の「count」のスコアに合わせて「おかき」の樽を「空」の上にクローン。
⑧何度も装備ガチャを引けないように「T2」にバリアを設置。
ステージの作成
仕上げ。
コマンドブロックの動作が確認出来たら、ステージを作り仕上げます。配布ワールドでは、和風ミニ庭園ステージにしてあります。
【ステージの仕上げ】◻︎バトルエリア、ステージの土台を参照。
座標(0 -62 0)に設置したストラクチャーブロックをセーブモードにして座標を入力。ストラクチャーのサイズ X:「17」 Y:「22」 Z:「42」。ストラクチャー名を「stage1」にして保存します。
ワールドデータ
完成データのダウンロード。
完成データでは、座標(32 -60 18)にリセットボタンを設置してあります。また、エントリールームに入る前に、スコアボードも作成されます。
【統合版】 v1.19.83
アプリで開くから、Minecraftを選びます。
ダウンロード/1vs1PVPバトルv1.1.mcworld
【Java版】 1.19.4
zipを解凍して、フォルダを「saves」に入れて起動します。
ダウンロード/1vs1PVPバトルv1.1.zip
※二次配布は禁止です。