副本打包器
什麼是副本?
你可以在這裡找到關於副本的資訊,包括預製副本的資訊。
什麼是副本打包器?
副本打包器讓管理員不只能建立與打包副本,還能打包任何種類的 EliteMobs 內容。這包括事件包、模型包、競技場、NPC 包、物品包等等。
為什麼要使用副本套件?
- 副本地城! 副本地城只能透過副本套件系統來建立。
- 小型地城的安全備份! 如果你製作了副本套件,你就能隨時基於任何理由,把它部署與重新部署到任何你想要的伺服器上。
- 容易開啟與關閉! 你隨時都可以執行
/em setup,暫時或永久地關閉與開啟副本套件。 - 容易分享! 如果你想分享你的創作,副本套件只要壓縮成 zip 再傳給其他人就好。如果你有興趣,還有一個專門用於社群創作的 Discord 房間!
- 傳送! 副本套件會自動建立傳送位置,可從
/em選單的傳送頁面存取,這在許多設定情境下可能非常有用。
建立副本
以下設定用來建立一個應放入 content_packages 資料夾的設定檔。這些設定專門用於建立副本;如果你只是想用副本打包器來散布非副本內容(例如一包物品或事件),就不需要它們。
必要外掛
無。副本保護由 EliteMobs 自身處理:設定 protect: true 會將 EliteMobs 自己的每世界保護套件套用到該套件的世界上,完全不需要區域外掛。
WorldGuard 仍是可選的軟性相依。當它已安裝時,其 EliteMobs 專屬的區域旗標會變得可用,但副本套件並不需要它才能受到保護。
逐步建立副本
EliteMobs 以前有兩大類副本:以世界為基礎的,以及以藍圖(schematic)為基礎的。
以藍圖為基礎的副本會關聯到一份藍圖建築。它們現在已被淘汰,不再受到支援。
現在所有 EliteMobs 副本都是以世界為基礎。
必要的 pack.meta 檔案
你的副本套件應該包含一個 pack.meta 檔案,它其實就是把 .txt 檔案改成 .meta 副檔名。這個檔案只需要包含一個單字,用來表明該套件是給哪個外掛的(例如以小寫書寫的「elitemobs」)。pack.meta 檔案必須位於你套件的根目錄,與其他所有資料夾並列。
全域數值
以下數值適用於所有副本
isEnabled
設定該副本套件是否啟用。
| Key | Values | Default | 必填 |
|---|---|---|---|
isEnabled | Boolean | false | ✅ |
範例
isEnabled: true
name
設定該內容的名稱。支援 Color Codes。
| Key | Values | Default | 必填 |
|---|---|---|---|
name | String | none | ✅ |
範例
name: '&c[lvl 999] &aThe Green Dungeon'

contentType
設定副本的類型。
| Key | Values | Default | 必填 |
|---|---|---|---|
contentType | OPEN_DUNGEON / INSTANCED_DUNGEON / DYNAMIC_DUNGEON / HUB / META_PACKAGE / ITEMS_PACKAGE / EVENTS_PACKAGE / MODELS_PACKAGE | none | ✅ |
範例
contentType: INSTANCED_DUNGEON
customInfo
設定會出現在 /em setup 畫面中的額外資訊。僅供資訊之用。支援 Color Codes。
| Key | Values | Default | 必填 |
|---|---|---|---|
customInfo | String List | none | ✅ |
範例
customInfo:
- '&aThe best dungeon.'
- '&aMade by: CoolPlayer'

setupMenuDescription
設定會在 /em setup 選單中為此副本套件顯示的描述。支援 Color Codes。
| Key | Values | Default | 必填 |
|---|---|---|---|
setupMenuDescription | String List | none | ❌ |
範例
setupMenuDescription:
- '&2A cool dungeon for levels 10-20!'
- '&2Features 3 bosses and custom loot!'
downloadLink
設定內容尚未下載時,在 /em setup 選單中顯示給玩家的下載連結。
| Key | Values | Default | 必填 |
|---|---|---|---|
downloadLink | String | 空字串 | ❌ |
範例
downloadLink: http://www.example.org

dungeonSizeCategory
設定該副本套件的規模分類。僅供資訊之用。
| Key | Values | Default | 必填 |
|---|---|---|---|
dungeonSizeCategory | Special [1] | none | ✅ |
範例
dungeonSizeCategory: MINIDUNGEON

