跳至主要內容

建立 Boss

webapp_banner.jpg

建立自訂 Boss​

開始之前

Boss 檔案放在哪裡?​

Boss 檔案要放入設定資料夾 ~/plugins/EliteMobs/custombosses。

可以建立子資料夾,例如 ~/plugins/EliteMobs/custombosses/mybosses。建議這麼做以保持整潔。

一個檔案定義一個 Boss,不過同一個 Boss 可以被多次生成,甚至可以為同一個 Boss 檔案設定多個生成位置。

你可以使用 Forge 建立自訂 Boss 等內容。

最小設定​

自訂 Boss 最小的可能設定檔為:

注意這就只是一個空檔案。這仍然會生成一個帶有自訂名稱的殭屍自訂 Boss,因為那些就是預設值。本頁所有的一切都是可選的!

重複使用其他 Boss 檔案​

Boss 檔案可以透過 extends 以另一個 Boss 檔案為基礎,只修改不同的部分:

extends: my_base_boss.yml
name: '&cEnraged Copy'
healthMultiplier: 3

該檔案會繼承基礎檔案的所有值,並覆寫自己設定的鍵。巢狀區段(例如 patrol)會逐鍵合併;清單(例如 uniqueLootList)則會整個取代基礎檔案中的清單。指定基礎檔案時只寫檔名,不要包含資料夾路徑。它必須是 custombosses(含其子資料夾)中的另一個檔案,而且它本身也可以再繼承其他基礎檔案。

isEnabled、spawnLocation、spawnLocations、leashRadius、powers 與 eliteScript 永遠不會被繼承,因此請在每個需要它們的檔案中各自設定。設有 isEnabled: false 的基礎檔案可作為範本使用:它本身無法生成,但繼承它的檔案仍會載入。EliteMobs 不會把預設值寫入使用 extends 的檔案,因此檔案會維持你所寫的簡短內容。找不到基礎檔案、在 extends 中寫入路徑,或 extends 互相參照形成迴圈時,該檔案會被停用,並在控制台顯示警告。

範例 Boss​

讓我們看看一個 Boss 檔案長什麼樣子的範例。

範例
isEnabled: true
entityType: ZOMBIE
name: '&eTest boss'
level: dynamic
timeout: 10
isPersistent: false
healthMultiplier: 2.0
damageMultiplier: 0.5
helmet: GOLDEN_HELMET
chestplate: IRON_CHESTPLATE
leggings: LEATHER_LEGGINGS
boots: CHAINMAIL_BOOTS
mainHand: GOLDEN_AXE
offHand: SHIELD
isBaby: false
powers:
- invulnerability_knockback.lua
spawnMessage: A test boss has been spawned!
deathMessage: A test boss has been slain by $players!
escapeMessage: A test boss entity has escaped!
locationMessage: 'Test entity: $location'
uniqueLootList:
- magmaguys_toothpick.yml:1
dropsEliteMobsLoot: true
dropsVanillaLoot: true
trails:
- BARRIER
onDamageMessages:
- "I've hit you!"
onDamagedMessages:
- "I've been hit!"

基本設定​

isEnabled​

設定 Boss 是否啟用。

鍵值預設值
isEnabledtrue / falsetrue
範例
isEnabled: true

entityType​

設定 Boss 的實體類型。該類型必須是已註冊 EliteMobs 生物屬性、可以生成的生物。

鍵值預設值
entityType從這裡挑選。
該數值也必須存在於資料夾 ~plugins/EliteMobs/mobproperties 中。
ZOMBIE
岩漿怪與史萊姆

由於這些實體類型不會直接攻擊玩家,而是透過接觸造成傷害,這可能導致短時間內產生大量爆發傷害。因此,我們通常不建議頻繁地將它們用作精英怪。不過,如果你仍希望使用它們,我們建議把 damageMultiplier 設定在 0.1 左右。

我們也建議使用以下 EliteScript 來避免岩漿怪或史萊姆把玩家控制到無法動彈:

eliteScript:
NerfDamage:
Events:
- ZoneEnterEvent
- ZoneLeaveEvent
Zone:
shape: SPHERE
radius: 1
Target:
targetType: SELF
Actions:
- action: SET_MOB_AI
Target:
targetType: SELF
bValue: false
duration: 10
範例
entityType: ZOMBIE

name​

設定 Boss 的名稱。

鍵值預設值
name字串,接受 color codes 以及下方列出的預留位置"Default Name"
範例
name: "$normalLevel &cCool boss!"

create_boss_name_pic_no_level.jpg

如果你希望在名稱欄位中包含 Boss 的等級,只要使用下列其中一個預留位置即可。

預留位置說明範例輸出,以 10 級 Boss 為例
$level替換為等級"$level Cool boss"10 Cool boss
$normalLevel替換為等級,為一般怪物設計"$normalLevel Cool boss"[10] Cool boss
$minibossLevel替換為等級,為迷你 Boss 設計"$minibossLevel Cool boss"〖10〗 Cool boss
$bossLevel替換為等級,為 Boss 設計"$bossLevel Cool boss"『10』 Cool boss
$reinforcementLevel替換為等級,為增援設計"$reinforcementLevel Cool boss"〔10〕 Cool Boss
$eventBossLevel替換為等級,為事件 Boss 設計"$eventBossLevel Cool boss"「10」 Cool boss
範例
name: "$normalLevel &cCool boss!"

create_boss_name_pic.jpg


level​

設定 Boss 的等級。

鍵值預設值
level正整數或 dynamicdynamic

dynamic 使用同一世界內 16 * (伺服器視距 + 2) 格範圍中玩家所對應的最高自然生成等級,最低為 1。已註冊的動態 Boss 每 5 秒重新計算,因此生成後等級仍會改變。明確指定的生成等級會覆寫此行為。需要穩定難度的區域戰鬥應使用固定等級。

範例
level: 1

scale​

設定 Boss 的縮放比例(體型大小)。

鍵值預設值
scale倍率1.0

