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

イベントの作成

webapp_banner.jpg

このガイドは EliteMobs 10 以降向けです

カスタムイベントとは?​

ここでのカスタムイベントとは、プレイヤーのアクションに基づくものであれ、時間制のトリガーを持つものであれ、ゲーム内でランダムに発生するイベントを指します。プラグインには、Balrog イベント、Kraken イベント、Treasure Goblin イベントなど、いくつかのカスタムイベントがあらかじめ読み込まれています。

このシステムがカスタムイベントと呼ばれるのは、イベントをカスタマイズできるだけでなく、ゼロから作成することもできるからです。以下は、独自のイベントを作成・カスタマイズする方法のガイドです。

カスタムイベントの作成​

カスタムイベントの設定ファイルは次の場所に作成すべきです。 plugins/EliteMobs/customevents/

ファイルは .yml 形式を使用する必要があります。参照には .yml 拡張子を含む完全なファイル名を使ってください。

例: my_cool_event.yml は my_cool_event.yml として参照されます

保存後に /em reload を実行して変更を読み込みます。events.yml のアクション/時間制イベント用の該当スイッチも有効にしてください。

共通の設定項目

次の設定は、アクションイベントと時間制イベントの両方で使用できます/すべきです。


isEnabled​

イベントが有効かどうかを設定します。

キー値デフォルト
isEnabledBooleantrue
例
isEnabled: true

eventType​

イベントのタイプを設定します。

キー値デフォルト
eventTypeBREAK_BLOCK / FISH / TILL_SOIL / TIMEDDEFAULT

BREAK_BLOCK、FISH、TILL_SOIL は アクションイベント であり、TIMED は 時間制イベント である点に注意してください。

eventType は必須です。 DEFAULT は、この設定が欠けているか上記のどのタイプにも一致しないときに EliteMobs がフォールバックするプレースホルダーです。DEFAULT のままのイベントは警告をログに出力し、そもそも登録されないため、それ以降の設定は一切読み取られません。

例
eventType: BREAK_BLOCK

bossFilenames​

一緒にスポーンするカスタムボスのファイル名を、.yml を含めて列挙します。必須です。 リストからランダムに1体を選ぶ設定ではありません。イベントを使う前に参照先をすべて確認してください。時間制イベントは無効なファイル名を飛ばし、有効なボスがなければキューに入りません。アクションイベントは無効なファイル名が 1 つでもあると何もスポーンする前にキャンセルされ、ボスのスポーンが拒否された場合は、それまでにスポーンしたボスが削除されます。

キー値デフォルト
bossFilenamesString Listなし
例
bossFilenames:
- balrog.yml
- my_event_boss.yml

announcementPriority​

開始・終了メッセージの送信先を設定します。イベントの優先度はボスのアナウンス優先度とは動作が異なります。

優先度送信先
0イベントのワールド内のプレイヤー。メッセージは無効になりません
1全オンラインプレイヤー。announcementBroadcastWorldOnly: true ならイベントのワールド内のみ
2イベントのワールド内のプレイヤー
3 以上イベントのワールド内のプレイヤーと、設定済みの DiscordSRV

該当メッセージを送らない場合は startMessage または endMessage を省略します。ボス自身のスポーン通知は別です。

キー値デフォルト
announcementPriorityInteger0
例
announcementPriority: 1

startMessage​

時間制イベントをキューに入れた時点ではなく、実際に開始した時点のメッセージを設定します。開始・終了メッセージは色指定に対応しますが、$boss や $player などのボス/プレイヤープレースホルダーは置換されません。

キー値デフォルト
startMessageStringなし
例
startMessage: An event has started!

create_events_start_message.jpg


endMessage​

イベント終了時に送信されるメッセージを設定します。

キー値デフォルト
endMessageStringなし
例
endMessage: An event has ended!

create_events_end_message.jpg


eventStartCommands​

開始時にコンソールとして実行するコマンドです。先頭の / は付けず、プレイヤー/ボスのプレースホルダーも渡されません。各コマンドは独立しており、$chance=0.5$ を付けるとそのコマンドの実行確率が50%になります。0~1 の値を使ってください。省略時は必ず実行します。