特殊 [1]
展開表格
| Key | 說明 |
|---|---|
LAIR | 巢穴是一種小型地城,聚焦在一場大型 Boss 戰上。 |
SANCTUM | 聖所相當於副本化的巢穴。這表示它們聚焦在一場巨大的 Boss 戰上。 |
MINIDUNGEON | 小型地城是一種中等規模的地城,通常包含 3-15 個小 Boss 與一個大 Boss,以及大量供玩家「刷」金幣與裝備的「雜魚」怪物。 |
DUNGEON | 地城相當於副本化的小型地城。這是最傳統的 MMORPG 地城型態,玩家會組隊,穿過一連串雜魚怪物與小 Boss 的考驗,去挑戰最終 Boss。 |
RAID | 即將推出! |
ADVENTURE | 冒險是完整的冒險地圖。它們包含任務線、NPC、大量的小 Boss 與 Boss,甚至可以在其中包含自己的競技場或地城。 |
ARENA | 競技場是以波次為基礎的生存區域,玩家擊敗波次即可獲得獎勵。 |
OTHER | 任何不屬於上述分類的其他內容。 |
REALM | 領域是大型的持續性世界,擁有豐富的內容與進度系統。 |
更詳細的描述請見副本
protect
設定副本套件的世界是否應受保護。這不會使用 WorldGuard —— EliteMobs 會以自己的保護套件註冊該世界,該套件會封鎖破壞與放置方塊、方塊燃燒/枯萎/點燃、樹葉衰減、骨粉、液體桶、告示牌編輯、容器存取(寶箱除外)、門/地板門/柵欄門開啟、龍蛋與花盆互動、物品展示框與盔甲座竄改,以及原版怪物生成。其中數項會再由 allowExplosionBlockDamage、allowLiquidFlow 與 allowElytra 進一步調整。
當 protect 為 false 時,以上全都不適用,該世界的行為與一般世界無異。
| Key | Values | Default | 必填 |
|---|---|---|---|
protect | Boolean | true | ❌ |
範例
protect: true
dungeonVersion
設定該副本套件的版本。
| Key | Values | Default | 必填 |
|---|---|---|---|
dungeonVersion | Integer | none | ✅ |
範例
dungeonVersion: 1
playerInfo
設定會出現在選單中的資訊。支援 Color Codes。
只有在使用 /em alt 把 /em 設為書本模式時才有作用。
| Key | Values | Default | 必填 |
|---|---|---|---|
playerInfo | String | none | ✅ |
範例
playerInfo: 'Difficulty: &a1-man easy content!'

regionEnterMessage
設定玩家進入該副本區域時出現的訊息。支援 Color Codes。
| Key | Values | Default | 必填 |
|---|---|---|---|
regionEnterMessage | String | none | ❌ |
範例
regionEnterMessage: '&aYou have entered the dungeon!'

regionLeaveMessage
設定玩家離開該副本區域時出現的訊息。支援 Color Codes。
| Key | Values | Default | 必填 |
|---|---|---|---|
regionLeaveMessage | String | none | ❌ |
範例
regionLeaveMessage: '&aYou have left the dungeon!'

