メインコンテンツまでスキップ

ワールドボスの作成

ワールドボスはリージョナルボスと呼ばれることもあります。

ワールドボスとは?​

ワールドボスは、特定の場所に特定の間隔でスポーンするように設定されたカスタムボスです。これらはダンジョンで使用されるボスでもあります。ただし、このセクションでは特に、ダンジョンの外で使用するワールドボスの作成について説明します。

何のためのもの?​

ワールドボスは、ルートが報われるものであると分かったうえで、プレイヤーが固定された挑戦に立ち向かうことを可能にします。

ワールドボスを作るには何が必要?​

  1. 場所。Minecraft のアグロ範囲のため、半径約 15 ブロック(直径 30 ブロック)程度のボス部屋を推奨します。さらに、地形が WorldGuard リージョンで保護されていること(プレイヤーが罠を作れないように)、そして地形が戦闘に悪用できないことを確認してください。
  2. リスポーン時間。リスポーンタイマーは不可欠です。30 分未満のリスポーンタイマーは推奨しません。さもないとボスのリスポーンがイベントとしての価値を失います。1 時間はかなり良い時間ですが、ボスを 1 日に 1 回、あるいは 1 週間に 1 回だけリスポーンさせるようにしたい場合もあるでしょう。
  3. 逃走時間。リスポーンが長いほど、逃走時間も長くするべきです。また、逃走時間は人々が快適にボスに挑戦できるくらい長くするべきだということも考慮してください。逃走タイマーは、プレイヤーがボスを倒すために特攻するのを許したくない場合に重要です。これは必須ではなく、1 週間に及ぶような長いリスポーンのボスを作りたい場合には推奨すらされません。
  4. カスタムボス。ワールドボスは実際には、カスタムスポーンルールを持つカスタムボスにすぎません。レイドサイズの戦闘との相性が良いパワーを選ぶようにしてください。
  5. 魅力的なルート。ワールドボスの大きな魅力は、挑戦は別として、ルートです。プレイヤーがほかの場所では決して手に入れられないものを、そこから入手できるようにしてください。
  6. テーマ。良いリージョナルボスにはテーマがあるべきで、テーマに沿った場所とテーマに沿ったルートを備えているべきです。

ワールドボス用カスタムボス設定オプション​

これらの設定は、通常のカスタムボス設定ファイルに追加します。それらに関する詳細な wiki ページはこちらにあります。


isRegionalBoss​

ボスがリージョナルボスかどうかを設定します。リージョナルボスはワールドボスの別名なので、これを true に設定したいでしょう。

KeyValuesDefault
isRegionalBossBooleanfalse
例
isRegionalBoss: true

spawnLocations​

スポーン位置は、ゲーム内からコマンド /em place boss <filename.yml> を使って設定するべきです。

isRegionalBoss: true のボス設定を読み込んでから、elitemobs.place.admin 権限を持つプレイヤーとして実行します。実行するたびに同じボスの設置位置が追加されます。コマンドは位置をブロックの中心に合わせ、上方向へ通行可能な場所を探します。ボスが収まる空間があるか確認してください。

config から手動で位置を追加することも可能ですが、あまりにも簡単に間違えてしまうため、それを試すことは推奨しません。

KeyValuesDefault
spawnLocationsString Listnone
例

設定ファイル内の位置(上級者向け) リージョナルボスの設定ファイルは、複数のスポーン位置とリスポーンタイマーを保存することで、そのリージョナルボスのすべてのインスタンスを 1 つのファイルに保存します。

実際には、つまり次のエントリは:

spawnLocations:
- elitemobs_sewer_maze,-70.17178578884845,168.2,-173.17112099568718,-271.24023,64.19999:1610710903931
- elitemobs_sewer_maze,-135.02262355317436,168.2,-153.28849346821508,-98.53906,60.750263:1609026066482
- elitemobs_sewer_maze,-70.43846307626053,168.2,-174.13499832314378,-271.24023,64.19999:1610710886530
- elitemobs_sewer_maze,-130.39762674971664,168.2,-171.67396911490718,-47.532227,51.900173:1609026066482
- elitemobs_sewer_maze,-117.12782160766056,162.2,-166.40989416757444,-71.37402,-1.4997427:1610710974882
- elitemobs_sewer_maze,-105.13138759611667,168.2,-169.85898023126538,-124.34766,41.24988:1610710945331
- elitemobs_sewer_maze,-106.21847515732084,169.2,-152.3609257554766,-170.86523,21.450315:1610537606222

異なる場所、異なるリスポーンタイマーを持つ、7 体の異なるリージョナルボスを含んでいます。

最初のリージョナルボスを見て、詳細を分解してみましょう:

