Minecraft【テクニック】ゲーム装置の起動と停止。2-1

Java版1.21.4-、統合版v1.21.51-で動作確認。

必要なものだけ追加して、テンプレートを作成。

ゲーム装置の起動と停止。

ゲーム装置は、起動と停止装置から設計していくと作りやすいです。コマンドの数が増えるので、ファンクションファイルで作るのがおすすめ。コマンドブロックの場合も、メモ帳などにコマンドを保存しておくと管理しやすくなります。目次は簡単なチャートになっています。

 

◻︎起動と停止装置 例

ロビーでボタンを押したらステージに移動。範囲から出たらロビーに戻る。

 

もっとも簡単な装置になります。ここからゲームらしくするため、効果音や開始と終了のメッセージなど追加すると思います。今回の記事は、この「起動と停止装置」に何を追加したら良いのかをまとめてあります。

※ステージに移動した時、ゲーム開始。メイン装置がゾンビバトルやパズルゲームになっても、「起動と停止装置」はあまり変わらないので、テンプレートが作れます。

 

 

目次

1.起動
・装置の起動スイッチ。
・ゲームルールの変更。
・スコアボードの作成。
・プレイヤーの管理。(開始)

2.ゲーム開始
・メイン装置の起動。

3.停止
・装置の停止方法。
・スコアの集計。
・プレイヤーの管理。(終了)

 

 

起動

ゲーム装置は、プレイヤーをうまく管理出来るかがポイントになります。プレイヤーのタグはゲーム装置の起動時に付けておくと便利です。※マルチプレイのタグ管理は、制作難易度が上がります。

装置の起動スイッチ。

ゲーム装置を起動するためのスイッチを作ります。動力部品、場所(座標)、ブロック検知の3種類の方法と、それぞれのデメリットをまとめました。好みやゲームのジャンルに合わせて変更してください。

 

◎動力部品

シングルプレイの場合は、レッドストーンの「動力部品」がお手軽です。ボタン、感圧版、トラップチェストを閉じた時など、動力が一回で切れるものがおすすめです。

◻︎ボタン 例

動力部品 ボタン、感圧版、トラップチェスト。(アイテムを取り出したら開始)

デメリット/ゲーム中に、他のプレイヤーがボタンを押せないよう工夫が必要。

 

◎場所(座標)とブロック検知

マルチプレイの場合は、「範囲」や「ブロック検知」がおすすめです。プレイヤーが特定の「範囲」に入った時、乗った時を検知してゲーム装置を起動します。

◻︎範囲とブロック検知 例

絶対座標 1箇所以上の座標から、引数を使って範囲を検知。
エンティティ基準 防具立てやNPCなど、エンティティを基準に範囲を検知。
ブロック検知 指定したブロックの上にプレイヤーがいる時を検知。

 

◻︎絶対座標 例

①execute at @a[x=0,y=-60,z=0,dx=10,dy=0,dz=10] run tag @p add red
②execute positioned 0 -60 0 run tag @p[distance=..5] add red

※②統合版 @p[r=5]

①座標(0 -60 0)を基準に、x10、y10の範囲。
②座標(0 -60 0)を中心に、半径5ブロックの円の範囲。

開始位置が決まっている場合に使用します。デメリット/入場制限が必要。プラグイン等で作ったサブワールドでは、座標が重複(ちょうふく)して使えません。

 

◻︎エンティティ基準 例

③execute at @e[name="防具立て"] run tag @p[distance=..5] add red

※統合版は「"」不要。@p[r=5]

③防具立てを中心に、半径5ブロックの円の範囲。

開始位置を変える事も可能。防具立てを消すことで、プレイヤーの入場も制限出来ます。デメリット/基準となるエンティティ(防具立てなど)が必要。

 

◻︎ブロック検知 例

④execute at @a if block ~ ~-1 ~ gold_block run tag @p add red

④金ブロックの上にプレイヤーが乗った時を検知。

使いやすいが、デメリットも大きい。デメリット/入場制限が必要。指定したブロック(金ブロック)が他の場所で使えなくなるので注意。

 

ゲームルールの変更。

ゲーム中のコマンドログの表示は必要ないので、非表示にします。アドベンチャーモードはブロックの設置や破壊を制限出来ます。必要があれば、スポーンポイントも設定しておきます。

◻︎コマンド 例

①gamerule commandBlockOutput false
②gamemode adventure @a
③gamerule spawnRadius 0