縮放時,1.0 代表預設大小。若要讓實體變大,請提高數值(例如 1.2)。若要讓實體變小,請降低數值(例如 0.8)。

範例
scale: 1.2

bossType​

為自動職業戰利品等系統指定 Boss 分類。血量顯示由 healthMultiplier 和 MobCombatSettings.yml 中的設定決定,而不是此分類。

鍵值預設值
bossTypeNORMAL、MINIBOSS、BOSS、REINFORCEMENT、EVENTNORMAL

自動職業戰利品中,MINIBOSS 使用迷你 Boss 級別,BOSS 和 EVENT 使用 Boss 級別,普通 Boss 使用雜兵級別;classLootRank 可以覆寫它。

REINFORCEMENT 是設定中的分類,不會自動指派給每個召喚物。執行時對增援和坐騎的追蹤另外控制其獎勵資格。

範例
bossType: MINIBOSS

silent​

設定是否要靜音 Boss 的音效。

鍵值預設值
silent布林值false

設為 true 時,關閉生物本身的原版 Minecraft 音效。另行播放的腳本音效和 Boss 音樂不受此設定控制。

範例
silent: true

healthMultiplier​

設定 Boss 血量的倍率。血量顯示也會讀取此值:顯示獨立 Boss 血條需要啟用 MobCombatSettings.yml 中的 displayBossBarForHighMultiplier,且倍率高於 bossBarHealthMultiplierThreshold。

鍵值預設值
healthMultiplier倍率1.0
Boss 血量有硬性上限,傷害沒有

指數成長的基礎血量先受到伺服器上限限制,再乘以 healthMultiplier,將結果限制為至少 1 HP,並再次限制到 spigot.yml 中的 settings.attribute.maxHealth.max。若該設定低於 2048,EliteMobs 會在啟動時提高到 2048,但不會提高到更大的值,因此預設伺服器的實際上限為 2048。

這些上限描述的是 Boss 的基礎計算。實例 Boss 在至少兩名玩家參與時,會在此後乘以隊伍倍率 0.75 * playerCount,外掛不會再次限制結果。因此,下表不保證實例中的最終血量,也不能據此認定伺服器會接受超過屬性上限的值。

基礎血量遵循 2.1875 × 2^(level / 5),所以每 5 級翻倍。與上限限制結合後,每個 healthMultiplier 都存在一個等級,超過該等級後 Boss 的血量完全停止成長,但傷害仍持續縮放:

healthMultiplier血量停止成長的等級
1.050
2.045
5.038
7.036
10.033
20.028
40.023

超過該等級後,提高設定等級不會再增加實際最大血量。傷害仍取決於戰鬥處理方式、雙方技能、武器屬性和設定倍率;血量上限不保證任一方需要固定攻擊次數才能擊殺對手。倍率計算後的血量超過上限時會記錄警告,但先前的基礎血量截斷不會提示。小於 1 的倍率也會套用到已受限的基礎血量。

如果你確實需要超過 2048 血量,請自行提高 spigot.yml 中的 settings.attribute.maxHealth.max;該限制讀取的是伺服器的即時數值,而非寫死的常數。

範例
healthMultiplier: 1.5

damageMultiplier​

設定 Boss 的傷害倍率。

鍵值預設值
damageMultiplier倍率1.0
範例
damageMultiplier: 1.5

isBaby​

設定 Boss 是否使用該怪物的幼體變體。只能套用在具有幼體變體的怪物上。 如果你想偽裝 Boss,但也希望它在偽裝狀態下仍維持幼體(請確認偽裝實體同樣支援幼體變體),你可以使用這個設定:

disguise: HOGLIN:baby
鍵值預設值
isBabytrue / falsefalse
範例
isBaby: true

helmet/chestplate/leggings/boots/mainHand/offHand​

設定 Boss 的護甲與手持物品。部分實體類型和自訂模型無法顯示這些欄位。普通 EliteMobs 戰鬥中,穿戴的護甲不提供護甲點數,但手持物品可能影響原生攻擊,例如骷髏使用弓。

鍵值預設值
helmet材質、UUID無
chestplate材質無
leggings材質無
boots材質無
mainHand材質無
offHand材質無

使用大寫材質名稱。這些欄位依材質建立裝備,不會載入自訂物品的 .yml 檔案。非皮革物品可用 ITEM_MATERIAL:ID 加上整數自訂模型資料。例如 DIAMOND_SWORD:1 選擇資源包中的自訂模型資料 1。

註 2: 此欄位也可讓你以 ITEM_MATERIAL:CODE 的格式設定自訂皮革顏色,其中 code 為顏色的十六進位表示法。例如:LEATHER_LEGGINGS:ffa500 會產生橘色的護腿。你可以使用十六進位色碼,只要把色碼中的 # 去掉即可。你可以從這裡取得十六進位色碼。

註 3: 小寫且含連字號的玩家 UUID 會透過 Bukkit 的離線玩家資料查詢建立玩家頭顱。解析器不要求玩家在線;顯示的造型取決於伺服器能否解析該資料。

範例
helmet: 198c4123-cafc-45df-ba79-02a421eb8ce7
chestplate: DIAMOND_CHESTPLATE:1
leggings: LEATHER_LEGGINGS:ffa500
boots: NETHERITE_BOOTS
mainHand: DIAMOND_SWORD
offHand: SHIELD

create_boss_armor.jpg


powers​

設定 Boss 擁有的能力。

鍵值預設值
powers參考下方清單無
範例
powers:
- hyper_loot.lua
- attack_arrow.lua
- mycoolpower.lua

註:如果你想查看可用的預製能力清單,可以參考這個頁面。

註:能力可以是 .yml 檔案(EliteScript)或 .lua 檔案(Lua 腳本)。兩種類型都受支援,並可在 powers 清單中自由混用。目前幾乎所有預製能力都已是 .lua。

舊的 .yml 能力名稱仍然可用