- elitemobs_sewer_maze,-70.17178578884845,168.2,-173.17112099568718,-271.24023,64.19999:1610710903931

これは world,x,y,z,yaw,pitch:unixTimeStamp という形式に従っているため、ボスは elitemobs_sewer_maze というワールドの x = -70.17178578884845、y = 168.2、z = -173.17112099568718、yaw = -271.24023、pitch = 64.19999 にスポーンします。

タイムスタンプは Unix エポックからのミリ秒でリスポーン期限を保存し、再起動後も保持します。確認にはミリ秒を扱える変換ツールを使ってください。

保存された期限を解除するには、サーバーを停止してから末尾の :unixTimeStamp をコロンごと削除します。形式は world,x,y,z,yaw,pitch になります。動作中のプラグインは設置情報を定期保存するため、手動編集を上書きすることがあります。期限がない設置済みボスは、ワールドとチャンクがスポーン可能になったときに、スポーン告知なしで復元されます。


spawnCooldown​

死亡またはタイムアウトから次のスポーン試行までの時間を分単位で設定します。0 は即時試行を予約し、負の値は予約リスポーンを無効にします。実体が出現するにはワールドとチャンクが利用可能である必要があります。巡回ボスには、エンティティの更新が行われる位置も必要です。

注意: 大きなボスには長めのリスポーンを推奨します!

KeyValuesDefault
spawnCooldownInteger0
例
spawnCooldown: 20

timeout​

スポーンから逃走までの時間を分単位で設定します。戦闘開始からの時間ではありません。1 未満で無効になります。チャンクやワールドの読み込み、または再起動後にリージョナルボスを復元すると、全時間を最初から計測します。期限は永続保存されません。フェーズ変更では現在の遭遇のタイマーが維持されます。

注意: これはプレイヤーが快適に戦闘を完了できるくらい長くするべきです。

KeyValuesDefault
timeoutInteger0
例
timeout: 60

倒されなかった場合、ボスが 60 分後に逃走するように設定します。


leashRadius​

設置位置を中心とする帰還範囲を設定します。ネイティブ経路探索では、対応するクリーチャーは半分の半径で緩やかな帰還を始め、強制帰還には全半径を使います。帰還できなければテレポートすることがあります。エンダードラゴンはこれらのネイティブ目標の対象外です。ネイティブ経路探索がない場合は 3 秒ごとに確認し、全半径を超えたボスを戻します。この代替処理には 1 以上の半径が必要です。ネイティブの帰還が完了したとき、ボスの体力が全回復するのは MobCombatSettings.yml の regenerateCustomBossHealthOnCombatEnd(デフォルト true)が有効な場合だけです。

注意: 戦闘エリアにリーシュを必要とさせる場合、20 ブロックより短いリーシュは戦いを悪化させるので避けるようにしてください。

KeyValuesDefault
leashRadiusDouble0(無効)
例
leashRadius: 30

escapeMessage​

タイムアウトによる逃走時に、ボスと同じワールドのプレイヤーへ送るメッセージです。空でないメッセージと 1 以上の announcementPriority が必要です。3 以上なら設定済みの Discord 連携にも送ります。逃走するとボスを削除してリスポーン待機を始めますが、removeAfterDeath: true の場合は設置情報を恒久削除します。

KeyValuesDefault
escapeMessageStringnone
例
escapeMessage: "&cThe World Boss has escaped!"

announcementPriority​

告知と追跡対象になるかを制御します。メッセージの設定が必要です。追跡には MobCombatSettings.yml の showCustomBossLocation も必要です。locationMessage は任意です。

LevelBehavior
0スポーン・逃走告知と追跡は無効。設定済みの死亡メッセージは攻撃者に届くことがある
1設定済みのスポーン・死亡・逃走メッセージと、有効なら /em からの追跡
2レベル 1 と同一(追加の動作はなし)
3レベル 1 + Discord 通知(設定されている場合)

スポーン告知は events.yml の announcementBroadcastWorldOnly に従います。正の優先度の死亡告知はサーバー全体に届き、MobCombatSettings.yml の doCustomEliteMobsDeathMessages も必要です。逃走告知は同じワールドだけです。復元されたボスはスポーン告知を繰り返さずに追跡できます。優先度は明示してください。メッセージを追加してもデフォルトの 0 は自動変更されません。

KeyValuesDefault
announcementPriorityInteger0
例
announcementPriority: 3

ボスがチャットと Discord で告知し、プレイヤーがトラッキングできるように設定します。


isPersistent​

チャンクのアンロード後に復元できるようボスを保持します。アンロード中は実体を削除し、対応するチャンクの読み込み時に復元します。チャンクを読み込み続けたり、戦闘を継続させたりする設定ではありません。