hasCustomModels
標記該副本套件隨附自訂模型(供 ModelEngine 或 FreeMinecraftModels 使用)。此鍵會被讀取與寫入,但 EliteMobs 目前不會對它採取任何行動 —— 模型的安裝完全取決於套件中是否存在 models 資料夾。請把它視為一個文件用的標記。
| Key | Values | Default | 必填 |
|---|---|---|---|
hasCustomModels | Boolean | false | ❌ |
範例
hasCustomModels: false
dungeonConfigFolderName
設定用於存放與此副本相關檔案的資料夾名稱。
副本地城必填!
| Key | Values | Default | 必填 |
|---|---|---|---|
dungeonConfigFolderName | String | none | ❌ |
範例
dungeonConfigFolderName: my_dungeon_folder
anchorPoint
設定 /em relativecoords <package> 用來測量的參考點。設好錨點之後,站在已安裝套件內任何位置的管理員都能執行該指令,並取回自己所站位置相對於錨點的座標,而這正是增援位移與腳本位置等設定所使用的格式。
如果 calculatedRotation 非零,回傳的向量會先繞著錨點在 Y 軸上旋轉再顯示,因此在經過旋轉擺放的情況下數字仍然正確。
若沒有設定錨點,該指令會告訴管理員錨點無效,並且不做其他事情。
| Key | Values | Default | 必填 |
|---|---|---|---|
anchorPoint | Location | none | ❌ |
calculatedRotation | Integer(度) | 0 | ❌ |
範例
anchorPoint: my_dungeon_world,100,64,100,0,0
calculatedRotation: 0
contentLevel
設定該副本應在 EM 選單中顯示的內容等級。
| Key | Values | Default | 必填 |
|---|---|---|---|
contentLevel | Integer | none | ❌ |
範例
contentLevel: 20
enchantmentChallenge
設定該副本是否應為附魔挑戰副本。
| Key | Values | Default | 必填 |
|---|---|---|---|
enchantmentChallenge | Boolean | false | ❌ |
範例
enchantmentChallenge: false
song
設定該副本是否應有配樂。
| Key | Values | Default | 必填 |
|---|---|---|---|
song | String | none | ❌ |
name= 你在這裡定義應播放資源包中的哪個檔案。
length= The length of the soundtrack in milliseconds. EliteMobs 會在內部把它轉換為 tick,因此它必須是該音效的真實長度,否則曲目會提早或延後重新開始。
這兩部分以一個空格分隔。可以用 -> 串接兩首曲目,此時第二個項目使用相同的 name=/length= 語法。
範例
song: name=elitemobs:dark_cathedral.ambient length=93830
雙曲目形式:
song: name=elitemobs:intro length=12000->name=elitemobs:dark_cathedral.ambient length=93830
dungeonLockoutMinutes
設定在副本 BOSS 被擊敗後的副本鎖定計時器。指定的數值以分鐘為單位。自 EliteMobs 10.3.1 起,預設值為 4320(72 小時),並套用至所有預製內容套組——在你的 YAML 中將其設為 0 可停用特定套組的鎖定,或設為其他正整數來覆寫。處於鎖定中的玩家也不會從目前在冷卻中的 BOSS 獲得技能 XP。
| Key | Values | Default | 必填 |
|---|---|---|---|
dungeonLockoutMinutes | Integer | 4320 | ❌ |
範例
dungeonLockoutMinutes: 1440
containedPackages
設定某個 meta 套件內所包含的副本套件清單。當 contentType 設為 META_PACKAGE 時,會用它來列出屬於這個較大型副本的所有子套件。
| Key | Values | Default | 必填 |
|---|---|---|---|
containedPackages | String List | none | ❌ |
範例
containedPackages:
- my_dungeon_adventure.yml
- my_dungeon_sanctum.yml
- my_dungeon_boss_fight.yml
customItemFilenames
設定物品套件的自訂物品檔案清單。設定此值會自動把 contentType 設為 ITEMS_PACKAGE。
| Key | Values | Default | 必填 |
|---|---|---|---|
customItemFilenames | String List | none | ❌ |
範例
customItemFilenames:
- my_custom_sword.yml
- my_custom_armor.yml
customEventFilenames
設定事件套件的自訂事件檔案清單。設定此值會自動把 contentType 設為 EVENTS_PACKAGE。
| Key | Values | Default | 必填 |
|---|---|---|---|
customEventFilenames | String List | none | ❌ |
範例
customEventFilenames:
- my_custom_event.yml
modelNames
設定模型套件的模型名稱清單。設定此值會自動把 contentType 設為 MODELS_PACKAGE。
| Key | Values | Default | 必填 |
|---|---|---|---|
modelNames | String List | none | ❌ |
範例
modelNames:
- my_custom_model
可翻譯的鍵
上述其中六個值會在套件載入時註冊到翻譯系統:name、customInfo、playerInfo、regionEnterMessage、regionLeaveMessage,以及 difficulties 中每個項目的 name。在使用非英語語言的伺服器上,這些值會在該語言的 CSV 中被查找,而你在 YAML 中寫的文字就是英文欄位所比對的依據。如果你希望你的套件可被翻譯,請用英文撰寫它們。
以世界為基礎的副本套件
以下數值僅適用於以世界為基礎的副本。
worldName
設定應被打包的世界名稱。
| Key | Values | Default | 必填 |
|---|---|---|---|
worldName | String | none | ✅ |
範例
worldName: my_minecraft_world
wormholeWorldName
此功能設定蟲洞世界的名稱,該世界是連結到主世界的次要世界。它可用於傳送中樞或特殊 Boss 房間之類的功能。
| Key | Values | Default | 必填 |
|---|---|---|---|
wormholeWorldName | String | none | ❌ |
範例
wormholeWorldName: my_minecraft_world_wormhole
environment
設定該世界的環境。
| Key | Values | Default | 必填 |
|---|---|---|---|
environment | Environment | none | ✅ |
範例
environment: NORMAL
teleportLocation
設定該副本套件的傳送位置。這是玩家進入該副本時會被傳送到的地方。
| Key | Values | Default | 必填 |
|---|---|---|---|
teleportLocation | String | none | ✅ |
範例
teleportLocation: my_minecraft_world,-1.5,68,0.5,0.0,0.0
allowExplosionBlockDamage
允許或阻止爆炸在副本中破壞方塊。這些爆炸被視為精英爆炸,因此對方塊造成的任何破壞都會在 2 分鐘內再生。
| Key | Values | Default | 必填 |
|---|---|---|---|
allowExplosionBlockDamage | Boolean | false | ❌ |
範例
allowExplosionBlockDamage: true
allowLiquidFlow
設定副本中是否允許液體(水、岩漿)流動。
| Key | Values | Default | 必填 |
|---|---|---|---|
allowLiquidFlow | Boolean | true | ❌ |
範例
allowLiquidFlow: false
allowElytra
設定玩家是否可以在此內容套組的世界中使用鞘翅滑翔。當設為 false(預設值)時,EliteMobs 會在該套組的世界中取消滑翔嘗試,並每個 tick 重新設定為非滑翔狀態——適合用來防止玩家跳過設計好的副本動線。
| Key | Values | Default | 必填 |
|---|---|---|---|
allowElytra | Boolean | false | ❌ |
範例
allowElytra: true
listedInTeleports
設定該副本套件是否會出現在傳送選單中。設為 false 時,玩家將無法透過 /em 傳送選單傳送到該副本。
| Key | Values | Default | 必填 |
|---|---|---|---|
listedInTeleports | Boolean | true | ❌ |
範例
listedInTeleports: false
teleportLocationOffset
設定副本套件傳送位置的偏移量。
此鍵會被解析但目前未被使用 —— EliteMobs 中沒有任何部分會讀取產生的偏移量,因此設定它不會影響玩家的落點。請改為調整 teleportLocation 本身。
| Key | Values | Default | 必填 |
|---|---|---|---|
teleportLocationOffset | String | none | ❌ |
範例
teleportLocationOffset: my_minecraft_world,0.5,2,0.5,0.0,0.0
副本地城
副本地城會在每次有一群玩家想要通關該副本時建立一個新世界,並在結束後刪除它。為了讓它正常運作,你必須在 EliteMobs 的 world_blueprints 設定資料夾中,放入一個依 dungeonConfigFolderName 命名的資料夾。
接著把你要使用的世界放進你所建立的資料夾中,並確認該世界的 session.lock 檔案已被刪除。
以下數值僅適用於副本地城。請注意所有副本地城都是世界副本,因此它們也會使用世界副本的那些數值。
startLocation
設定副本地城起始點的傳送位置。這是玩家以 /em start 開始該副本地城時會被傳送到的地方。
| Key | Values | Default | 必填 |
|---|---|---|---|
startLocation | String | none | ✅ |
範例
startLocation: my_minecraft_world,10.5,70,10.5,0.0,0.0
permission
設定進入該副本實例所需的權限。
| Key | Values | Default | 必填 |
|---|---|---|---|
permission | String | none | ❌ |
範例
permission: elitedungeon.mypermission
minPlayerCount
設定開始一個副本所需的最少玩家人數。
| Key | Values | Default | 必填 |
|---|---|---|---|
minPlayerCount | Integer | 1 | ❌ |
範例
minPlayerCount: 1
maxPlayerCount
設定副本中允許的最多玩家人數。
| Key | Values | Default | 必填 |
|---|---|---|---|
maxPlayerCount | Integer | 5 | ❌ |
範例
maxPlayerCount: 5
dungeonObjectives
設定該副本要被視為已完成所需的副本目標清單。
| Key | Values | Default | 必填 |
|---|---|---|---|
dungeonObjectives | String List | none | ✅ |
範例
目前有兩種副本目標類型:
- 擊殺目標:
filename=boss.yml:amount=X - 擊殺副本百分比:
clearpercentage=X.Y
dungeonObjectives:
- filename=dungeon_final_boss.yml
- filename=dungeon_miniboss_one.yml
- filename=dungeon_miniboss_two.yml
dungeonObjectives:
- clearpercentage=0.8
difficulties
設定該副本地城中的難度清單。
副本地城必填!
| Key | Values | Default | 必填 |
|---|---|---|---|
difficulties | Special [1] | none | ❌ |
範例
difficulties:
- levelSync: 25
id: 0
name: normal
- levelSync: 20
id: 1
name: hard
- levelSync: 15
id: 2
name: mythic