キー値デフォルト
eventStartCommandsString Listなし
例
eventStartCommands:
- say The event now starts!!
- "$chance=0.5$ say What a spawn!"

create_events_start_commands.jpg


eventEndCommands​

終了時に次のサーバータスクへ予約するコンソールコマンドです。構文とコマンドごとの確率は eventStartCommands と同じで、プレイヤー/ボスのプレースホルダーはありません。

キー値デフォルト
eventEndCommandsString Listなし
例
eventEndCommands:
- say The event ends, so sad.
- "$chance=0.5$ say Too slow bud!"

create_events_end_commands.jpg


minimumPlayerCount​

必要なオンライン人数の下限です。全ワールド・全ゲームモードを数え、近くの参加可能なプレイヤーだけを数えるものではありません。

アクションイベントは、操作によって発動したときにこれを確認します。時間制イベントは、自動選択でイベントを選ぶとき、キューに入ったイベントが位置を探索する前、そしてボスがスポーンする直前にもう一度確認します。キューに入った時間制イベントは十分な人数がオンラインになるまで待機し、さらにカスタムスポーン独自のプレイヤー・位置チェックによって適切な場所を見つける必要があります。

キー値デフォルト
minimumPlayerCountInteger1
例
minimumPlayerCount: 5

イベント設定の例

共通設定のみの例です。完全な時間制イベントには spawnType と正の選択ウェイトも必要です。

isEnabled: true
eventType: TIMED
bossFilenames:
- "cool_boss.yml"
- "other_cool_boss.yml"
announcementPriority: 3
startMessage: "Cool event is starting!"
endMessage: "Cool event is ending!"
eventStartCommands:
- say The event started!
eventEndCommands:
- say The event ended!

時間制イベントの完全な例
isEnabled: true
eventType: TIMED
bossFilenames:
- "my_timed_boss.yml"
announcementPriority: 3
startMessage: "A timed event has started!"
endMessage: "The timed event has ended!"
eventStartCommands:
- say The timed event began!
eventEndCommands:
- say The timed event concluded!
spawnType: "my_spawn_location.yml"
localCooldown: 120
globalCooldown: 30
weight: 100
eventDuration: 15
endEventWithBossDeath: true

アクションイベント​

ブロックの破壊や釣りなど、特定のアクションが発生したときに、一定の確率で実行されるイベントです。

アクションイベントの開始時にはプレイヤーごとのクールダウンを適用します。既定値は4分で、events.yml の actionEventMinimumCooldownMinutes で変更できます。1 回の操作で開始するアクションイベントは 1 つだけです。該当するファイルが 1 つ開始するとプレイヤーはクールダウンに入り、残りのファイルはスキップされます。開始に失敗したイベントはクールダウンを消費しません。actionEventsEnabled: false でサーバー全体のアクションイベントを無効にできます。

3 つのアクションタイプは次のようにトリガーされます。

eventTypeトリガー
BREAK_BLOCKプレイヤーがブロックを破壊したとき。まず chance が判定され、その後に破壊されたブロックが breakableMaterials と照合されます。
FISH釣りイベントに捕獲対象のエンティティがある場合。針にかかったモブも含みます。対象がなければ発生せず、スポーン位置は対象エンティティの位置です。
TILL_SOILメインハンドに木・石・鉄・金・ダイヤモンド・ネザライトのクワを持ち、DIRT または GRASS_BLOCK を右クリックした場合。実際に耕地へ変わったかは確認しません。

キャンセル済みの Bukkit イベントは無視します。位置は EliteMobs が有効なワールド内で、EliteMobs のダンジョンワールドと、ダンジョン・アリーナ・クラス試練のインスタンス領域の外にあり、WorldGuard の elitemobs-events フラグで許可されている必要があります。これらのリスナーはゲームモードを別途制限しません。

