建立任務
範例任務
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!"

如果你的任務介面看起來和這個不一樣,你可以使用 /em alt 將它切換成相符的樣式。
這個範例任務會交給玩家一個討伐 1 隻 test_boss.yml 的目標。(任務追蹤器中顯示的 Boss 實際名稱會是 test_boss.yml 裡所設定的 name:。)作為完成任務的獎勵,玩家會得到 1 個 Magmaguy's Toothpick。
建立自訂任務
isEnabled
設定任務是否啟用。
| Key | Values | Default |
|---|---|---|
isEnabled | 布林值 | true |
範例
isEnabled: true
customObjectives
設定任務目標。
| Key | Values | Default |
|---|---|---|
customObjectives | 特殊 [1] | 無 |
注意:如果你使用多階段 Boss 作為任務目標,那麼目標應該以第一階段作為對象。
範例
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"

特殊 [1]
展開表格
自訂目標是使用以下這些值來建構的:
| Key | 說明 |
|---|---|
KILL_CUSTOM / FETCH_ITEM / DIALOG / ARENA | 用來設定此目標代表的類型。KILL_CUSTOM 表示任務涉及擊殺特定的自訂 Boss,FETCH_ITEM 表示任務涉及取得特定的自訂物品,DIALOG 表示任務涉及與 NPC 交談,而 ARENA 表示任務涉及完成特定的競技場。 |
filename | 用來設定自訂 Boss 的檔名、玩家必須擊殺/取得的自訂物品、必須交談的 NPC,或必須完成的競技場。 |
amount | 用來設定必須擊殺的自訂 Boss 數量或必須取得的物品數量。若未指定,預設為 1。 |
dialog | 用來設定玩家交談對象 NPC 的對話內容。 |
name | 用來設定任務目標的名稱,無論是 NPC、自訂物品還是競技場。僅供顯示用途。 |
itemName | 僅與 FETCH_ITEM 搭配使用 —— 此設定會改變物品名稱在任務追蹤器中的顯示方式。它讓你能夠顯示一個與物品實際遊戲內名稱不同的自訂名稱。 |
請注意,每一個自訂目標的欄位都是以 : 分隔的!
customRewards
設定任務獎勵。
| Key | Values | Default |
|---|---|---|
customRewards | EliteMobs 通用戰利品格式 | 無 |
範例
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,任務系統會根據任務等級自動產生獎勵。獎勵的品質會隨任務難度而調整,並同時包含貨幣與物品。若要精確控制獎勵,請務必明確指定 customRewards。
questAcceptPermission
設定玩家必須擁有才能接受任務的權限。
| Key | Values | Default |
|---|---|---|
questAcceptPermission | 字串 | 無 |
範例
questAcceptPermission: elitequest.my_permission
questAcceptPermissions
設定玩家必須擁有才能接受任務的多個權限。
| Key | Values | Default |
|---|---|---|
questAcceptPermissions | 字串列表 | 無 |
範例
questAcceptPermissions:
- elitequest.my_previous_quest_one.yml
- elitequest.my_previous_quest_two.yml
questLockoutPermission
設定玩家完成任務後會獲得的權限,此權限會將玩家鎖定,使其無法再次進行該任務。若未指定,任務鎖定權限會自動產生為 elitequest.[filename]。
| Key | Values | Default |
|---|---|---|
questLockoutPermission | 字串 | elitequest.[filename] |
範例
questLockoutPermission: elitequest.my_quest.yml
questLockoutMinutes
設定玩家在能夠再次進行該任務之前必須等待多久(以分鐘計)(運作方式是移除任務鎖定權限)。
| Key | Values | Default |
|---|---|---|
questLockoutMinutes | 整數 | -1(永不重複) |
範例
questLockoutMinutes: 60
name
設定任務名稱。可使用 Color Codes(顏色代碼)。
| Key | Values | Default |
|---|---|---|
name | 字串 | [filename] |
範例
name: "&aMy Great Quest Name"
questLore
設定任務的說明文字,會出現在遊戲內的任務選單中。
| Key | Values | Default |
|---|---|---|
questLore | 字串列表 | 無 |
範例
questLore:
- "Interesting lore sentence."
- "Yet another interesting lore sentence."

temporaryPermissions
設定在玩家繳交任務之前指派給玩家的權限。
如果你使用此設定來確保某個物品只在玩家有特定任務進行中時才掉落,你還需要在該物品的設定檔中設定相同的權限。
| Key | Values | Default |
|---|---|---|
temporaryPermissions | 字串列表 | 無 |
範例
temporaryPermissions:
- elitequest.item_that_should_drop_only_during_quest.yml
questAcceptDialog
設定接受任務時出現在聊天欄中的對話。
| Key | Values | Default |
|---|---|---|
questAcceptDialog | 字串列表 | 無 |
範例
questAcceptDialog:
- "My hero! You are so helpful!"
- "I wish you the best of luck!"

questCompleteMessage
設定完成任務時出現在聊天欄中的對話。
| Key | Values | Default |
|---|---|---|
questCompleteMessage | 字串列表 | 無 |
範例
questCompleteMessage:
- "My hero! You have completed my difficult quest!"
- "As a reward you can have this loaf of bread!"

questCompleteCommands
設定任務完成時會執行的指令。支援預留位置:$player 代表玩家名稱,以及 $getX、$getY、$getZ 代表玩家所在位置的座標。
| Key | Values | Default |
|---|---|---|
questCompleteCommands | 字串列表 | 無 |
範例
questCompleteCommands:
- say $player has finished a quest at $getX, $getY, $getZ!
- give $player diamond 1
![]()
turnInNPC
設定玩家需要與其交談/互動以完成任務的 NPC 檔名。這不必是發出任務的同一個 NPC。
| Key | Values | Default |
|---|---|---|
turnInNPC | 檔名 | 無 |
範例
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 | 布林值 | true |
範例
trackable: true
questLevel
設定任務的等級。這只是視覺上的參考,讓玩家能夠判斷任務的挑戰性有多高。這不會以任何方式修改 Boss、物品或其他等級。
| Key | Values | Default |
|---|---|---|
questLevel | 整數 | 0 |
範例
questLevel: 10

questAcceptSound
設定接受任務時播放的音效。可以播放 Minecraft 音效,也可以播放來自資源包的音效。
| Key | Values | Default |
|---|---|---|
questAcceptSound | 字串 | 無 |
範例
questAcceptSound: entity.experience_orb.pickup

questCompleteSound
設定任務完成(繳交)時播放的音效。可以播放 Minecraft 音效,也可以播放來自資源包的音效。
| Key | Values | Default |
|---|---|---|
questCompleteSound | 字串 | 無 |
範例
questCompleteSound: entity.player.levelup

在地化支援
以下欄位支援為多語言伺服器提供在地化:
namequestLorequestAcceptDialogquestCompleteMessage
這讓你能夠為伺服器上的不同語言提供翻譯。
權限
如上方表格所述,權限通常是 字串 或 字串列表。但讓我們更詳細地說明你會如何使用這些權限來鎖定和解鎖任務。
假設你正在製作一系列你已規劃好的任務中的 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 刻)會重新產生一次。當池子刷新時,新的目標會取代舊的目標,讓玩家獲得一組輪替的任務選擇。
- 動態地城調適: 當玩家以特定等級選擇進入動態地城時,他們所有的進行中動態任務都會調適以符合該地城的怪物等級。任務等級、目標與顯示名稱都會相應更新,讓任務與地城內容維持相關性。