特殊 [1]
動態副本
動態副本是副本地城的延伸,但有一個關鍵差異:它們讓副本內容能縮放到玩家所選的難度等級。玩家可用的等級選項由玩家已解鎖的公會等級決定。
為動態副本設計 Boss 與怪物時,請使用設定 level: dynamic。動態副本中的任何戰利品都應設為 scalability: scalable。
動態副本需要以下數值。
由於所有動態副本同時也是副本地城,它們額外會使用副本地城的所有數值與設定。
contentType
設定副本的類型。這必須設為 DYNAMIC_DUNGEON。
| Key | Values | Default | 必填 |
|---|---|---|---|
contentType | OPEN_DUNGEON / INSTANCED_DUNGEON / DYNAMIC_DUNGEON / HUB / META_PACKAGE / ITEMS_PACKAGE / EVENTS_PACKAGE / MODELS_PACKAGE | none | ✅ |
範例
contentType: DYNAMIC_DUNGEON
contentLevel
設定該副本應在 EM 選單中顯示的內容等級。這必須設為 -1,該副本才會被顯示為動態副本。
| Key | Values | Default | 必填 |
|---|---|---|---|
contentLevel | Integer | none | ✅ |
範例
contentLevel: -1
difficulties
設定該動態副本中可用的難度與等級同步清單。
副本地城必填!
| Key | Values | Default | 必填 |
|---|---|---|---|
difficulties | Special [1] | none | ✅ |
範例
difficulties:
- levelSync: '+5'
name: normal
id: 0
- levelSync: '+0'
name: hard
id: 1
- levelSync: '-5'
name: mythic
id: 2