スポーン位置は操作場所です。ブロック破壊ではブロックの X/Z 中央、釣りでは捕獲対象の位置、耕作ではクリックした土の1ブロック上です。spawnType や時間制イベントの選択ウェイト・選択クールダウンは使いません。

suppressEvents が有効な場合、Peace Banner の保護もイベントを阻止します。下記の継続時間・終了時刻・ボス削除による終了チェックは、アクションイベントにも適用されます。

chance​

アクションが発生したときにイベントが起こる確率を設定します。

キー値デフォルト
chance0.0 から 1.0 までの値0
例
chance: 0.001

breakableMaterials​

アクションが BREAK_BLOCK に設定されている場合にチェックするマテリアルのリストを設定します。

キー値デフォルト
breakableMaterialsマテリアル のリストなし
例
breakableMaterials:
- BEEHIVE
- BIRCH_WOOD

設定の例
chance: 0.001
breakableMaterials:
- COAL_ORE

イベントタイプが BREAK_BLOCK であると仮定して、石炭鉱石ブロックが破壊されたときに 0.1% の確率でイベントを実行するように設定します。


アクションイベントの完全な例
isEnabled: true
eventType: BREAK_BLOCK
bossFilenames:
- "mining_boss.yml"
announcementPriority: 2
startMessage: "You've awakened something..."
chance: 0.001
breakableMaterials:
- DIAMOND_ORE
- EMERALD_ORE

時間制イベント​

時間制イベントは重み付きの自動選択を経て、カスタムスポーンのキューに入ります。選択されても即時スポーンや固定スケジュールは保証されません。異なるファイルのイベントは同時に待機・実行できます。

オンラインプレイヤーがいなければ自動選択しません。同じファイルのコピーが待機中または実行中の場合や、オンライン人数がその minimumPlayerCount に満たない場合は、自動選択の候補から除外します。events.yml の timedEventsEnabled: false でサーバー全体の時間制イベントを無効にできます。

spawnType​

イベントが使用する カスタムスポーン を設定します。これはボスがスポーンできる場所を定義します。

キー値デフォルト
spawnTypeFilenameなし
例
spawnType: nether_spawn.yml

localCooldown​

このイベントを再び自動選択できるまでの分数を、選択時点から数えます。その後の検証や他プラグインによってキューへの追加が阻止されても、この待ち時間は消費されます。待機中・実行中のコピーがあれば、時間が経過しても自動再選択されません。

キー値デフォルト
localCooldownDouble0
例
localCooldown: 120

globalCooldown​

全体の自動選択待ち時間を分単位で設定します。キューへの追加成功時と実際の開始時にそれぞれ設定され、手動で追加したイベントも対象です。イベント終了から数えるものではありません。後から設定した期限が以前の期限を置き換えます。

キー値デフォルト
globalCooldownDouble0
例
globalCooldown: 60

weight​

現在選択可能な時間制イベント間の相対ウェイトです。有限の正数を使ってください。推奨: 100。特に候補のウェイトがすべてゼロの場合、ゼロを設定しても確実には無効になりません。無効化には isEnabled: false を使います。

重みシステムは、イベント選択の相対的な確率を決定します。例えば次のとおりです。

  • 重み 100 のイベント A と重み 50 のイベント B の比較 = イベント A が選ばれる確率は 2 倍
  • 重みが大きいほど選ばれる確率が高くなる
  • スケジューラーの初回チェックは初期化の約5分後、その後は1分ごとです。サーバーのラグで遅れる場合があります。
キー値デフォルト
weightDouble0
例
weight: 60.5

eventDuration​

実際の開始からの継続時間制限を分単位で設定します。0 と負数ではチェックを無効にします。監視処理は20サーバーティックごとにチェックするため、イベントの終了は最大1秒、サーバーのラグがあるとそれ以上遅れることがあります。アクションイベントにも適用されます。

キー値デフォルト
eventDurationDouble0
例
eventDuration: 30

endEventWithBossDeath​

