Minecraft【作るゲーム】大乱闘モブバトルv1.1。

2024-03-02

Java版1.19.4、統合版はv1.19.83で動作確認。

「Coin」を投入したら、モブを選んでバトルスタート! 3種類のモブで対戦するミニゲームを作成。

大乱闘モブバトルv1.1。

スコアボードで作成する通貨「Coin」で遊べるミニゲーム、大乱闘モブバトルv1.1(じゃんけんゲームを改名)。演出や複雑なしくみを大幅に減らし、回路をシンプルに変更。2Pプレイも分離して別ワールドにしました。

◻︎1人プレイの場合
「Coin」を消費してボタンを押したらバトルスタート。ゾンビ(グー)、スケルトン(チョキ)、クリーパー(パー)からモブを選んで召喚。相手より強いモブを出したら勝利。足元の勝利ランプが点灯するので、感圧版を踏んで「Coin」をもらいます。感圧版を踏まずに連勝すれば、より多くの「Coin」が貰えますが、1度でも負けたら貰える「Coin」は0になります。同じモブが出たら、引き分けで再バトル。

◻︎2人プレイの場合
1人プレイ用を少し改良して2人プレイにしました。2P側(桃色)が先にモブを選び、1P(空色)が後からモブを選びます。「Coin」や連勝システムも無く、勝敗を決めるだけの装置です。

◻︎装置の特徴
・TPコマンドを使ったモブの固定と弓無しスケルトン。
・9パターンの結果を検知する、小型のAND回路。
・tick(ティック)を使ったループ式抽選装置。
・引数を使ったモブの検知。

 

完成動画(旧式)

 

 

目次

1.作成準備
・フラットワールド。
・チャットコマンド。
2.コマンドブロックの設置
3.装置全体図
・大乱闘モブバトルv1.1の装置全体図。
4.プレイエリア
・スコアボードの作成。・バトル開始ボタン。・モブ召喚ボタン。・モブ固定。
5.景品回路
・スコア検知。
6.勝敗判定回路
・モブ検知。・勝敗結果。・仕上げ。
7.操作方法
・1人プレイ用と2人プレイ用。
8.ワールドデータとスキン
・完成データのダウンロード。・大乱闘モブバトルv1.1スキン。

 

更新履歴
2023-2-9/新設計!回路を簡単にして、統合版の新コマンドにも対応しました。

 

作成準備

フラットワールド。

マインクラフトのバージョンも上がり、フラットワールドの作成が簡単になりました。 詳しくは、下記の関連記事を参考に作成してください。

 

 

 

チャットコマンド。

チャットに大量のコマンドログが流れ、装置作成の邪魔になるのでログを非表示にしておきます。 ※Java版では、新規ワールド作成時にも非表示に出来ます。

◻︎コマンドログの非表示 ※表示する場合 「false」を「true」に変更。

/gamerule commandBlockOutput false

装置作成に必要なコマンドブロックを手に入れます。

◻︎コマンドブロックの入手

/give @s command_block

 

コマンドブロックの設置

Java版と統合版では、コマンドやブロックの名称など違いがあります。
装置の解説はJava版の名称で統一しています。

コマンドブロックは画像に合わせて配置。「ブロックの種類」「レッドストーン」を変更します。変更がある場合は、個別に解説していきます。

配置したコマンドブロックの状態/すべて無条件
※()内は統合版の名称。

コマンドブロックの色 ブロックの種類 レッドストーン
黄色 インパルス
(衝撃)
動力が必要
(レッドストーンが必要)
青色 チェーン 常時実行
(常にアクティブ)
紫色 リピート
(反復)
常時実行
(常にアクティブ)

 

装置全体図

大乱闘モブバトルv1.1の装置全体図。

フラットワールドを作成したら、座標(0 -60 0)へ移動して開花したツツジの葉を設置。装置は開始点座標(0 -60 0)を基準に、南が正面がになるよう設置にしています。座標を合わせてブロックを設置していくと、コマンドはコピー&ペーストで作れます。