同名 .lua 能力已載入時,EliteMobs 會將 .yml 或 .yaml 請求解析到它。例如 attack_arrow.yml 會選擇已載入的 attack_arrow.lua。僅在磁碟上存在檔案還不夠。新設定應直接使用 .lua 檔名。


中階設定:生成增援​

增援同樣屬於 powers 類別,使用以下設定:

註: 增援是在你的 Boss 設定檔的 powers 區段中設定,而不是獨立的區段。

增援設定
鍵說明值預設值
summonType觸發增援生成的條件。必填。參考下方清單無
filename召喚的 Boss 檔名,水晶項目以外均必填。字串無
chance普通批次召喚的機率,GLOBAL 和水晶項目忽略此值。選填。雙精度數1.0
amount設定要生成的增援數量。選填。整數1
inheritAggro讓增援繼承 Boss 的仇恨。選填。true / falsefalse
spawnNearby讓增援在生成點周圍 30x30 格區域內生成,X 和 Z 各 ±15 格。選填。true / falsefalse
inheritLevel讓增援繼承 Boss 的等級。選填true / falsefalse
customSpawn讓增援使用自訂生成系統生成。僅用於 summonType: GLOBAL自訂生成點檔名無
location相對生成偏移。選填。x,y,z,一律相對於 Boss;區域 Boss 則相對於其生成位置。無
lightningRodsummonType: ON_COMBAT_ENTER_PLACE_CRYSTAL 的特殊設定,讓終界水晶周圍產生閃電。選填。true / falsefalse
difficultyID將此項目限制於特定的 實例副本難度。選填。字串 或字串清單無

召喚類型設定了增援生成的條件。以下是有效召喚類型的清單:

召喚類型
值說明
ONCE玩家造成符合條件的傷害時嘗試召喚一批,直到一次嘗試被標記為已召喚。機率抽取失敗後可在後續攻擊時重試。
ON_HIT玩家傷害 Boss 時嘗試召喚一批。要求 AI 開啟、傷害事件未取消且傷害至少為 3。
ON_COMBAT_ENTER在 Boss 進入戰鬥時生成增援。
ON_DEATH在 Boss 死亡時生成增援。
GLOBALBoss 生成後立即透過 customSpawn 排程召喚 amount 個,此後每 10 秒重複,戰鬥外也執行。追蹤數量達到 30 * 生成世界的玩家數 後,就不再新增召喚物。需要有效的 自訂生成。
ON_COMBAT_ENTER_PLACE_CRYSTAL進入戰鬥時在設定的偏移位置放置一個終界水晶,忽略 amount 和 chance,用於自訂終界龍戰。

ONCE 與 ON_HIT 一樣要求 AI 開啟且傷害至少為 3。GLOBAL 使用自己的自訂生成設定,不使用普通的 location、spawnNearby、inheritLevel 和 inheritAggro。完整行為見 增援。

請注意,也可以透過 Elite Scripts 生成增援,因此還有更多可自訂的增援生成方式。

範例
powers:
- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
chance: 0.5
amount: 5
inheritAggro: true
spawnNearby: true
inheritLevel: true
location: 10,20,30
lightningRod: false

專家設定:建立自己的能力​

你可以建立自己的能力,無論是直接寫在 Boss 檔案裡,或是在 powers 資料夾中新增一個設定檔。你可以在這裡進一步了解。

註: 你也可以使用 eliteScript 欄位直接在 Boss 設定檔中定義 Boss 行為。關於使用 Elite Scripts 的完整說明文件,請參閱能力指南。

除了 EliteScript 之外,你也可以使用 Lua 腳本撰寫能力。Lua 能力放在 powers 資料夾中,副檔名為 .lua,並在 powers 清單中以檔名引用。更多資訊請參閱 Lua 入門指南。

依實例副本難度限制能力​

實例副本可以有難度設定,而你可以讓某個特定能力只在特定難度下啟用。

能力限制選項
鍵說明值預設值
filename能力的檔名。字串無
difficultyID單一難度 ID 或清單,依副本的數字或名稱難度規則解析。字串、數字或清單無

這只會套用在實例 Boss 上:也就是實例副本中的 Boss,以及其他外掛透過 EliteMobs API 帶著難度生成的實例 Boss。

範例
powers:
- filename: movement_speed.lua
difficultyID:
- myDifficultyName1
- myDifficultyName2
- myDifficultyName3

spawnMessage​

設定 Boss 生成時要送出的訊息。需要先設定 announcementPriority。

鍵值預設值
spawnMessageStrings 與 color codes無
範例
announcementPriority: 3
spawnMessage: I rise once more!

create_boss_spawn_message.jpg


deathMessages​

設定有傷害玩家紀錄的 Boss 死亡時傳送的訊息清單。必須啟用 MobCombatSettings.yml 的 doCustomEliteMobsDeathMessages(預設為 true)。優先度 0 僅私訊造成傷害的玩家,正優先度則廣播。

鍵值預設值
deathMessagesStrings、color codes 以及下方的預留位置無
範例
announcementPriority: 3
deathMessages:
- '&e&l---------------------------------------------'
- '&4The Test Boss has been killed!'
- '&c&l 1st Damager: $damager1name &cwith $damager1damage damage!'
- '&6&l 2nd Damager: $damager2name &6with $damager2damage damage!'
- '&e&l 3rd Damager: $damager3name &ewith $damager3damage damage!'
- '&4Slayers: $players'
- '&e&l---------------------------------------------'

create_boss_death_message.jpg

死亡訊息使用以下預留位置:

預留位置
值說明
$damager1name傷害排名第一者的顯示名稱
$damager1Name傷害排名第一者的使用者名稱
$damager2name傷害排名第二者的顯示名稱
$damager2Name傷害排名第二者的使用者名稱
$damager3name傷害排名第三者的顯示名稱
$damager3Name傷害排名第三者的使用者名稱
$damager1damage傷害排名第一者的傷害量
$damager2damage傷害排名第二者的傷害量
$damager3damage傷害排名第三者的傷害量
$players所有造成傷害者的顯示名稱清單
$playersName所有造成傷害者的使用者名稱清單