主要ボスのオブジェクトがすべて存在しなくなると終了します。bossFilenames が複数なら、1体を倒す・削除するだけでは他が残る限り終了しません。増援は追加の主要ボスとして数えません。存在を調べるため、プレイヤーの討伐実績に結び付く死亡は不要です。理由を問わずイベントが終了すると、残った主要ボスはタイムアウト扱いで削除されます。アクションイベントにも適用されます。

キー値デフォルト
endEventWithBossDeathBooleantrue
例
endEventWithBossDeath: true

eventEndTime​

イベントが終了するゲーム内時刻(ティック単位)を設定します。Minecraft の時刻システムを使用します(0=夜明け、6000=正午、12000=日暮れ、18000=真夜中、23000=深夜)。時刻ベースの終了を無効にするには -1 を設定します。

条件は ワールド時刻 > eventEndTime です。翌日や正確な境界通過を待ちません。その時刻を過ぎて開始すると、最初の監視チェックで終了する場合があります。スポーン可能時間帯と終了時刻を合わせてください。ワールド時刻は 0~23999 のため、23999 以上のしきい値を超えることはありません。アクションイベントにも適用されます。

キー値デフォルト
eventEndTimeInteger(到達可能なしきい値は 0~23998、-1 で無効)-1
例
eventEndTime: 23000


キューへの追加でカスタムスポーンの位置探索と再試行が始まります。保存した位置で時刻や月齢を待つ場合があり、その待機中にすべての位置チェックを繰り返すわけではありません。チェック内容と制限は上記リンクのカスタムスポーンガイドを参照してください。時間制イベントは一度に 1 つずつしかスポーンせず、スポーンは minimumPlayerCount と timedEventMinimumCooldownMinutes の間隔も待ちます。時間制イベントが主要ボスの存在を確認してから、開始メッセージと開始コマンドを実行します。

イベント設定の例
isEnabled: true
eventType: TIMED
bossFilenames:
- "cool_boss.yml"
- "other_cool_boss.yml"
announcementPriority: 3
startMessage: "Cool event is starting!"
endMessage: "Cool event is ending!"
eventStartCommands:
- say The event started!
eventEndCommands:
- say The event ended!
spawnType: "myCoolSpawn.yml"
localCooldown: 30
globalCooldown: 15
weight: 100
eventDuration: 20
endEventWithBossDeath: true
eventEndTime: 10000

イベントを手動でトリガーする​

/em event <event filename>

有効な時刻と場所で開始するよう時間制イベントをキューに入れます。elitemobs.event.start 権限を持つプレイヤーが実行し、読み込み済みの時間制イベント定義だけを受け付けます。これらは timedEventsEnabled が有効なとき、有効な TIMED ファイルから作成されます。

このコマンドは重み付き選択、ローカル/グローバルの選択クールダウン、待機中・実行中コピーの確認を省略します。繰り返すと重複したコピーがキューに入る場合があります。カスタムスポーンの位置・時刻条件、イベントの minimumPlayerCount、timedEventMinimumCooldownMinutes の間隔は引き続き適用されます。

追加できない場合は理由を通知します。spawnType の欠落・無効な参照、有効な bossFilenames がない、他プラグインによるキャンセルなどです。成功メッセージはキューへの追加を確認するもので、目に見えるスポーンの証明ではありません。実際のボスとコンソールの再試行ログを確認してください。

サーバー全体のイベント設定​

plugins/EliteMobs/events.yml にあります。編集後に再読み込みしてください。

キー説明デフォルト
actionEventsEnabledアクションイベントを発生させるかどうかtrue
timedEventsEnabled時間制イベントを発生させるかどうかtrue
actionEventMinimumCooldownMinutesアクションイベント発動後の、プレイヤーごとのクールダウン(分)4
timedEventMinimumCooldownMinutes時間制イベントの開始後、別の時間制イベントが位置探索やボスのスポーンを行えるようになるまでの待ち時間(分)。すでに保存位置で待機しているものにも適用されます4
announcementBroadcastWorldOnly優先度 1 のメッセージをイベントのワールド内に制限します。他の優先度のゲーム内メッセージは元からそのワールド内のみですfalse