クエストの作成
クエスト例
EliteMobs には test_quest.yml が標準で同梱されており、ここではそれを、これから従うべきシンプルなクエスト形式として解説します。
カスタムクエストは ~plugins/EliteMobs/customquests フォルダにあります!
test_quest.yml
isEnabled: true
customObjectives:
Objective1:
amount: '1'
filename: test_boss.yml
objectiveType: KILL_CUSTOM
customRewards:
- filename=magmaguys_toothpick.yml:amount=1:chance=1
name: "&aKill the Test Boss"
questLore:
- "&cEnd the test boss'' reign of terror!"

クエストの UI がこのように表示されない場合は、/em alt を使って一致するように変更できます。
このクエスト例では、プレイヤーに test_boss.yml を 1 体倒すという課題が与えられます。(クエストトラッカーに表示されるボスの実際の名前は、test_boss.yml に設定された name: になります。)そしてクエスト達成の報酬として、Magmaguy's Toothpick が 1 つ与えられます。
カスタムクエストの作成
isEnabled
クエストが有効かどうかを設定します。
| Key | Values | Default |
|---|---|---|
isEnabled | Boolean | true |
例
isEnabled: true
customObjectives
クエストの目標を設定します。
| Key | Values | Default |
|---|---|---|
customObjectives | Special [1] | none |
注意: 目標としてマルチフェーズボスを使用する場合、目標は最初のフェーズをターゲットとして使用する必要があります。
例
KILL_CUSTOM:
customObjectives:
Objective1:
amount: '1'
filename: my_cool_boss.yml
objectiveType: KILL_CUSTOM
DIALOG:
customObjectives:
Objective1:
dialog:
- "&a[Dialog NPC] &fCome here often?"
- "&7&oI should eat more apples."
filename: dialog_npc.yml
npcName: Dialog NPC
location: at dialog location.
objectiveType: DIALOG
FETCH_ITEM:
customObjectives:
Objective1:
amount: '99'
itemName: Red Apples
filename: my_quest_item_red_apples.yml
objectiveType: FETCH_ITEM
ARENA:
customObjectives:
Objective1:
objectiveType: ARENA
filename: my_arena.yml
name: "Complete the Arena"

Special [1]
テーブルを展開
カスタム目標は以下の値を使って構成します:
| Key | Description |
|---|---|
objectiveType | この目標がどの種類を表すかを設定するために使用します。有効な値は KILL_CUSTOM、FETCH_ITEM、DIALOG、ARENA です。KILL_CUSTOM はクエストが特定のカスタムボスを倒すものであることを示し、FETCH_ITEM はクエストが特定のカスタムアイテムを入手するものであることを示し、DIALOG はクエストが NPC との会話を含むものであることを示し、ARENA はクエストが特定のアリーナの攻略を含むものであることを示します。 |
filename | プレイヤーが倒す/入手すべきカスタムボスやカスタムアイテム、会話すべき NPC、攻略すべきアリーナのファイル名を設定するために使用します。必須です — filename のない目標は、コンソールに警告を出したうえで破棄されます。 |
amount | 倒すべきカスタムボスの数、または入手すべきアイテムの数を設定するために使用します。指定しない場合は 1 になります。DIALOG(常に 1)と ARENA では無視されます。 |
dialog | DIALOG 専用 — プレイヤーが会話したときに NPC が言うセリフです。 |
location | DIALOG 専用 — NPC がどこにいるかの自由記述のヒントで、クエストメニューの要約行に $location として表示されます。 |
name / npcName / itemName | 同じフィールドに対する 3 つの互換的な名前です。クエストトラッカーやメニューに表示される目標対象の表示名で、表示目的のみです。目標の種類に合わせて読みやすいものを使ってください。FETCH_ITEM で省略した場合は、カスタムアイテムファイルに設定された name にフォールバックします。 |
各目標は customObjectives の中の独自のキー(Objective1、Objective2、…)の下に置かれ、そのフィールドは通常の YAML キーです。単一行の KILL_CUSTOM:filename=X.yml:amount=Y 文字列形式を使っていた古いクエストファイルは、初回読み込み時に自動的にこのレイアウトへ変換され、ディスクに保存し直されます。
FETCH_ITEM の挙動
FETCH_ITEM の進捗は、プレイヤーがアイテムを拾ったり落としたりしたとき、クエストを受注したとき、そして納品しようとしたときに、プレイヤーのインベントリから数え直されます — そのため、クエストを受ける前に入手したアイテムもカウントされます。納品時点でも必要数を所持している必要があり、所持していない場合は納品がキャンセルされます。納品に成功すると、クエストアイテムはプレイヤーのインベントリから消費されます。
customRewards
クエストの報酬を設定します。
| Key | Values | Default |
|---|---|---|
customRewards | EliteMobs 共通ルート形式 | none |
例
customRewards:
- currencyAmount=50:amount=1:chance=0.05
- material=COOKED_COD:amount=3:chance=1.0
- filename=magmaguys_toothpick.yml:amount=1:chance=1.0