deathMessage​

設定 Boss 死亡時傳送的單一訊息。只在 deathMessages 為空時使用,遵循相同的全域開關和優先度規則。支援 $players 和 $playersName,不支援個別傷害排名的預留位置。

鍵值預設值
deathMessage字串、顏色代碼、$players 和 $playersName無
範例
announcementPriority: 3
deathMessage: '&4The Test Boss has been killed by $players!'

onKillMessage​

設定 Boss 擊殺玩家時的玩家死亡訊息。此功能使用玩家死亡處理流程,不需要 announcementPriority。

鍵值預設值
onKillMessageStrings 與 color codes無

預留位置:

值說明
$player被擊殺玩家的顯示名稱
$playerName被擊殺玩家的使用者名稱
$entityBoss 名稱
範例
announcementPriority: 3
onKillMessage: I win, you lose!

create_boss_spawn_message.jpg


slimeSize​

設定史萊姆 Boss 的大小,但只對史萊姆與岩漿怪有效。

鍵值預設值
slimeSize整數4
範例
slimeSize: 5

neutral​

停止 EliteMobs 強制狼、鐵傀儡等中立實體以玩家為目標的行為,同時阻止 Mind 行為程式啟動。實體原生行為仍然有效,此設定不會讓敵對實體變得被動。

鍵值預設值
neutral布林值false
範例
neutral: true

進階設定​

timeout​

設定自訂 Boss 消失前的時間,以分鐘為單位。0 停用逾時。

鍵值預設值
timeout時間(分鐘)整數0
範例
timeout: 20

設定 Boss 在 20 分鐘後逃脫。


isPersistent​

保留邏輯 Boss 資訊,以便在區塊卸載後恢復。普通流程會移除實體並於區塊重新載入時重新生成。原生 Mind 持有可持久化實體時,可以暫停工作階段、分離已儲存的實體,並在同一次伺服器工作階段中重新關聯。此設定不強制載入區塊,也不保證透過指令生成的任意 Boss 能跨伺服器重啟保留。區域生成點和重生期限由另一套機制管理。

鍵值預設值
isPersistenttrue / falsefalse
範例

範例:

isPersistent: true

damageModifiers​

依武器的 Bukkit 材質設定 Boss 受傷倍率。被追蹤的投射物使用發射時記錄的武器材質。繞過普通傷害公式的自訂傷害不套用這些倍率。

鍵值預設值
damageModifiers材質無
範例
damageModifiers:
- material:DIAMOND_SWORD,multiplier:0.8
- material:TRIDENT,multiplier:2.0

在這個範例中,Boss 只會受到鑽石劍 80% 的傷害(即少 20%),但會受到三叉戟 200% 的傷害(即 2 倍)。


normalizedCombat​

使用 ~/plugins/EliteMobs/mobproperties 中的 normalizedDamageToEliteMultiplier 和 normalizedDamageToPlayerMultiplier。正規化傷害計算見 傷害系統。啟用全域 normalizeRegionalBosses 時,即使此值為 false,區域 Boss 也會強制使用正規化戰鬥。多階段 Boss 使用第一階段的設定。

鍵值預設值
normalizedCombattrue / falsefalse
範例

範例:

normalizedCombat: true

scaledCombat​

啟用依玩家進度計算的戰鬥。對每位玩家計算的傷害會換算到 Boss 實際共用的血量池。儲存的 Boss 等級和獎勵資格仍單獨處理,並不保證所有玩家的戰鬥難度相同。

縮放戰鬥主要是為主世界事件 Boss,以及應讓任何等級玩家都能挑戰的自訂 Boss 而設計。對於有固定預期難度的副本內容,請改用 normalizedCombat。

當設定 scaledCombat: true 時,即使該 Boss 原本會使用正規化戰鬥,縮放戰鬥仍會優先生效。自然生成的精英怪預設使用縮放戰鬥(由 MobCombatSettings.yml 中的 useScaledCombatForNaturalElites 設定控制)。

關於縮放戰鬥如何運作的完整細節,請參閱傷害系統頁面。

鍵值預設值
scaledCombattrue / falsefalse
範例
scaledCombat: true

escapeMessage​

設定當 Boss 透過 timeout 機制逃脫時,廣播給玩家的訊息。需要設定 announcementPriority。

鍵值預設值
escapeMessage字串無
範例
announcementPriority: 3
timeout: 60
escapeMessage: "Sayonara!"

create_boss_escape_message.jpg


locationMessage​

設定用來追蹤 Boss 血量和位置的血條文字。要求 announcementPriority 至少為 1,且全域 showCustomBossLocation 已啟用。此鍵可省略,預設文字為 $name: $distance blocks away!。

鍵值預設值
locationMessage字串、顏色代碼以及下方列出的預留位置$name: $distance blocks away!

預留位置:

值說明
$nameBoss 名稱
$distance會被替換成玩家與自訂 Boss 之間的距離。這是比較建議的選項。
$location會被替換成自訂 Boss 的 x y z 位置座標
範例
announcementPriority: 3
locationMessage: "&4Cool boss: At $location only $distance blocks away!"

create_boss_location_message.jpg

這會顯示類似 Cool boss: At 414,55,347 only 10 blocks away! 的內容


uniqueLootList​

設定 Boss 會掉落的自訂物品。

鍵值預設值
uniqueLootListList無

自訂戰利品中的戰利品項目遵循戰利品表格式。相關資訊請看這裡! 請注意,有些較舊的檔案可能仍在使用與範例不同的過時戰利品表。

範例
uniqueLootList:
- filename: magmaguys_toothpick.yml
chance: 0.02
- minecraft:type=DIAMOND:amount=1:chance=0.9
- magmaguys_toothpick.yml:0.5:elitemobs.*

dropsEliteMobsLoot​

設定 Boss 是否會掉落 EliteMobs 戰利品,不包含 uniqueLootList 中的物品。包含金幣。