設置されたリージョナルボスは独自のライフサイクルで永続化を有効にするため、通常のカスタムボス用のこの設定には依存しません。

注意: 永続的なボスが多すぎる(数百体)と、パフォーマンスの問題を引き起こす可能性があります。

KeyValuesDefault
isPersistentBooleanfalse
例
isPersistent: true

removeAfterDeath​

ワールドボスが倒された後、恒久的に削除されるかどうかを決定します。一度きりのイベントボスや、リスポーンすべきでない特別な遭遇に便利です。

デフォルトの false では、死亡またはタイムアウト後に spawnCooldown を待って次のスポーンを予約します。負の値なら予約しません。

true では、死亡またはタイムアウトで設置済みボスをスポーン位置一覧から恒久削除します。

KeyValuesDefault
removeAfterDeathBooleanfalse
例
removeAfterDeath: true

Transitive Blocks​

トランジティブブロックはonSpawnBlockStatesとonRemoveBlockStatesで設定します。これらには、以下で説明するON_SPAWNとON_REMOVEの各状態で適用するブロックの変更を保存します。

これがボスにドア/エリアを開閉させたり、フェーズボスと併用すればさらに戦闘中にアリーナを変化させたりする方法です!

KeyValuesDefault
onSpawnBlockStates詳細な説明を参照none
KeyValuesDefault
onRemoveBlockStates詳細な説明を参照none
詳細な説明

すべてのブロックはスポーン位置に対して相対的です。ブロックを設定し始める前に、必ず最終的なスポーン位置を決めておいてください。

エディターは elitemobs.transitiveblocks 権限を持つプレイヤーが使います。記録中はリージョナルボスを 1 体だけ設置してください。同じ設定に複数の設置位置があると拒否されます。フェーズ設定は親のリージョナルボスを使えます。保存するのはブロックデータで、コンテナーの中身やその他のブロックエンティティ内容は含みません。ボスの yaw による回転も行いません。


すでに大きな Transitive Block エリアを作成しており、ボスを移動させる必要があるが、Transitive Block をやり直したくない場合。その場合は、EliteScript の Teleport アクションを使って、スポーン後にボスを正しい位置に移動させることができます。それに応じてリーシュを調整する必要があることは覚えておいてください。

ブロックの設定は複雑なため、これを手動で行うことは推奨しません。次のコマンドを使って行うべきです:

  • /em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>
  • /em transitiveBlocks edit <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>
  • /em transitiveBlocks registerArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>
  • /em transitiveBlocks editArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>
  • /em transitiveBlocks cancel

これを分解してみましょう。

/em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

1 回実行すると ON_SPAWN または ON_REMOVE の新しい選択を始め、再実行すると保存します。新規登録はその状態の以前の一覧を置き換えます。別のファイルや状態を始める前に、現在の選択を完了またはキャンセルしてください。選択中に別の有効な登録・編集コマンドを実行すると、現在のセッションを保存します。

ON_SPAWN はスポーン・リスポーン時に保存済みブロックを適用します。ON_REMOVE は死亡、kill コマンド、および次のフェーズのブロック設定に切り替える前のフェーズ進行時に適用します。タイムアウト、全回復によるフェーズリセット、リロード、停止では討伐済み状態を適用しません。

記録中に右クリックするとブロックの現在の状態を保存し、左クリックするとその位置に空気を保存します。クリックはキャンセルされるため、ブロックを置いたり壊したりせずに状態を選択します。各位置は 1 回だけ保存されます。保存済みの位置をもう一方のボタンでクリックすると、その位置は選択から外れます。ボスのワールド以外でのクリックは、メッセージとともに拒否されます。コマンドを再実行して保存してください。

/em transitiveBlocks edit <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

すでに設定されたブロックを変更したい場合は、このコマンドを使えます。/em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE> とよく似た方法で機能します。

/em transitiveBlocks registerArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

/em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE> と同様にブロックを登録できますが、個別にブロックを選択する代わりに、対角線上にある 2 つの角を取得すること(worldedit / worldguard のリージョン選択と同じ)で選択できます。

一方の角を左クリック、反対側を右クリックし、コマンドを再実行して範囲を保存します。両方の角はボスのワールド内にある必要があり、保存時にもそのワールドにいる必要があります。そうでない場合、EliteMobs はメッセージを表示して保存を拒否し、選択は有効なまま保持されます。範囲内のブロックは、同じ位置で既に選択されているブロックを置き換えます。