注意: カスタムクエストは報酬を自動生成しません。customRewards を空のままにすると、クエストは達成しても何も与えないため、必ず報酬を明示的に定義してください。(クエストの難易度に基づく通貨とアイテムの自動的なレベルスケーリング報酬は、手続き生成されるダイナミッククエストにのみ適用され、設定ファイルで定義するカスタムクエストには適用されません。)
クエスト報酬は直接配られます。アイテムはプレイヤーのインベントリへ直接入り(入りきらないものは足元にドロップされます)、通貨は残高に加算されます。達成時にコマンドを実行したい場合は、command= のルートエントリではなく questCompleteCommands を使ってください。
questAcceptPermission
プレイヤーがクエストを受注するために必要なパーミッションを設定します。
| Key | Values | Default |
|---|---|---|
questAcceptPermission | String | none |
例
questAcceptPermission: elitequest.my_permission
questAcceptPermissions
プレイヤーがクエストを受注するために必要なパーミッション(複数)を設定します。
| Key | Values | Default |
|---|---|---|
questAcceptPermissions | String List | none |
例
questAcceptPermissions:
- elitequest.my_previous_quest_one.yml
- elitequest.my_previous_quest_two.yml
questLockoutPermission
クエスト達成時にプレイヤーが取得し、そのクエストを再び実行できないようにロックするパーミッションを設定します。指定しない場合、ロックアウトパーミッションは割り当てられず、クエストは開いたままになります。
| Key | Values | Default |
|---|---|---|
questLockoutPermission | String | なし |
例
questLockoutPermission: elitequest.my_quest.yml
questLockoutMinutes
プレイヤーが再びそのクエストを実行できるようになるまで待たなければならない時間を分単位で設定します。
ロックアウトのシステムは 2 つあり、このキーがどちらを使うかを決めます。
0より大きい値の場合は、時間指定のロックアウトトラッカーが使われます。プレイヤーは納品後その分数だけこのクエストからロックアウトされ、再度受けようとすると残り時間が伝えられます。可用性のチェックではquestLockoutPermissionは無視されます。0以下の場合は、レガシーなquestLockoutPermissionのマーカーにフォールバックし、達成時に恒久的に付与されます。questLockoutPermissionも設定されていない場合、そのクエストは繰り返し可能なままです。
| Key | Values | Default |
|---|---|---|
questLockoutMinutes | Integer | -1(決して繰り返さない) |
例
questLockoutMinutes: 60
name
クエストの名前を設定します。カラーコード を受け付けます。
| Key | Values | Default |
|---|---|---|
name | String | [filename] |
例
name: "&aMy Great Quest Name"
questLore
ゲーム内のクエストメニューに表示されるクエストのロア(説明文)を設定します。
| Key | Values | Default |
|---|---|---|
questLore | String List | none |
例
questLore:
- "Interesting lore sentence."
- "Yet another interesting lore sentence."

