MC CommanderMinecraft非公式コマンド支援

UHC(体力が自然回復しないサバイバル)をコマンドで作る方法

UHC(ウルトラハードコア)は、体力が自然に回復しないルールで戦い、最後まで生き残った人が勝ちのサバイバルです。回復は金のリンゴやポーションだけになります。ゲームルール、ワールドボーダー、spreadplayers を組み合わせて作ります。Java版の書き方で説明します。

ミニゲームサバイバルJava版

scoreboardコマンドを作る

更新日:

1. ルールを決める(最初に一度だけ)

/gamerule natural_health_regeneration false
/difficulty hard
/gamerule keep_inventory false

1行目で、満腹でも体力が自然に回復しなくなります。1.21.10以前は naturalRegeneration という名前です。ゲームルールの新旧の名前は gamerule一覧 にまとめています。

2. 体力を表示する

/scoreboard objectives add hp health "♥"
/scoreboard objectives setdisplay list hp
/scoreboard objectives setdisplay below_name hp

health の基準は体力を自動で入れてくれます。list でTabキーの一覧に、below_name で頭の上の名前の下に体力が出ます。くわしくは 体力を表示するコマンド を見てください。

3. ワールドボーダーを用意する(最初に一度だけ)

/worldborder center 0 0
/worldborder set 1000

座標0, 0を中心に、1辺1000ブロックの四角い範囲だけで遊べるようにします。ボーダーの外にいると少しずつダメージを受けます。

4. スタート:ばらばらに配置する

/scoreboard objectives add died deathCount
/scoreboard players set @a died 0
/gamemode survival @a
/effect give @a instant_health 1 10 true
/spreadplayers 0 0 150 450 false @a
/worldborder set 50 3600s

ボタンで上から順に動くように並べます。spreadplayers は、中心から450ブロック以内に、おたがい150ブロック以上はなれるように全員をばらばらに置きます。チーム戦なら false を true にすると、同じチームの人が近くに置かれます。

最後の行で、ボーダーが3600秒(1時間)かけて1辺50ブロックまで少しずつ狭くなります。Java版1.21.11からは時間の数がティックになったので、秒で書くときは 3600s のように s を付けます。1.21.10以前は s を付けずに 3600(秒)と書きます。時間がたつほど全員が中央に集まるので、最後は戦うことになります。

5. 倒された人を観戦にする(くり返し)

/gamemode spectator @a[scores={died=1..},gamemode=survival]

くり返しコマンドブロック(常時実行)に入れます。1回でも倒された人はスペクテイターになり、残りの戦いを見て回れます。

6. 勝者を決める(くり返し)

/scoreboard objectives add uhc dummy
/execute store result score #alive uhc if entity @a[gamemode=survival]
/execute if score #alive uhc matches 1 unless entity @e[type=marker,tag=uhc_end] run title @a title [{"selector":"@a[gamemode=survival]"},{"text":" の勝ち!"}]
/execute if score #alive uhc matches 1 unless entity @e[type=marker,tag=uhc_end] run summon marker ~ ~ ~ {Tags:["uhc_end"]}

1行目は最初に一度だけ実行します。2〜4行目をくり返しとチェーンで並べます。サバイバルの人が1人だけになったら、その人の名前を出して勝ちを知らせます。知らせたあとに目印(marker)を出すので、タイトルは1回だけ出ます。次のゲームの前に /kill @e[type=marker,tag=uhc_end] で目印を消します。

うまくいかないときの確認ポイント

よくある質問

金のリンゴを作りやすくできますか?

スタート時に give @a golden_apple 1 のように少し配ると、序盤で倒されにくくなります。

チーム戦にできますか?

team コマンドでチームを分け、spreadplayers の最後の false を true にすると、チームごとに近くに配置されます。勝者の判定は、残っている人のチームを調べる形にします。

ボーダーの外のダメージを強くできますか?

worldborder damage amount で、外にいるときの1ブロックあたりのダメージを変えられます。

関連ページ

死んだ回数を表示するデス数をサイドバーに出します。worldborderコマンドの使い方

ボーダーを狭める方法です。

spreadplayersコマンドの使い方

ばらばらに配置する方法です。

体力を表示するコマンド

体力の出し方です。

gamerule一覧

ゲームルールの新旧の名前です。

コマンド辞典

基本構文とコマンド別の使い方を確認できます。