開始点は座標(0 -60 0)。防具立ての座標「M」(5 -60 7)、「P」(5 -60 6)。※プレイエリアと景品回路は重なっています。

❶プレイエリア ❷景品回路 ❸勝敗判定回路

◻︎南向きを確認するには
ストラクチャーブロックを設置して、境界線の青い線が伸びる方が南。※赤い線は東。
/give @s structure_block

 

防具立ての設置。
チャットコマンドを使って、名前を付けた防具立てを2つ設置します。ループ式抽選装置用の「M」、景品ポイント用の「P」。

【Java版】

/summon armor_stand 5 -60 7 {CustomName:"\"M\""}
/summon armor_stand 5 -60 6 {CustomName:"\"P\""}

【統合版】

/summon armor_stand M 5 -60 7
/summon armor_stand P 5 -60 6

 

プレイエリア

スコアボードの作成。

3種類のスコアボードを作成。「mob」は、防具立てに数字持たせループします。「Coin」はスコアボード通貨として使用。「point」は景品用として使用。装置が完成するまで「mob」をサイドバーに表示しておきます。※確認用

【Java版/統合版 共通】

scoreboard objectives add mob dummy
scoreboard objectives add Coin dummy
scoreboard objectives add point dummy
scoreboard objectives setdisplay sidebar mob

◻︎削除する場合。
/scoreboard objectives remove mob
/scoreboard objectives remove Coin
/scoreboard objectives remove point

 

バトル開始ボタン。

「Coin」を消費して、バトルを開始する装置を作ります。

「あ」は座標(10 -60 12)。「い」は範囲座標(5 -59 12)、(7 -59 12)。⑤は動力が必要(レッドストーンが必要)に変更。 ※統合版のみ、ティックの遅延10を入力。

①の上にはレッドストーンダスト(の粉)、その上に銅ブロック、木のボタンを付けておきます。「A、B、C」には音符ブロックを設置。「A」は1回クリック、「B」は5回クリック、「C」は8回クリック。

【Java版】

①execute if entity @p[scores={Coin=5..}] run scoreboard players remove @p Coin 5
②fill 3 -59 12 7 -59 12 redstone_block
③kill @e[type=!player,name=!M,name=!P]
④title @a title {"text":"バトル!","bold":true}
⑤setblock 10 -60 12 air

【統合版】①②③⑤はJava版と同じ。

④title @a title バトル!

①プレイヤーの「Coin」が5以上の時、「Coin」を5引く。
②「い」の範囲座標にレッドストーンブロックを設置。
③プレイヤーと名前が「M」と「P」以外をキル。
④タイトルに「バトル!」と表示。
⑤信号がある時「あ」の座標に空気ブロックを設置。※統合版のみ、ティックの遅延10。

 

モブ召喚ボタン。

プレイヤーがモブを選び召喚する装置。同時にtick(ティック)を使ったループ式抽選装置で相手モブ(NPC)も選びます。

「空」は座標(8 -58 9)、「桃」は座標(4 -58 9)。「う」は範囲座標(3 -59 12)、(7 -59 12)。 ⑤は動力が必要(レッドストーンが必要)、⑥は条件付きに変更。

「空、桃」はモブの召喚場所。色付きガラス(ステンドグラス)を設置。 コマンド入力後、②③④の上に粘着(吸着)ピストン、「R」の上にレッドストーンリピーター(反復装置)を 矢印の方向に設置。

【Java版】

①fill 3 -59 12 7 -59 13 air
②summon husk 8 -57 9
③summon skeleton 8 -57 9
④summon creeper 8 -57 9
⑤scoreboard players add @e[name=M] mob 1
⑥scoreboard players set @e[name=M,scores={mob=4..}] mob 1

【統合版】①②③⑤はJava版と同じ。

④title @a title バトル!

【モブ召喚】
①信号がある時「う」の範囲座標に空気ブロックを設置。
②③④「空」の座標1ブロック上にハスク、スケルトン、クリーパーを召喚。
【ループ式抽選装置】
④⑤信号がある時、防具立て「M」に「mob」を追加し、1〜3の数字をループ。「mob」が4になったら1に戻します。

 