特殊 [1]
展開表格
設定副本地城難度後,進入該副本時會自動產生不同的難度選項。
在此設定的難度名稱就是自訂 Boss 資料夾中所使用的名稱,你可以在那裡依難度設定 Boss 擁有哪些能力。
把 levelSync 的值以引號括起的正數或負數來設定,可控制玩家的裝備在副本內如何被同步。這些值不會影響副本本身的等級——副本內容一律在進入時直接同步到玩家所選的等級。
舉例來說,若 levelSync 設為 "+0",玩家的裝備會被同步到與該副本的內容等級完全相符。
若設為 "+5",玩家的裝備會被同步到比該副本內容高 5 級。
若設為 "-5",他們的裝備會被同步到比該副本內容低 5 級。
難度採用清單格式,具有以下欄位:
| Key | 說明 | Values | 必填 |
|---|---|---|---|
name | 顯示給玩家的難度名稱。 | String | ✅ |
id | 該難度的 ID,供自訂 Boss 與自訂物品的難度相關功能使用。 | String | ❌ |
levelSync | 設定玩家裝備縮放的等級。這決定了玩家的裝備等級如何相對於副本內容被調整,使裝備最多可比所選的副本難度高或低幾個等級。設計參考自《Final Fantasy 14》的等級同步系統。 | Integer | ❌ |
為大型副本使用 meta_pack.yml 副本套件檔案。
有時候,你可能正在製作一個大型副本,其中還包含其他較小的副本,讓玩家能透過主副本世界在它們之間往來。EliteMobs 的冒險副本 Primis 就是一個很好的例子。
Primis 擁有一個廣闊的世界,玩家可以在其中探索並完成任務,但它的世界內也包含兩個副本地城——其中之一就是最終 Boss 戰。像這種情況,就會有多個副本套件檔案,即使它們全都屬於同一個上層副本。
為了管理這種情況,我們會使用 meta 副本套件檔案。這個檔案的作用像是一份中央目錄,指明主要副本並列出所有與之相關的額外副本內容。
我們來仔細看看 Primis 的 meta 副本套件是如何構成的:
isEnabled: true
name: '&2[000-020] The Primis Adventure!'
customInfo:
- The tutorial adventure for players
- new to EliteMobs!
downloadLink: https://discord.gg/9f5QSka
dungeonSizeCategory: LAIR
environment: NORMAL
protect: true
contentType: META_PACKAGE
containedPackages:
- primis_adventure.yml
- primis_blood_temple_sanctum.yml
- primis_gladius_invasion_dungeon.yml
setupMenuDescription:
- '&2A soft tutorial adventure for players between levels 0-20!'
- '&2Adventures are massive maps with quests,'
- '&2many bosses and npcs, among other things!'
- '&2Also has custom models!'
dungeonVersion: 21 #added dungeon meta package file
如你所見,meta 副本套件檔案與一般副本套件非常相似,只有幾個關鍵差異。contentType: 被設為 META_PACKAGE,而且多了一個叫做 containedPackages: 的設定。這個設定會列出屬於該大型副本的所有其他副本套件。
建立你的 meta 套件時,請務必包含 containedPackages: 設定,並列出屬於你大型副本的每一個副本套件。這能確保所有東西都在上層結構中被正確連結與組織。
為你的副本管理版本時,所有版本控制都應透過 meta 套件進行。這是因為 meta 套件是決定整個副本版本的主要套件,也是用來在 /em setup 選單中顯示資訊的套件。
請記得,列在 meta 套件中的個別副本仍可能出現在 /em teleport 選單中。若要避免這種情況,你需要在各自的設定檔中手動停用那些副本的傳送選項。
舉例來說,以 Primis 副本為例:
停用 primis_blood_temple_sanctum.yml 與 primis_gladius_invasion_dungeon.yml 在選單中的傳送項目。
讓 primis_adventure.yml 的傳送選項維持啟用,因為它是玩家展開旅程並前往其他副本的主要中樞。
這樣的設定能為玩家確保流暢的體驗,同時維持副本系統適當的結構與功能。
為檔案命名時,我們建議採用以下命名慣例:
your_dungeon_name_meta_pack.yml
建議的 Boss 數值
建立一般的副本怪物
我們建議把 normalizedCombat 設定維持為 true。這項設定會把所有怪物正規化,讓它們的生命值與傷害以相同方式縮放,無論其實體類型為何。
請注意對於副本內容而言,這通常已經由系統替你決定了:只要 MobCombatSettings.yml 中的 normalizeRegionalBosses 為 true(預設值),所有區域 Boss 與所有實例副本 Boss 都會被強制使用正規化戰鬥,無論 Boss 檔案怎麼寫。因此下方的倍率才是真正重要的數值。
normalizedCombat: true
healthMultiplier: 1.0 #~3 sword hits to slay
damageMultiplier: 1.0 #1.5 hearts of dmg
註:由於 1.0 是生命值與傷害的預設值,你可以直接省略定義 healthMultiplier 或 damageMultiplier,並把 normalizedCombat 設為 true。
建立雜魚群
雜魚群數量眾多,但不太危險:
normalizedCombat: true
healthMultiplier: 0.7 #~2 sword hits to slay
damageMultiplier: 0.5 #0.5 hearts of dmg
建立增援
增援應該非常容易被殺死,但在傷害方面具有威脅性(這些數值是針對 4 個以上的近戰實體建議的,實際使用情況可能有所不同):
normalizedCombat: true
healthMultiplier: 0.25 #~1 sword hit to slay
damageMultiplier: 0.6 #1 heart of dmg
建立小 Boss
小 Boss 應該撐得住場面,並對玩家構成機制上的挑戰。它應該是一場持續一小段時間的技術考驗,但不至於極度致命:
normalizedCombat: true
healthMultiplier: 3.0 #~10 sword hits to slay
damageMultiplier: 1.2 #2 hearts of dmg
建立 Boss
Boss 是真正的挑戰,是副本中層層鋪陳的收尾,也是一場賭上一切的真正技術考驗。這類遭遇應該很漫長,而死亡應該是隨時存在的威脅。
normalizedCombat: true
healthMultiplier: 7.0 #~23 sword hits to slay
damageMultiplier: 1.4 #2.5 hearts of dmg
這些建議數值只是粗略估計,最終數值應依各個具體遭遇進行調整。
這對副本最終 Boss 尤其重要;你可能會想要大幅超過建議的 healthMultiplier 7.0,好讓最後一戰帶有史詩般的感覺。
healthMultiplier 之前,請留意生命值上限Boss 生命值會被夾限在伺服器的 settings.attribute.maxHealth.max(預設伺服器為 2048),而 Boss 傷害不會被夾限。因此每個倍率都存在一個等級,超過之後 Boss 就停止獲得生命值、而傷害仍持續縮放 —— 7.0 在等級 36 觸頂、10.0 在等級 33、40.0 在等級 23。把倍率提高到已經觸頂的點之上,換來的只有一個更脆的 Boss。完整表格與如何提高上限,請參閱 healthMultiplier。
打包 EliteMobs 內容以供散布
最後,你大概會想要把你的副本打包起來,用於保存或散布。
EliteMobs 有一套匯入系統,讓管理員能快速匯入、安裝與解除安裝內容。你可以在這裡看它如何運作。
散布副本資源包
自 EliteMobs 9.6.0 起,副本可以連同自己的資源包一起被打包與散布!這讓你能做些很酷的事,例如為副本中掉落的戰利品使用自訂材質或模型,或加入自訂音效——就像我們在副本 The Hallowed Haunt 中所做的那樣。
若要隨你的副本一起散布資源包,請像製作任何標準資源包那樣建立它。如果你想要範本,可以參考 EliteMobs 的預設資源包,EliteMobs 會在啟動時把它匯出到 plugins/EliteMobs/resource_pack/em_rsp_defaults/。該資源包必須以未壓縮的形式散布,因此請建立一個以你的副本命名的資料夾,例如:my_cool_dungeon_rsp。把原本要放進 zip 的所有資源包檔案放進這個資料夾。接著,把這個資料夾放進一個名為 resource_pack 的新資料夾中——這正是 EliteMobs 用來存放其預設資源包的同一個資料夾。
請不要編輯 em_rsp_defaults 本身:EliteMobs 每次開機都會對其 jar 內的副本計算校驗碼,只要兩者不同就會清空並重新匯出該資料夾,你的修改將會遺失。
整理好你的檔案之後,目錄結構應該會像這樣:
resource_pack
└── my_cool_dungeon_rsp
└── [resource pack files]
完成之後,安裝該副本時,你的副本資源包應該就能成功匯入。
修剪世界
有時候,你可能需要縮減你的 Minecraft 世界大小,讓它更輕巧、因而更容易散布。這可以透過使用 WorldBorder 外掛來達成。儘管該外掛列出的支援版本只到 MineCraft 1.19,截至 2024 年 1 月 25 日,它在最新的 MineCraft 版本上仍能順暢運作。
Details
提示
如果你是第一次這麼做,先為你的世界建立一份備份或許是個好主意,以防出了什麼差錯。外掛安裝好之後,移動到世界的中央,或你想修剪的特定區域。接著執行指令 /wb set x,其中 x 代表你希望該區域大致的半徑大小。
Details
提示
如果/wb 對你沒有作用,試試 /worldborder:wb。執行這個指令之後,飛到你世界的邊緣,確認世界邊界已被正確設定且涵蓋了預期的大小。當你被推回來並在聊天中看到一則訊息時,就知道自己抵達世界邊界了。