config.yml の defaultTransitiveBlockLimiter はデフォルト 500 ですが、現在は警告するだけで、大きすぎる選択も保存します。範囲は小さく保ってください。状態の適用時には対象チャンクを読み込み、全ブロックを 1 ティックで変更するため、大きな範囲ではラグの原因になります。

/em transitiveBlocks editArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

既存の保存状態を読み込み、選択範囲の現在のブロック状態を追加します。角の選択とサイズ警告は registerArea と同じです。

/em transitiveBlocks cancel

未保存の選択を破棄します。ワールドで実際に行った建築や、ボス設定に保存済みの変更は元に戻しません。


大規模リージョナルボス戦を作るためのヒント​

  1. カスタムボスのパワーが互いにどのように補い合うかを実際に考えましょう。ボスが何かを詠唱しているために、ほとんどの時間を止まったまま過ごすようなことは避けたいものです。それは実際に戦いをとても簡単にしてしまうことがあるからです。また、何か非常に特定のものを設計しているのでない限り、ボスが遠隔攻撃ばかりで近接パワーがない、あるいはその逆になることも避けたいものです。プレイテストは重要です。

  2. 上限を考慮して体力を決める。 体力はサーバーで有効な settings.attribute.maxHealth.max、通常 2048 に制限されます。healthMultiplier: 10.0 ではレベル 33 で上限に達します。それ以上レベルを上げても体力は増えず、戦闘の計算だけが変わります。大きな倍率と高い level を組み合わせる前に healthMultiplier を確認してください。

  3. ダメージ - 多すぎないように。EliteMobs はデフォルトですでに極めて致命的であり、パワーは指数関数的にさらに致命的になる傾向があります。ダメージを天井知らずに上げる代わりに、パワーを使ってボスがより強く攻撃するようにすることを検討してください。

  4. 悪用の隙、いたるところに。地形が悪用できないことを念入りに確認してください。人々が遠くから狙撃しようとするのを防ぐため、ボスを閉じた部屋に入れてください。矢無敵パワーは、Minecraft の Mob はチャンク何個分も離れた場所から狙撃されることに対処できないため、多くのワールドボスにとっておそらく極めて重要です。弓攻撃を許可したい場合は、弓が悪用できないことを必ず確認してください。

  5. プラグインを知る。EliteMobs を攻略するための小さなコツがたくさんあります。たとえば、いくつかのパワーは盾を使うことで対抗でき、ほかのパワーは回避によって、あるいは一時的にボスから逃げることによって対抗すべきです。パワーがどのように機能し、どのように対抗されるかをよく知るほど、あなたが作るボスはより良いものになります。


完全なワールドボスの例​

主な設定を組み合わせた例です。ワールドと座標を自分の環境に変更し、指定したパワーとカスタムアイテムを有効にしてください。アリーナのブロック変更はゲーム内で記録します。例の 1 ブロックは形式を示すためのものです。

isEnabled: true
entityType: ZOMBIE
name: "&cThe Zombie King"
level: 30
healthMultiplier: 10.0
damageMultiplier: 2.0

# World Boss specific settings
isRegionalBoss: true
isPersistent: true

# Spawn settings
spawnLocations:
- world,100,64,100,0,0
spawnCooldown: 60

# Combat boundaries
leashRadius: 30
timeout: 20

# Messages and announcements
spawnMessage: "&cThe Zombie King has risen!"
deathMessage: "&aThe Zombie King has been defeated by $players!"
escapeMessage: "&eThe Zombie King has escaped..."
announcementPriority: 2

# Arena modification
onSpawnBlockStates:
- 0,0,0/minecraft:barrier
onRemoveBlockStates:
- 0,0,0/minecraft:air

# Boss features
powers:
- zombie_friends.lua
- ground_pound.lua
uniqueLootList:
- filename=magmaguys_toothpick.yml:chance=1.0

このボスは次のことを行います:

  • 死亡またはタイムアウトの 60 分後にスポーンを予約し、ワールドとチャンクが利用可能になったときに出現します
  • 倒されなければスポーンまたは復元から 20 分後に逃走します
  • スポーン/死亡/逃走をチャットで告知し、プレイヤーのトラッキングを許可します
  • チャンクの再読み込み時に復元されます
  • スポーン時と死亡時にアリーナのブロックを変更します
  • 倒されたときにユニークなルートをドロップします
レベルを上げる前に体力上限を確認

レベル 30、healthMultiplier: 10.0 の例は、デフォルトの上限では体力 1400 です。レベル 33 で 2048 に達します。基礎体力は倍率を掛ける前に制限され、倍率適用後も再び制限されます。そのため、基礎体力が上限に達した後は、倍率を下げてもレベルによる体力増加は戻りません。healthMultiplier を参照してください。