モブ固定。

信号が切れた時、防具立て「M」の「mob」のスコアに合わせてモブを召喚。「空、桃」に召喚したモブを、TPコマンドで固定します。また、スケルトンが召喚した時、弓を削除します。

「空」は座標(8 -58 9)、「桃」は座標(4 -58 9)。

「え」のレッドストーンダスト(の粉)の上に石ブロックを設置。「D」のトーチ(のたいまつ)上には音符ブロックを設置(1回クリック)。「お」空色、「か」黄色、「き」桃色(ピンク)のコンクリートを設置して、石のボタンを付ける。

【Java版】

①execute if entity @e[name=M,scores={mob=1..1}] run summon husk 4 -57 9
②execute if entity @e[name=M,scores={mob=2..2}] run summon skeleton 4 -57 9
③execute if entity @e[name=M,scores={mob=3..}] run summon creeper 4 -57 9
④execute as @e[type=husk] at @s run tp @s ~ ~ ~
⑤execute as @e[type=skeleton] at @s run tp @s ~ ~ ~
⑥execute as @e[type=creeper] at @s run tp @s ~ ~ ~
⑦item replace entity @e[type=skeleton] weapon.mainhand with air

【統合版】①②③④⑤⑥はJava版と同じ。

⑦replaceitem entity @e[type=skeleton] slot.weapon.mainhand 0 air

【モブ召喚】
※敵モブ ①②③「mob」のスコアに合わせて「桃」の座標1ブロック上にハスク、スケルトン、クリーパーを召喚。【モブ固定】
④⑤⑥ハスク、スケルトン、クリーパーが召喚された時、その場に固定します。※座標入力は無し。
【弓無し】
⑦スケルトンが攻撃してこないように、弓を消します。

 

景品回路

スコア検知。

防具立て「P」の「point」のスコアに合わせてランプを光らせたり、プレイヤーに「Coin」を与えたりします。

③④は条件付きに変更。「け」の銅ブロックの上にレッドストーンランプを設置。⑤はコマンド入力後、銅ブロックと感圧版を設置。

【Java版/統合版 共通】

①execute if entity @e[name=P,scores={point=1..3}]
②execute if entity @e[name=P,scores={point=3..3}] run scoreboard players add @p Coin 30
③scoreboard players reset @e[name=P] point
④playsound entity.firework_rocket.twinkle player @a 5 -58 16
⑤execute if entity @e[name=P,scores={point=1..1}] run scoreboard players add @p Coin 10
⑥execute if entity @e[name=P,scores={point=2..2}] run scoreboard players add @p Coin 20
⑦scoreboard players reset @e[name=P] point

【景品ランプ】
①防具立て「P」の「point」が1〜3の時、信号を出す。
【3連勝】
②防具立て「P」の「point」が3の時、プレイヤーの「Coin」を30追加。
③②が実行された時、防具立て「P」の「point」をリセット。
④③が実行された時、プレイエリアに花火の音を鳴らす。
【1・2連勝】
⑤⑥防具立て「P」の「point」に合わせて、プレイヤーの「Coin」を追加。
⑦防具立て「P」の「point」をリセット。

 

勝敗判定回路

モブ検知。

「空、桃」に召喚したモブを検知します。AND回路を使って勝利、敗北、引き分けを判定します。

①②③はプレイヤーが「空」に召喚したモブを、④⑤⑥はNPC(ループ式抽選装置)が「桃」に召喚したモブ、 枠に囲まれた④⑤⑥は引き分けの場合を検知。

設置しているコンクリートは、検知するモブに合わせて色を変えています。「空色」はハスク、「黄色」はスケルトン、「桃色(ピンク)」はクリーパー。

モブの検知。
引数を使って、「空、桃」の1ブロック上にいるモブ検知します。※1ブロック分だけの検知なので(dx)、(dy)、(dz)は0のまま。

【Java版/統合版 共通】