在上圖中,我們的目標是把世界修剪到只留下紫色方塊周圍的幾個區塊。為此,我們站在紫色區域中央的紅色方格上,執行 /wb set 50,把世界邊界設在紫色區域稍外側。
接下來,我們使用 /wb trim [freq] [pad] 指令,把 frequency 設為 200、pad 設為 20。pad 決定世界邊界(紫色區域)周圍應保留多少區塊,frequency 則決定每秒應處理多少區塊。執行 /wb trim 200 20 之後,系統會提示我們執行 /wb trim confirm 來確認。我們確認該操作,過一段時間後,我們的世界就會被修剪完成,縮小其體積並讓散布更為方便。
你現在可以使用 /wb clear all 移除世界邊界,或者你想留著也可以。
修剪世界資料夾
你的世界資料夾中有數個檔案與資料夾是可以捨棄的,因為外掛並不會用到全部。這能縮減你世界的大小,讓散布更容易。
對於 NORMAL 世界環境:
為了準備你的世界,請保留以下檔案與資料夾:
- region 資料夾
- data 資料夾內的 raids.dat(複製時請確保它被放在 data 資料夾內)
- level.dat 檔案
位於世界資料夾中的所有其他檔案與資料夾都可以安全刪除。這樣就能為 NORMAL 環境正確設定好你的世界。
對於 NETHER 與 THE_END 世界環境:
為了準備你的世界,請保留以下檔案與資料夾:
- DIM-1 資料夾內的 region 資料夾(複製時請確保它被放在 DIM-1 資料夾內)
- data 資料夾內的 raids.dat(複製時請確保它被放在 data 資料夾內)
- level.dat 檔案
位於世界資料夾中的所有其他檔案與資料夾都可以安全刪除。這樣就能為 NETHER 與 THE_END 環境正確設定好你的世界。
執行打包指令
EliteMobs 提供 /em package <dungeonName> <version> 指令。此指令會在下列每個內容資料夾中尋找名為 dungeonName 的子資料夾,把找到的東西複製到 exports/<dungeonName>/,再把它壓縮成 exports/<dungeonName>_packaged.zip。
它掃描的資料夾依序為:
custombosses、customevents、npcs、customitems、customquests、customarenas、customspawns、customtreasurechests、wormholes、world_blueprints、powers
找不到的項目會印出一則「no subdirectory」提示並被略過,對於沒有使用所有內容類型的套件而言這是正常的。
因此,強烈建議你把想要打包的內容,放在與套件名稱同名的資料夾中。 否則,你就得手動收集這些檔案,並自行把它們整理成可供散布的檔案結構。
請注意 /em package 不會收集 content_packages、worldcontainer、models 或 resource_pack。這四項必須在你壓縮之前手動加入匯出資料夾。
加入副本套件檔案
如果你正在建立副本,你需要手動把副本套件檔案加進 exports 資料夾中剛產生的資料夾裡。你的副本套件設定檔應遵循上述格式,並放在一個名為 content_packages 的資料夾中。更多相關說明請見下方的 File structure 一節。
完成後請務必把你的副本壓縮成 zip!
檔案結構
如果你每一步都做對了,檔案結構應該會類似下面這個例子,我們在其中把該副本命名為 my_cool_dungeon:
my_cool_dungeon 檔案結構範例
- my_cool_dungeon.zip
- content_packages
- my_cool_dungeon.yml <- 這裡是放你的副本套件設定檔的地方
- worldcontainer
- [你的世界資料夾放這裡]
- wormholes
- my_cool_dungeon
- [你的蟲洞放這裡]
- my_cool_dungeon
- npcs
- my_cool_dungeon
- [你的 NPC 放這裡]
- my_cool_dungeon
- customtreasurechests
- my_cool_dungeon
- [你的寶箱放這裡]
- my_cool_dungeon
- customquests
- my_cool_dungeon
- [你的任務放這裡]
- my_cool_dungeon
- customitems
- my_cool_dungeon
- [你的自訂物品放這裡]
- my_cool_dungeon
- custombosses
- my_cool_dungeon
- [你的自訂 Boss 放這裡]
- my_cool_dungeon
- customarenas
- my_cool_dungeon
- [你的自訂競技場放這裡]
- my_cool_dungeon
- powers
- my_cool_dungeon
- [你的自訂能力放這裡]
- my_cool_dungeon
- world_blueprints
- my_cool_dungeon
- [你的世界資料夾放這裡,供副本地城使用]
- my_cool_dungeon
- customevents
- my_cool_dungeon
- [你的自訂事件放這裡]
- my_cool_dungeon
- customspawns
- my_cool_dungeon
- [你的自訂生成放這裡]
- my_cool_dungeon
- models
- [你的 bbmodel 格式模型放這裡,可接受資料夾]
- scripts
- [你的 FreeMinecraftModels Lua 腳本放這裡]
- resource_pack
- my_cool_dungeon_rsp
- [你的資源包檔案放這裡]
- my_cool_dungeon_rsp
- content_packages
這讓大多數使用者能直接把檔案拖放到自己的伺服器上,立刻就能運作。
可辨識的頂層資料夾
匯入器只認得一組固定的頂層名稱。對於 EliteMobs 套件(pack.meta 含有 elitemobs),這些名稱為:
| 資料夾 | 安裝位置 |
|---|---|
content_packages | plugins/EliteMobs/content_packages |
dungeonpackages | plugins/EliteMobs/content_packages(舊別名) |
custombosses | plugins/EliteMobs/custombosses |
customitems | plugins/EliteMobs/customitems |
customtreasurechests | plugins/EliteMobs/customtreasurechests |
customevents | plugins/EliteMobs/customevents |
customspawns | plugins/EliteMobs/customspawns |
customquests | plugins/EliteMobs/customquests |
customarenas | plugins/EliteMobs/customarenas |
npcs | plugins/EliteMobs/npcs |
wormholes | plugins/EliteMobs/wormholes |
powers | plugins/EliteMobs/powers |
world_blueprints | plugins/EliteMobs/world_blueprints |
resource_pack | plugins/EliteMobs/resource_pack |
worldcontainer | 伺服器的世界容器 |
models 或 modelengine | 若已安裝 FreeMinecraftModels 則為其 models 資料夾,否則為 ModelEngine 的 blueprints 資料夾 |
scripts | plugins/FreeMinecraftModels/scripts |
pack.meta | 不會被安裝到任何地方 —— 它只會被讀取以識別該套件 |
壓縮檔頂層的其他任何東西都不會被辨識,也不會被安裝,因此請把零散的 readme 檔案、螢幕截圖與 __MACOSX 資料夾排除在封存檔根目錄之外。
schematics 是個特例:把它匯入 EliteMobs 會印出一則警告,告知你藍圖副本已在 EliteMobs 9.0 中移除。
重要:要打包散布時,請務必先解除安裝小型地城!你不會想散布已安裝狀態的小型地城,你要的是讓管理員自己在他們的伺服器上設定它!
與社群分享你所建立的副本套件
Discord 上有一個 #community_dungeons 區塊,人們可以在那裡分享自己的小型地城創作。歡迎踴躍貢獻!