①ログを非表示。
②ゲームモードを変更。
③スポーン位置がずれないようにします。

 

スコアボードの作成。

得点、レベル、タイマー、チーム分け、スイッチなど使い道は多いです。スコアの表示位置は、サイドバー、名前の下、リスト、アクションバーなどがあります。スコアは得点を残すため、ゲーム開始時にリセットします。※Java版では統計を使って、プレイヤーの行動を数える事も出来ます。スニーク、キル数など。

◻︎コマンド 例

①scoreboard objectives add count dummy
②scoreboard objectives add score dummy "スコアボード名"
③scoreboard objectives setdisplay sidebar score

※②統合版は「"」不要。

①得点やレベルなど、計算用のスコアボードを作成。
②スコアを表示するスコアボードを作成。※スコアボード名は無くてもOK。
③「score」をサイドバーに表示。

 

プレイヤーの管理。(開始)

タグ付けは、起動スイッチと連動してください。時間や人数など、条件を付けてプレイヤーをステージに移動。ゲーム開始の合図は、効果音を鳴らしたりメッセージを表示します。※チーム分けは、タグやスコアボードでも十分ですが、teamコマンド(Java版)を使うと、さらに詳細な設定が可能です。

◎タグ付け、移動、開始音

◻︎コマンド 例

①tag @p add red
②tp @a[tag=red] ~ ~ ~
③playsound entity.player.levelup player @a[tag=red] ~ ~ ~ 1 1 1

※③統合版 random.levelup

①プレイヤーにタグ「red」を追加。
②タグ「red」をステージへテレポート。
③タグ「red」に経験値アップの効果音を再生。

 

ゲーム開始

メイン装置の起動。

メインのゲーム装置は、プレイヤーがステージに移動したら起動するように設計します。当サイトで公開している「ギャラリーゲームズ」や「データパック」も、テンプレートからメイン装置を入れ替えて作成しています。

 

停止

動作中のメイン装置を停止します。ゲームを終了する時は決まっています。

装置の停止方法。

ゲームを終了する時は、大きく分けて3パターンあります。引き分け・クリアは、終了する場合と続ける場合に分岐します。

◻︎ゲームを終了する時

強制終了・範囲外 途中でゲームをやめる場合。
死んだ時 プレイヤーが死亡した場合。
負け(引き分け・クリア) ゲームオーバーの場合。(リトライ・次のステージ)

 

◎強制終了・範囲外、死んだ時

プレイヤーが自分の意思でゲームをやめる場合と死んだ時の処理。アイテム検知、装備検知、動力部品、範囲設定などの方法があります。※Java版は統計を使って死亡を検知出来ます。

◻︎アイテム検知 例

ゲーム中プレイヤーが移動出来る場合は、アイテム検知がおすすめです。統合版はアイテムを持っているかどうかで、死亡した事も検知可能。※ゲームルール「アイテム保持」を確認。

①clear @p golden_shovel 0
②execute if entity @e[nbt={Item:{id:"minecraft:golden_shovel"}}]
③kill @e[type=item]

※②統合版 @e[name=金のシャベル]

①プレイヤーが金のシャベルを持っているかを検知。
②金のシャベルが落ちているかを検知。※統合版はアイテム名
③落ちているアイテムを削除。

 

◎負け(引き分け・クリア)

負け、制限時間が終了、ゲームクリアの場合はゲームオーバー。メイン装置を停止します。

 

スコアの集計。

ハイスコア、勝敗などゲームの結果を表示します。また、報酬を作るとゲームらしさがアップします。

◻︎コマンド 例

①scoreboard players operation ハイスコア score > 得点 score
②title @a title "赤の勝ち!"
③give @p golden_apple 1

※②統合版は 「"」不要。

①得点が多ければハイスコアに代入します。
②赤の勝ち!とメッセージを表示。
③報酬を作ります。その他、強化装備、エフェクトなど。

 

プレイヤーの管理。(終了)

終了音を鳴らしたり、プレイヤーをロビーに戻します。タグを付けている場合は、最後に削除します。

◎終了音、移動、タグ消し

◻︎コマンド 例

①playsound entity.firework_rocket.twinkle player @a[tag=red] ~ ~ ~ 1 1 1
②tp @a[tag=red] ~ ~ ~
③tag @p add red

※統合版 random.levelup

①タグ「red」に花火の効果音を再生。
②タグ「red」をテレポート。
③プレイヤーにタグ「red」を削除。