①execute if entity @e[type=husk,x=8,y=-57,z=9,dx=0,dy=0,dz=0]
②execute if entity @e[type=skeleton,x=8,y=-57,z=9,dx=0,dy=0,dz=0]
③execute if entity @e[type=creeper,x=8,y=-57,z=9,dx=0,dy=0,dz=0]
④execute if entity @e[type=skeleton,x=4,y=-57,z=9,dx=0,dy=0,dz=0]
⑤execute if entity @e[type=creeper,x=4,y=-57,z=9,dx=0,dy=0,dz=0]
⑥execute if entity @e[type=husk,x=4,y=-57,z=9,dx=0,dy=0,dz=0]

【プレイヤーが召喚したモブ】
①②③「空」の上に指定したモブがいる時、信号を出す。
【NPC】
④⑤⑥「桃」の上に指定したモブがいる時、信号を出す。

 

勝敗結果。

信号に合わせて、勝利、敗北、引き分けのコマンドを実行します。

①②③はプレイヤーが勝利した時、④⑤⑥はプレイヤーが敗北した時、⑦は引き分けの場合。※回路はコマンドブロックの数を減らすため、隣の回路と共有している部分があります。

【Java版】

①title @a title {"text":"1Pの勝利!","bold":true}
②kill @e[x=4,y=-57,z=9,dx=0,dy=0,dz=0]
③scoreboard players add @e[name=P] point 1
④title @a title {"text":"1Pの負け!","bold":true}
⑤kill @e[x=8,y=-57,z=9,dx=0,dy=0,dz=0]
⑥scoreboard players reset @e[name=P] point
⑦setblock 10 -60 12 redstone_block

【統合版】②③⑤⑥⑦はJava版と同じ。

①title @a title 1Pの勝利!
④title @a title 1Pの敗北!

【勝利】
①タイトルに「1Pの勝利!」と表示。
②「桃」の座標の上にいるモブをキル。
③防具立て「P」の「point」に1追加。
【敗北】
④タイトルに「1Pの敗北!」と表示。
⑤「空」の座標の上にいるモブをキル。
⑥防具立て「P」の「point」をリセット。
【引き分け】◻︎プレイエリア、開始ボタン画像を参照。
⑦「あ」の座標にレッドストーンブロックを設置。

 

仕上げ。

プレイエリアに足場を作り、正面にステージを作ります。モブ召喚ボタンの上に頭を乗せておきます。※ハスクは無いので、ゾンビで代用。

 

操作方法

1人プレイ用と2人プレイ用。

「Coin」が5以上ある時、木のボタンを押すとバトル開始。向かって右側(空色)がプレイヤー側。 左側(桃色)はNPCになります。引き分けの場合は「Coin」の消費無しに再バトルになりますが、 木のボタンを押してしまうと消費されます。※「Coin」が5以下の時、バトルは開始されません。

【Java版/統合版 共通】サイドバー表示と「Coin」の入手コマンド。

/scoreboard objectives setdisplay sidebar Coin
/scoreboard players add @p Coin 30

 

初回のみ、木のボタンを押してスコアボードを作成します(リセットボタン兼用)。 桃色側が2P用。相手に見えないようにモブ召喚ボタンを押してバトル開始。空色側がモブを召喚すると勝敗が決まります。演出やルールは特にありません。

 

ワールドデータとスキン

完成データのダウンロード。

完成データでは、座標(12 -60 0)にリセットボタンを設置してあります。また座標(12 -60 11)には「Coin」の追加ボタンを設置。スコアボードも作成されます。

【統合版】 v1.19.83 アプリで開くから、Minecraftを選びます。
ダウンロード/大乱闘モブバトルv1.1.mcworld
ダウンロード/大乱闘モブバトルv1.1_2P用.mcworld

【Java版】 1.19.4 zipを解凍して、フォルダを「saves」に入れて起動します。
ダウンロード/大乱闘モブバトルv1.1.zip
ダウンロード/大乱闘モブバトルv1.1_2P用.zip

※二次配布は禁止です。

 

大乱闘モブバトルv1.1スキン。

スティーブタイプ 64×64px Skin
ダウンロード/ battle_s0ch

※二次配布は禁止です。