temporaryPermissions
クエストを提出するまでプレイヤーに付与されるパーミッションを設定します。
この設定を使って、プレイヤーが特定のクエストを進行中のときにのみアイテムがドロップするようにする場合は、アイテムの設定ファイルでも同じパーミッションを設定する必要があります。
| Key | Values | Default |
|---|---|---|
temporaryPermissions | String List | none |
例
temporaryPermissions:
- elitequest.item_that_should_drop_only_during_quest.yml
questAcceptDialog
クエスト受注時にチャットに表示されるダイアログを設定します。
| Key | Values | Default |
|---|---|---|
questAcceptDialog | String List | none |
例
questAcceptDialog:
- "My hero! You are so helpful!"
- "I wish you the best of luck!"

questCompleteMessage
クエスト達成時にチャットに表示されるダイアログを設定します。
| Key | Values | Default |
|---|---|---|
questCompleteMessage | String List | none |
例
questCompleteMessage:
- "My hero! You have completed my difficult quest!"
- "As a reward you can have this loaf of bread!"

questCompleteCommands
クエスト達成時に実行されるコマンドを設定します。コマンドはコンソールからディスパッチされるため、先頭のスラッシュは含めず、プレイヤーがその権限を持っていることを前提にしないでください。
サポートされるプレースホルダー: プレイヤー名には $player、プレイヤーのいるワールド名には $getWorld、位置座標には $getX、$getY、$getZ。
| Key | Values | Default |
|---|---|---|
questCompleteCommands | String List | none |
例
questCompleteCommands:
- say $player has finished a quest at $getX, $getY, $getZ!
- give $player diamond 1
![]()
turnInNPC
クエストを達成するためにプレイヤーが会話/対話する必要がある NPC のファイル名を設定します。これは、クエストを渡した NPC と同じである必要はありません。
| Key | Values | Default |
|---|---|---|
turnInNPC | Filename | none |
例
turnInNPC: my_cool_quest_npc.yml
クエスト付与者
クエストをプレイヤーに渡す NPC に割り当てるには、クエストファイルではなく NPC ファイルを設定する必要があります。
NPC 設定ファイル(~/plugins/EliteMobs/npcs/)に、以下を追加します:
questFileName: my_quest.yml
複数のクエストを付与する NPC の場合:
questFileName:
- quest_one.yml
- quest_two.yml
NPC の設定に関する詳細は、NPC 作成のドキュメントを参照してください。
trackable
クエストがクエストトラッカーを使用するかどうかを設定します。
| Key | Values | Default |
|---|---|---|
trackable | Boolean | true |
例
trackable: true
questLevel
クエストのレベルを設定します。これはプレイヤーがクエストの難易度を把握できるようにするための視覚的な目安にすぎません。ボス、アイテム、その他のレベルを変更することは一切ありません。
| Key | Values | Default |
|---|---|---|
questLevel | Integer | 0 |
例
questLevel: 10

questAcceptSound
クエストが受注されたときに再生されるサウンドを設定します。Minecraft のサウンドの再生と、リソースパックからのサウンドの再生の両方が可能です。
| Key | Values | Default |
|---|---|---|
questAcceptSound | String | none |
例
questAcceptSound: entity.experience_orb.pickup

questCompleteSound
クエストが達成(提出)されたときに再生されるサウンドを設定します。Minecraft のサウンドの再生と、リソースパックからのサウンドの再生の両方が可能です。
| Key | Values | Default |
|---|---|---|
questCompleteSound | String | none |
例
questCompleteSound: entity.player.levelup