鍵值預設值
dropsEliteMobsLoottrue / falsetrue

建議為增援怪物設為 false。

範例
dropsEliteMobsLoot: true

dropsVanillaLoot​

設定自訂 Boss 是否會掉落其原版怪物類型通常會掉落的原版戰利品。

鍵值預設值
dropsVanillaLoottrue / falsetrue
範例
dropsVanillaLoot: true

dropsRandomLoot​

設定自訂 Boss 是否會掉落 EliteMobs 程序化生成的戰利品。不包含精英金幣。

鍵值預設值
dropsRandomLoottrue / falsetrue
範例
dropsRandomLoot: true

dropsSkillXP​

設定擊殺 Boss 是否給予技能經驗值。技能經驗提升武器、護甲技能及其加成。即使此值為 true,經驗處理仍會排除增援和坐騎。

鍵值預設值
dropsSkillXPtrue / falsetrue

建議為增援怪物,或不應計入技能進度的 Boss 設為 false。

範例
dropsSkillXP: false

自動職業戰利品​

classLoot 啟用獨立的基礎裝備抽取,除 bossType: REINFORCEMENT 外預設啟用。classLootDifficulty 接受 AUTO、NORMAL、HARD 或 MYTHIC;classLootRank 接受 AUTO、TRASH、MINIBOSS 或 BOSS。兩者預設皆為 AUTO,無效覆寫值會記錄警告並回復為 AUTO。

作者製作的職業裝備應定義為普通 itemType: CLASS_LOOT 物品,並透過 uniqueLootList 引用。這些物品參與職業裝備選擇,不會作為獨有掉落單獨抽取。舊的 Boss 欄位 classLootItems 不會被讀取。資格、上限、裝備系列涵蓋範圍、設定檔案和難度解析見 自動職業戰利品。


trails​

設定 Boss 移動時留下的軌跡。

鍵值預設值
trails粒子或物品材質無

只有不需要額外資料的粒子能用作軌跡,也就是有效粒子清單中的簡單粒子。DUST、ITEM 等需要資料的粒子會略過。BLOCK 和 LAVA 會停止處理剩餘軌跡清單,因此不要使用。材質名稱會生成動態物品軌跡。Boss 有效期間軌跡持續執行,靜止時也一樣。

範例
trails:
- CLOUD

onDamageMessages​

Boss 傷害玩家時隨機選取一行,暫時替換實體名稱,80 刻後恢復。連續命中可能替換文字,也可能由較早的計時器提前恢復名稱,使最新文字的顯示時間不足 80 刻。

鍵值預設值
onDamageMessagesList無
範例
onDamageMessages:
- "I hit you!"
- "Haha I hit you!"

create_boss_damage_message.jpg


onDamagedMessages​

發生 EliteMobs 傷害事件時隨機選取一行,暫時替換 Boss 名稱,不限於玩家造成的傷害。80 刻後恢復名稱。連續事件可能替換文字,也可能由較早的計時器提前恢復名稱,使最新文字的顯示時間不足 80 刻。

鍵值預設值
onDamagedMessagesList無
範例
onDamagedMessages:
- "You hit me!"
- "I've been hit!"

create_boss_damaged_message.jpg


mountedEntity​

設定 Boss 將騎乘的實體。

鍵值預設值
mountedEntity要騎乘的 Boss 檔名或實體類型無

別試著讓 Boss 騎乘它自己。

範例
mountedEntity: wild_wolf.yml

create_boss_mounted.jpg

註:區域 Boss 會與它所騎乘的實體共用拴繩,也就是說,若超出拴繩允許的距離,兩者都會被拉回生成位置。


announcementPriority​

設定公告的優先度等級。較低的優先度代表不會發出任何公告,較高的優先度不僅能在聊天室公告,若有設定的話還能公告到 Discord。

鍵值預設值
announcementPriority整數0

註: 若缺少此鍵,但已有 locationMessage、spawnMessage、deathMessage、escapeMessage 或非空 deathMessages,載入時會寫入 announcementPriority: 0,讓此設定可見且便於調高。修改之前仍使用優先度 0。

以下是各優先度作用的清單:

值說明
0預設值。沒有生成或逃脫廣播,也無法追蹤;設定的死亡文字仍可私訊造成傷害的玩家。
1可傳送設定的生成、死亡和逃脫聊天訊息。啟用 showCustomBossLocation 後可透過 /em 追蹤,locationMessage 可省略。
2對自訂 Boss 而言與 1 完全相同——並沒有針對優先度 2 的獨立程式路徑。(自訂事件確實會以不同方式處理 2,請參閱公告優先度系統。)
3在 1 的基礎上,若有設定的話,廣播訊息也會同步發送到 Discord。Discord 設定資訊請看這裡。

以下是一個可被追蹤、並能在聊天室與 Discord 傳送生成/死亡/逃脫訊息的 Boss 範例:

範例
announcementPriority: 3

註: 為對應的聊天和 Discord 公告設定 spawnMessage、deathMessage/deathMessages 和 escapeMessage。追蹤有預設位置文字,只有需要修改時才設定 locationMessage。


followDistance​

設定 Boss 產生仇恨並進入戰鬥的距離。從怪物本身開始測量。

鍵值預設值
followDistance整數0

正的 followDistance 會覆寫生物原生的追蹤範圍屬性,0 保持原值。

註 1:非警戒狀態的區域 Boss 在生成或脫戰減速時,將當前追蹤範圍除以 3;進入戰鬥時恢復記錄的範圍,以避免從過遠處產生仇恨而與拴繩限制衝突。

註 2:followDistance 越高,Boss 對伺服器 CPU 的負擔就越重。請謹慎並負責任地使用!

範例
followDistance: 30

設定一個 30 格的範圍,只要玩家進入 Boss 附近的這個距離內,它就會開始追擊/攻擊該玩家。


onDeathCommands​

設定自訂 Boss 死亡時要執行的指令清單。

鍵值預設值
onDeathCommandsList無

指令由主控台執行。含 $players 的 $chance=x$ 指令對每位造成傷害的玩家分別抽取機率。支援以下預留位置:

值說明
$levelBoss 等級的預留位置。
$nameBoss 名稱的預留位置。
$chance=x$讓指令有機率執行。
$players讓指令為傷害者清單中的每位玩家各執行一次,並每次替換成該清單中不同玩家的使用者名稱。
$locationWorldName死亡時的世界名稱。
$locationXBoss 死亡當下的 X 座標。
$locationYBoss 死亡當下的 Y 座標。
$locationZBoss 死亡當下的 Z 座標。
$damager1name傷害排名第一者的使用者名稱
$damager2name傷害排名第二者的使用者名稱
$damager3name傷害排名第三者的使用者名稱

看看下方的範例,能更清楚了解這些是怎麼運作的。

範例
onDeathCommands:
- "say $players has killed $name! That was level $level!"
- "$chance=0.5$ say What a kill!"

create_boss_mounted.jpg

如果 Player1、Player2 與 Player3 都在擊殺 Boss 前對它造成過傷害,主控台的指令輸出會是這樣:

say Player1 has killed CustomBossName! That was level X!
say Player2 has killed CustomBossName! That was level X!
say Player3 has killed CustomBossName! That was level X!

此外,還有 50% 的機率會同時輸出以下內容:

say What a kill!

onSpawnCommands​

設定 Boss 生成時要執行的指令清單。

鍵值預設值
onSpawnCommandsList無

由主控台執行,支援機率標記 $chance=x$。不會展開死亡指令中的 Boss、位置或玩家預留位置。

範例
onSpawnCommands:
- say Boss has spawned!

create_boss_mounted.jpg


onCombatEnterCommands​

設定 Boss 進入戰鬥時要執行的指令清單。

鍵值預設值
onCombatEnterCommandsList無

由主控台執行,支援機率標記 $chance=x$。不會展開死亡指令中的 Boss、位置或玩家預留位置。

範例
onCombatEnterCommands:
- say Boss has entered combat!

create_boss_mounted.jpg


onCombatLeaveCommands​

設定 Boss 脫離戰鬥時要執行的指令清單。

鍵值預設值
onCombatLeaveCommandsList無

由主控台執行,支援機率標記 $chance=x$。不會展開死亡指令中的 Boss、位置或玩家預留位置。

範例
onCombatLeaveCommands:
- say Boss has left combat!

create_boss_mounted.jpg


disguise​

若已啟用 LibsDisguises 插件,則設定其偽裝。更多資訊請看這裡。

鍵值預設值
disguise字串無
customDisguiseData字串無
偽裝範例
disguise: CHICKEN

create_boss_mounted.jpg

自訂偽裝範例
disguise: custom:the_beast_sanctuary_beast
customDisguiseData: player the_beast_sanctuary_beast setskin {"id":"44e6d42b-bd8d-4e48-873b-fae7afed36e4","name":"Unknown","properties":[{"name":"textures","value":"ewogICJ0aW1lc3RhbXAiIDogMTY2NjcwNjYwODA1MCwKICAicHJvZmlsZUlkIiA6ICI3MmY5MTdjNWQyNDU0OTk0YjlmYzQ1YjVhM2YyMjIzMCIsCiAgInByb2ZpbGVOYW1lIiA6ICJUaGF0X0d1eV9Jc19NZSIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS82YmYyMTY4NmM1MGQ1ODhmZmExMDZhZDdjNmViZTk1ZWZiMjE2NDU5ODRjZDFjZWYwODkzNDc4NzMzNmI2YTI3IiwKICAgICAgIm1ldGFkYXRhIiA6IHsKICAgICAgICAibW9kZWwiIDogInNsaW0iCiAgICAgIH0KICAgIH0KICB9Cn0=","signature":"jSsQvpUeWVtyqjtnydPadormkrZLVihetiX4dFQb3+BF/1x6wOgsNKRnnwj6J1mfu2im79LYEJbL+fQ9p1SJIW1uZ6hV7vPSAGUopyXGHNibNXorfV/dGjM77S0t86Jls50XWgJAnLn5RdhQcHahDAHHZ8to6K0HW5gvKKSalR5X/myaiV0E5ujJ+LUFWIiuDmtsmyxTX1zsohyYrVMo/4sD0DpBN+as95wO476gLb5fDTDV569QwExlDOt60W8qSzPw6ncYsOKJIiRE3EddspUm3/NrfDiKApUh8UbzVtwu1XlVAxWNgYN3PkqhWKuE4kvORQuoSJzOgSHkiqdXsQOED2HXfOKdfsnpZUwjepIU5A+/mu0gc3mPQPToKSss2bC1nXn//0bOZZSuQRgTS6PkKDHIQ1nClSZQZlJIsiLmaaN2k1tIHTIlDquKN6G1Ta9c3t6G5kugjqRo78ebbt7l3e0Z3BcdOkuO2WbvBjIg5Uiqyf+cYDZedJ+OEOqL/U6VVlsmbw0rd5deHrbnPn9cRzmWGjrXnxIlAszl+0Uqabj/BrkWcbBCwZJEPaV1hHpC4nJX1m5xvKZHB2Bw0AYWaQ3f3tRBbCA/xqwCS0Px1QohzV0nvtiMbjB38ziT1M5DgLtAVLcHPio7THZMxXAi4IjEIMac9ODbh5OxthA="}],"legacy":false}

create_boss_mounted.jpg

從 skindex 設定一個自訂偽裝。請參閱此頁面以了解如何正確格式化這些資料。


customModel​

若你有自訂模型並安裝了 FreeMinecraftModels 或 ModelEngine 插件,則設定要使用的自訂模型。關於製作與使用自訂模型的更多資訊請看這裡。

鍵值預設值
customModel字串無
範例
customModel: your_model

customModelMountPointID​