ローカリゼーションサポート
以下のフィールドは、多言語サーバー向けのローカリゼーションをサポートしています:
namequestLorequestAcceptDialogquestCompleteMessage
これにより、サーバー上のさまざまな言語向けに翻訳を提供できます。
パーミッション
上記の表で述べたように、パーミッションは通常 String または String List です。しかしここでは、クエストをロック・アンロックするためにこれらをどのように使用するか、もう少し詳しく説明します。
たとえば、あなたが計画した一連のクエストの中で quest_3 を作成しているとし、プレイヤーが quest_2 を終える前に quest_3 を受注できないようにしたいとします。その場合、クエストファイルを次のように設定します:
questAcceptPermission: elitequest.quest_2.yml
questLockoutPermission: elitequest.quest_3.yml
questAcceptPermissions を elitequest.quest_2.yml に設定することで、プレイヤーが quest_2.yml を終える前に quest_3.yml を受注できないようにしました。
questLockoutPermission を elitequest.quest_3.yml に設定することで、プレイヤーがすでにそのクエストをトラッカーに持っている場合、またはすでにそのクエストを終えている場合に、そのクエストを再び受け取れないようにしました。これにより、プレイヤーがクエストを繰り返すことができなくなります。
プレイヤーが一連のクエストを完了した後にのみ利用可能になるクエストを作成したい場合は、クエストファイルを次のように設定します:
questAcceptPermissions:
- elitequest.quest_2.yml
- elitequest.quest_3.yml
- elitequest.quest_4.yml
正しいクエストが進行中のときにのみ、プレイヤーが特定のアイテムを入手できるようにしたい場合は、temporaryPermissions を使ってそれを実現できます。クエストファイルで temporaryPermissions を使ってパーミッションを作成し、アイテムファイルで permission を使って一致するパーミッションを作成します。
たとえば、クエストファイルを開いて以下を追加します:
temporaryPermissions:
- elitequest.my_cool_item.yml
次にアイテムファイル、この場合は my_cool_item.yml を開いて以下を追加します:
permission: elitequest.my_cool_item.yml
両方のファイルのパーミッションが一致するようになり、これでプレイヤーが正しいクエストを進行中のときにのみアイテムがドロップするようになります。
ダイナミッククエスト
ダイナミッククエストは、EliteMobs によって自動的に作成・更新される、手続き的に生成されるクエストです。設定ファイルで定義されるカスタムクエストとは異なり、ダイナミッククエストは手動でのセットアップを必要とせず、各プレイヤーの進行状況に適応します。
仕組み
- クエストティア: プレイヤーのダイナミッククエストティアは戦闘レベルから導き出されます:
tier = combatLevel / 5で、1〜20 の範囲にクランプされます。たとえば、戦闘レベル 45 のプレイヤーはティア 9 のダイナミッククエストを受け取ります。クエスト自体(およびその報酬)はプレイヤーの実際の戦闘レベルに合わせてスケールされ、これは 1〜100 の範囲にクランプされます。 - ティアごとに 3 つのクエスト: 20 のクエストティアそれぞれに対して、システムは一度に正確に 3 つのランダムなクエスト目標を生成します。プレイヤーには、現在のティアに一致する 3 つのクエストが提供されます。
- 自動更新サイクル: ダイナミッククエスト目標のプールは 60 秒ごと(1200 ティックごと)に再生成されます。プールが更新されると、新しい目標が古いものと入れ替わり、プレイヤーに入れ替わり立ち替わりのタスクの選択肢が提供されます。
- ダイナミックダンジョンへの適応: プレイヤーが特定のレベル選択でダイナミックダンジョンに入ると、進行中のすべてのダイナミッククエストがダンジョンの Mob レベルに合わせて適応します。クエストレベル、目標、表示名がそれに応じて更新され、クエストがダンジョンのコンテンツに対して引き続き適切なものになります。
パーティーと共有討伐クレジット
クエストは常に個人所有ですが、メンバーが討伐クレジットを得ると、同じワールドで sharedProgressRange の範囲内(Party.yml で既定128ブロック)のオンラインメンバーも、一致する進行中の討伐目標を進められます。収集アイテム、NPC 会話、アリーナ目標は共有されず、無関係なアクティブインスタンス内のプレイヤーは対象外です。パーティーシステムも参照してください。