設定當 Boss 騎乘其他實體或被其他實體騎乘時,自訂模型所使用的掛載點 ID。

鍵值預設值
customModelMountPointID字串無
範例
customModelMountPointID: your_mount_point_id


frozen​

將移動速度屬性設為 0。EliteMobs 傷害處理還會在當刻和下一刻清零速度。AI 和腳本仍可攻擊或傳送,這不是阻止所有移動的開關。

鍵值預設值
frozentrue / falsefalse
範例
frozen: true

ai​

設定 Boss 是否啟用 AI。設為 false 時,Boss 不會自行移動或攻擊。這對於完全由 Elite Scripts 控制的 Boss 很有用。

鍵值預設值
aitrue / falsetrue
範例
ai: false

behavior​

behavior 從 plugins/EliteMobs/behaviors/ 選擇可重複使用的 Lua Mind 程式。例如:

entityType: ZOMBIE
ai: true
behavior: basic_melee.lua

內建 basic_melee.lua 組合了 behaviors/modules/ 中的目標選擇、追擊、近戰和遊蕩模組。在行為目錄編輯或複製程式;它不是能力檔案,不應放入 powers/。

省略 behavior 時,使用實體類型的生物屬性設定。明確指定 behavior: native 會選擇原生 AI。ai: false 和中立 Boss 不啟動行為程式。生成、裝備、能力、持久化和清理由普通 Boss 載入器繼續管理。

程式需要受支援伺服器版本上的原生 Mind 服務。未知或無效檔案會產生設定錯誤,不會自動改用其他 AI。程式 ID 必須使用 elitemobs: 命名空間;子目錄參照使用正斜線。程式 API 見 Mind 上下文參考。

alwaysShowName​

讓 Boss 名稱在戰鬥外仍可見。全域 alwaysShowEliteMobNameTags 也能啟用此行為。目前的 FreeMinecraftModels 優先使用 tag_head 等 tag_ 骨骼定位名稱,沒有時放在模型碰撞箱上方。較舊的 FMM 版本可能需要作者提供錨點。模型差異見 自訂模型。

鍵值預設值
alwaysShowNametrue / falsefalse
範例
alwaysShowName: true

reinforcement​

將 Boss 定義標記為增援,略過普通區域生成點初始化,並排除自動職業戰利品。實例生成點使用獨立的註冊流程。此標記不會召喚 Boss,也不會建立召喚者關聯;其他獎勵排除規則由執行時的增援和坐騎追蹤另行控制。

鍵值預設值
reinforcementtrue / falsefalse
範例
reinforcement: true

song​

設定 Boss 生成後向附近玩家播放的音樂。資源包必須定義對應的音效鍵和 .ogg 音訊。

鍵值預設值
song字串無

設定正的 followDistance 以決定開始播放的範圍。Boss 每 10 刻檢查同一世界中位於設定距離內的玩家。開始播放後,只要玩家在線、位於同一世界且距離不超過 Boss 記錄的執行時追蹤範圍的 1.5 倍,就繼續播放。移除 Boss 會停止音樂。Boss 音樂優先於副本環境音樂,每位玩家同時只播放一首受管理的曲目。

使用 name=SOUND_KEY length=MILLISECONDS,兩個欄位之間有一個空格。長度為整數毫秒,換算為刻時無條件捨去小數,排程延遲至少為 1 刻。使用 MUSIC 類別,音量和音調皆為 1。

範例

設定歌曲有兩種方式。以下是第一種:

song: name=elitemobs:ice_queen.idle length=76370

這會播放 ice_queen.idle 這首歌 76370 毫秒,然後循環播放。請注意歌曲的位置是由材質包決定的。

以下是設定歌曲的第二種方式:

song: name=elitemobs:ice_queen.end_transition length=14328->name=elitemobs:ice_queen.end_loop length=28657

這會播放 ice_queen.end_transition 這首歌 14328 毫秒,接著轉換到 ice_queen.end_loop 播放 28657 毫秒,並循環播放 end_loop。

這讓 Boss 能擁有「前奏」或「過場」音樂,再接上一段循環的主曲目。


cullReinforcements​

控制移除 Boss 時是否清除其追蹤的增援,包括 GLOBAL 召喚物。脫戰和完全恢復血量時會另外清除普通追蹤增援,因此設為 false 不保證召喚物持續保留。

鍵值預設值
cullReinforcementstrue / falsetrue
範例
cullReinforcements: true

movementSpeedAttribute​

設定 Boss 的移動速度。
註:超過 0.36 的數值可能會太快。

鍵值預設值
movementSpeedAttribute雙精度數無
範例
movementSpeedAttribute: 0.3

patrol​

為自訂首領新增使用原生導航與自動尋路的路線。節點是相對於首領設定生成位置的偏移;若設定 patrol.relative: false,則是其所在世界中的確切座標。patrol.startNodeWaitSeconds 會讓首領每繞行一圈時在第一個節點停留一次。長路段會自動拆分且不強制載入區塊;戰鬥期間巡邏會暫停。首領必須使用 ai: true、具有正的移動速度,且不能是乘客。設定、編輯器、持久化與 Lua 控制請參閱 NPC 與首領巡邏。

Boss 階段​

Boss 可以擁有階段,在血量達到特定百分比時切換。發生切換時,Boss 會開始使用另一個設定檔,也就是說 Boss 的一切都可以改變,甚至包含實體類型之類的項目。
若要進一步了解 Boss 階段,請點這裡。

鍵說明值預設值
phases設定 Boss 將擁有的階段。必填List無
phaseSpawnLocation設定階段 Boss 的生成位置。選填字串無
範例

在這個範例中,我們會展示三個不同的設定檔。

第一個 Boss 設定檔:phase_1_boss.yml

name: "Phase 1"
entityType: ZOMBIE
phases:
- phase_2_boss.yml:0.60
- phase_3_boss.yml:0.30

第二個 Boss 設定檔:phase_2_boss.yml

name: "Phase 2"
entityType: SKELETON

第三個 Boss 設定檔:phase_3_boss.yml

name: "Phase 3"
phaseSpawnLocation: same_as_boss,10,64,100,0,0
entityType: RAVAGER

這隻 Boss 會在血量 60% 時切換到設定檔 phase_2_boss.yml,並在血量 30% 時,於與階段 2 相同的世界、座標 x=10、y=64、z=100 處切換到設定檔 phase_3_boss.yml。Boss 的實體類型與名稱也會隨之改變。

一個項目的格式為 filename:healthPercentage,其中百分比是大於或等於 0 且小於 1 的比例。格式不同、比例超出範圍或找不到 Boss 檔案的項目,都會讓該 Boss 無法生成。

phaseSpawnLocation 是選填的,若未設定,Boss 就會在它當下所站的位置切換階段。

設計階段 Boss 時,以下幾點很重要:

  • 第一階段的設定檔決定了 Boss 的所有階段。
  • 玩家的仇恨/已計算傷害會在各階段之間保留。
  • 跨過門檻的攻擊會被取消,下一階段從設定的血量百分比開始。修改 healthMultiplier 會改變該門檻對應的實際 HP。超額傷害不會轉移到下一形態。
  • 非實例階段 Boss 完全恢復血量時回到第一階段,包括戰鬥後設定的生命恢復。實例 Boss 不執行此完全恢復重置。
  • 同時也是區域 Boss 的階段 Boss,在所有階段共用相同的拴繩半徑與 timeout 機制,並會在計時結束後以第一階段的 Boss 重新生成。
  • 最後一個階段的設定檔決定了 Boss 的戰利品。
  • 階段無法被跳過——超額傷害仍然只會讓 Boss 在所定義的百分比切換階段。
  • 階段切換會移除原坐騎;新階段可定義自己的坐騎。
  • 階段切換和完全恢復重置使用無公告生成,不傳送普通 Boss 生成公告。

區域 Boss​

區域 Boss 是一種特殊的自訂 Boss,它們會在特定的設定位置生成,並且能在延遲之後於該位置重新生成。此外,它們還可以擁有拴繩以確保它們待在特定區域內,以及其他功能。

所有的副本內容都使用這種 Boss。若要進一步了解區域 Boss,請點這裡。

鍵說明值預設值
isRegionalBoss設定 Boss 是否為區域 Boss。若你想要區域 Boss,這應該設為 true。true / falsefalse
spawnLocations設定 Boss 的生成位置。請透過 /em place boss [filename.yml] 指令來新增這些位置!無
spawnCooldown設定 Boss 的重生冷卻時間,以分鐘為單位。整數0
leashRadius設定 Boss 在被拉回之前能離開生成點的距離。從生成點開始測量。雙精度數無
onSpawnBlockStates設定 Boss 生成時會修改的方塊。請參考下方指令無
onRemoveBlockStates死亡、擊殺指令或推進階段時套用儲存的方塊;不包括逾時、完全恢復重置、重新載入和關服。請參考下方指令無

如上所示,區域 Boss 可以擁有 onSpawnBlockStates 與 onRemoveBlockStates。

這是一個在戰鬥期間修改戰鬥競技場非常實用的功能,尤其是與階段切換結合時,因為這樣就能透過改變方塊狀態來開啟與關閉戰鬥競技場。

這些設定的格式太過複雜,無法手動撰寫,因此有幾個指令可以協助你設定它們:

指令說明
/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]讓管理員編輯大範圍的方塊並儲存為狀態。
使用範例:

假設你想製作一場戰鬥,Boss 生成在一座有開門的競技場中,而你希望戰鬥開始時門會關上,戰鬥結束後再度開啟。

要做到這點,你需要兩個 Boss 階段,並登錄三組不同的方塊狀態。在這個範例中,我會分別把這些階段命名為 phase_1_boss.yml 與 phase_2_boss.yml。

  1. 使用 /em transitiveBlocks register phase_1_boss.yml ON_SPAWN 或 /em transitiveBlocks edit phase_1_boss.yml ON_SPAWN 來登錄門在開啟狀態下的方塊。

這表示要登錄那些空氣方塊。這裡建議使用區域選取。

這是為了確保 Boss 生成時門是開著的,讓玩家一定有辦法進入。

  1. 使用 /em transitiveBlocks register phase_2_boss.yml ON_SPAWN 或 /em transitiveBlocks edit phase_2_boss.yml ON_SPAWN 來登錄門在關閉狀態下的方塊。

這表示要登錄那些會阻止玩家離開的實心門方塊。

這是為了在 Boss 進入第二階段時把門變成實心,阻止玩家離開。

  1. 使用 /em transitiveBlocks register phase_2_boss.yml ON_REMOVE 或 /em transitiveBlocks edit phase_2_boss.yml ON_REMOVE 來登錄門在開啟狀態下的方塊。

這表示要再次登錄第一步中的那些方塊(空氣方塊)。

這是為了在 Boss 死亡時開啟門,讓玩家能離開競技場。


alert​

設定 Boss 是否處於警戒狀態。預設情況下,區域 Boss 在脫離戰鬥時會被減速,且仇恨距離較短。此設定可避免區域 Boss 在戰鬥之外被減速與縮短仇恨距離,因此它們無論在戰鬥中或戰鬥外都會有相同的行為。

鍵值預設值
alert布林值false
範例
alert: true

removeAfterDeath​

死亡或逾時後永久刪除這一處區域生成點,用於 BetterStructures 神殿等一次性戰鬥。同一個 Boss 定義仍可擁有其他生成點。

鍵值預設值
removeAfterDeath布林值false
範例
removeAfterDeath: true

實例 Boss​

實例 Boss 是區域 Boss 的一種子類型,用於實例副本中。

鍵說明值預設值
instanced讓自訂 Boss 成為實例 Boss。必填。true / falsefalse

將 Boss 設為實例 Boss 是實例副本正確運作的必要條件。我們也建議移除任何實例 Boss 的拴繩。

範例
instanced: true