跳至主要內容

副本打包器

webapp_banner.jpg

什麼是副本?

你可以在這裡找到關於副本的資訊,包括預製副本的資訊。


什麼是副本打包器?

副本打包器讓管理員不只能建立與打包副本,還能打包任何種類的 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

設定該副本套件是否啟用。

KeyValuesDefault必填
isEnabledBooleanfalse
範例
isEnabled: true

name

設定該內容的名稱。支援 Color Codes

KeyValuesDefault必填
nameStringnone
範例
name: '&c[lvl 999] &aThe Green Dungeon'

create_packager_name.jpg


contentType

設定副本的類型。

KeyValuesDefault必填
contentTypeOPEN_DUNGEON / INSTANCED_DUNGEON / DYNAMIC_DUNGEON / HUB / META_PACKAGE / ITEMS_PACKAGE / EVENTS_PACKAGE / MODELS_PACKAGEnone
範例
contentType: INSTANCED_DUNGEON

customInfo

設定會出現在 /em setup 畫面中的額外資訊。僅供資訊之用。支援 Color Codes

KeyValuesDefault必填
customInfoString Listnone
範例
customInfo:
- '&aThe best dungeon.'
- '&aMade by: CoolPlayer'

create_packager_custominfo.jpg


setupMenuDescription

設定會在 /em setup 選單中為此副本套件顯示的描述。支援 Color Codes

KeyValuesDefault必填
setupMenuDescriptionString Listnone
範例
setupMenuDescription:
- '&2A cool dungeon for levels 10-20!'
- '&2Features 3 bosses and custom loot!'

設定內容尚未下載時,在 /em setup 選單中顯示給玩家的下載連結。

KeyValuesDefault必填
downloadLinkString空字串
範例
downloadLink: http://www.example.org

create_packager_downloadlink.jpg


dungeonSizeCategory

設定該副本套件的規模分類。僅供資訊之用。

KeyValuesDefault必填
dungeonSizeCategorySpecial [1]none
範例
dungeonSizeCategory: MINIDUNGEON

create_packager_size.jpg

特殊 [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 會以自己的保護套件註冊該世界,該套件會封鎖破壞與放置方塊、方塊燃燒/枯萎/點燃、樹葉衰減、骨粉、液體桶、告示牌編輯、容器存取(寶箱除外)、門/地板門/柵欄門開啟、龍蛋與花盆互動、物品展示框與盔甲座竄改,以及原版怪物生成。其中數項會再由 allowExplosionBlockDamageallowLiquidFlowallowElytra 進一步調整。

protectfalse 時,以上全都不適用,該世界的行為與一般世界無異。

KeyValuesDefault必填
protectBooleantrue
範例
protect: true

dungeonVersion

設定該副本套件的版本。

KeyValuesDefault必填
dungeonVersionIntegernone
範例
dungeonVersion: 1

playerInfo

設定會出現在選單中的資訊。支援 Color Codes

只有在使用 /em alt/em 設為書本模式時才有作用。

KeyValuesDefault必填
playerInfoStringnone
範例
playerInfo: 'Difficulty: &a1-man easy content!'

create_packager_playerinfo.jpg


regionEnterMessage

設定玩家進入該副本區域時出現的訊息。支援 Color Codes

KeyValuesDefault必填
regionEnterMessageStringnone
範例
regionEnterMessage: '&aYou have entered the dungeon!'

create_packager_enter.jpg


regionLeaveMessage

設定玩家離開該副本區域時出現的訊息。支援 Color Codes

KeyValuesDefault必填
regionLeaveMessageStringnone
範例
regionLeaveMessage: '&aYou have left the dungeon!'

create_packager_leave.jpg


hasCustomModels

標記該副本套件隨附自訂模型(供 ModelEngine 或 FreeMinecraftModels 使用)。此鍵會被讀取與寫入,但 EliteMobs 目前不會對它採取任何行動 —— 模型的安裝完全取決於套件中是否存在 models 資料夾。請把它視為一個文件用的標記。

KeyValuesDefault必填
hasCustomModelsBooleanfalse
範例
hasCustomModels: false

dungeonConfigFolderName

設定用於存放與此副本相關檔案的資料夾名稱。

副本地城必填!

KeyValuesDefault必填
dungeonConfigFolderNameStringnone
範例
dungeonConfigFolderName: my_dungeon_folder

anchorPoint

設定 /em relativecoords <package> 用來測量的參考點。設好錨點之後,站在已安裝套件內任何位置的管理員都能執行該指令,並取回自己所站位置相對於錨點的座標,而這正是增援位移與腳本位置等設定所使用的格式。

如果 calculatedRotation 非零,回傳的向量會先繞著錨點在 Y 軸上旋轉再顯示,因此在經過旋轉擺放的情況下數字仍然正確。

若沒有設定錨點,該指令會告訴管理員錨點無效,並且不做其他事情。

KeyValuesDefault必填
anchorPointLocationnone
calculatedRotationInteger(度)0
範例
anchorPoint: my_dungeon_world,100,64,100,0,0
calculatedRotation: 0

contentLevel

設定該副本應在 EM 選單中顯示的內容等級。

KeyValuesDefault必填
contentLevelIntegernone
範例
contentLevel: 20

enchantmentChallenge

設定該副本是否應為附魔挑戰副本。

KeyValuesDefault必填
enchantmentChallengeBooleanfalse
範例
enchantmentChallenge: false

song

設定該副本是否應有配樂。

KeyValuesDefault必填
songStringnone

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。

KeyValuesDefault必填
dungeonLockoutMinutesInteger4320
範例
dungeonLockoutMinutes: 1440

containedPackages

設定某個 meta 套件內所包含的副本套件清單。當 contentType 設為 META_PACKAGE 時,會用它來列出屬於這個較大型副本的所有子套件。

KeyValuesDefault必填
containedPackagesString Listnone
範例
containedPackages:
- my_dungeon_adventure.yml
- my_dungeon_sanctum.yml
- my_dungeon_boss_fight.yml

customItemFilenames

設定物品套件的自訂物品檔案清單。設定此值會自動把 contentType 設為 ITEMS_PACKAGE

KeyValuesDefault必填
customItemFilenamesString Listnone
範例
customItemFilenames:
- my_custom_sword.yml
- my_custom_armor.yml

customEventFilenames

設定事件套件的自訂事件檔案清單。設定此值會自動把 contentType 設為 EVENTS_PACKAGE

KeyValuesDefault必填
customEventFilenamesString Listnone
範例
customEventFilenames:
- my_custom_event.yml

modelNames

設定模型套件的模型名稱清單。設定此值會自動把 contentType 設為 MODELS_PACKAGE

KeyValuesDefault必填
modelNamesString Listnone
範例
modelNames:
- my_custom_model

可翻譯的鍵

上述其中六個值會在套件載入時註冊到翻譯系統:namecustomInfoplayerInforegionEnterMessageregionLeaveMessage,以及 difficulties 中每個項目的 name。在使用非英語語言的伺服器上,這些值會在該語言的 CSV 中被查找,而你在 YAML 中寫的文字就是英文欄位所比對的依據。如果你希望你的套件可被翻譯,請用英文撰寫它們。


以世界為基礎的副本套件

以下數值僅適用於以世界為基礎的副本。


worldName

設定應被打包的世界名稱。

KeyValuesDefault必填
worldNameStringnone
範例
worldName: my_minecraft_world

wormholeWorldName

此功能設定蟲洞世界的名稱,該世界是連結到主世界的次要世界。它可用於傳送中樞或特殊 Boss 房間之類的功能。

KeyValuesDefault必填
wormholeWorldNameStringnone
範例
wormholeWorldName: my_minecraft_world_wormhole

environment

設定該世界的環境。

KeyValuesDefault必填
environmentEnvironmentnone
範例
environment: NORMAL

teleportLocation

設定該副本套件的傳送位置。這是玩家進入該副本時會被傳送到的地方。

KeyValuesDefault必填
teleportLocationStringnone
範例
teleportLocation: my_minecraft_world,-1.5,68,0.5,0.0,0.0

allowExplosionBlockDamage

允許或阻止爆炸在副本中破壞方塊。這些爆炸被視為精英爆炸,因此對方塊造成的任何破壞都會在 2 分鐘內再生。

KeyValuesDefault必填
allowExplosionBlockDamageBooleanfalse
範例
allowExplosionBlockDamage: true

allowLiquidFlow

設定副本中是否允許液體(水、岩漿)流動。

KeyValuesDefault必填
allowLiquidFlowBooleantrue
範例
allowLiquidFlow: false

allowElytra

設定玩家是否可以在此內容套組的世界中使用鞘翅滑翔。當設為 false(預設值)時,EliteMobs 會在該套組的世界中取消滑翔嘗試,並每個 tick 重新設定為非滑翔狀態——適合用來防止玩家跳過設計好的副本動線。

KeyValuesDefault必填
allowElytraBooleanfalse
範例
allowElytra: true

listedInTeleports

設定該副本套件是否會出現在傳送選單中。設為 false 時,玩家將無法透過 /em 傳送選單傳送到該副本。

KeyValuesDefault必填
listedInTeleportsBooleantrue
範例
listedInTeleports: false

teleportLocationOffset

設定副本套件傳送位置的偏移量。

此鍵會被解析但目前未被使用 —— EliteMobs 中沒有任何部分會讀取產生的偏移量,因此設定它不會影響玩家的落點。請改為調整 teleportLocation 本身。

KeyValuesDefault必填
teleportLocationOffsetStringnone
範例
teleportLocationOffset: my_minecraft_world,0.5,2,0.5,0.0,0.0

副本地城

副本地城會在每次有一群玩家想要通關該副本時建立一個新世界,並在結束後刪除它。為了讓它正常運作,你必須在 EliteMobs 的 world_blueprints 設定資料夾中,放入一個依 dungeonConfigFolderName 命名的資料夾。

接著把你要使用的世界放進你所建立的資料夾中,並確認該世界的 session.lock 檔案已被刪除。

以下數值僅適用於副本地城。請注意所有副本地城都是世界副本,因此它們也會使用世界副本的那些數值。


startLocation

設定副本地城起始點的傳送位置。這是玩家以 /em start 開始該副本地城時會被傳送到的地方。

KeyValuesDefault必填
startLocationStringnone
範例
startLocation: my_minecraft_world,10.5,70,10.5,0.0,0.0

permission

設定進入該副本實例所需的權限。

KeyValuesDefault必填
permissionStringnone
範例
permission: elitedungeon.mypermission

minPlayerCount

設定開始一個副本所需的最少玩家人數。

KeyValuesDefault必填
minPlayerCountInteger1
範例
minPlayerCount: 1

maxPlayerCount

設定副本中允許的最多玩家人數。

KeyValuesDefault必填
maxPlayerCountInteger5
範例
maxPlayerCount: 5

dungeonObjectives

設定該副本要被視為已完成所需的副本目標清單。

KeyValuesDefault必填
dungeonObjectivesString Listnone
範例

目前有兩種副本目標類型:

  • 擊殺目標: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

設定該副本地城中的難度清單。

副本地城必填!

KeyValuesDefault必填
difficultiesSpecial [1]none
範例
difficulties:
- levelSync: 25
id: 0
name: normal
- levelSync: 20
id: 1
name: hard
- levelSync: 15
id: 2
name: mythic

create_packager_difficulty.jpg

特殊 [1]

展開表格

設定副本地城難度後,進入該副本時會自動產生不同的難度選項。

在此設定的難度名稱就是自訂 Boss 資料夾中所使用的名稱,你可以在那裡依難度設定 Boss 擁有哪些能力。

難度採用清單格式,具有以下欄位:

Key說明Values必填
name顯示給玩家的難度名稱。String
id該難度的 ID,供自訂 Boss 與自訂物品的難度相關功能使用。String
levelSync設定等級同步的等級(若有的話)。等級同步會讓所有玩家裝備的上限停在所設定的值,使玩家不可能對某個副本等級過高,並讓該副本在後續遊玩時仍具意義。設計參考自《Final Fantasy 14》的等級同步系統。Integer

動態副本

動態副本是副本地城的延伸,但有一個關鍵差異:它們讓副本內容能縮放到玩家所選的難度等級。玩家可用的等級選項由玩家已解鎖的公會等級決定。

為動態副本設計 Boss 與怪物時,請使用設定 level: dynamic。動態副本中的任何戰利品都應設為 scalability: scalable

動態副本需要以下數值。
由於所有動態副本同時也是副本地城,它們額外會使用副本地城的所有數值與設定。


contentType

設定副本的類型。這必須設為 DYNAMIC_DUNGEON

KeyValuesDefault必填
contentTypeOPEN_DUNGEON / INSTANCED_DUNGEON / DYNAMIC_DUNGEON / HUB / META_PACKAGE / ITEMS_PACKAGE / EVENTS_PACKAGE / MODELS_PACKAGEnone
範例
contentType: DYNAMIC_DUNGEON

contentLevel

設定該副本應在 EM 選單中顯示的內容等級。這必須設為 -1,該副本才會被顯示為動態副本。

KeyValuesDefault必填
contentLevelIntegernone
範例
contentLevel: -1

difficulties

設定該動態副本中可用的難度與等級同步清單。

副本地城必填!

KeyValuesDefault必填
difficultiesSpecial [1]none
範例
difficulties:
- levelSync: '+5'
name: normal
id: 0
- levelSync: '+0'
name: hard
id: 1
- levelSync: '-5'
name: mythic
id: 2

create_packager_difficulty.jpg

特殊 [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.ymlprimis_gladius_invasion_dungeon.yml 在選單中的傳送項目。 讓 primis_adventure.yml 的傳送選項維持啟用,因為它是玩家展開旅程並前往其他副本的主要中樞。 這樣的設定能為玩家確保流暢的體驗,同時維持副本系統適當的結構與功能。

為檔案命名時,我們建議採用以下命名慣例:

your_dungeon_name_meta_pack.yml


建議的 Boss 數值

建立一般的副本怪物

我們建議把 normalizedCombat 設定維持為 true。這項設定會把所有怪物正規化,讓它們的生命值與傷害以相同方式縮放,無論其實體類型為何。

請注意對於副本內容而言,這通常已經由系統替你決定了:只要 MobCombatSettings.yml 中的 normalizeRegionalBossestrue(預設值),所有區域 Boss 與所有實例副本 Boss 都會被強制使用正規化戰鬥,無論 Boss 檔案怎麼寫。因此下方的倍率才是真正重要的數值。

normalizedCombat: true
healthMultiplier: 1.0 #~3 sword hits to slay
damageMultiplier: 1.0 #1.5 hearts of dmg

註:由於 1.0 是生命值與傷害的預設值,你可以直接省略定義 healthMultiplierdamageMultiplier,並把 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 在等級 3340.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

執行這個指令之後,飛到你世界的邊緣,確認世界邊界已被正確設定且涵蓋了預期的大小。當你被推回來並在聊天中看到一則訊息時,就知道自己抵達世界邊界了。

trim_pic_1.jpg

在上圖中,我們的目標是把世界修剪到只留下紫色方塊周圍的幾個區塊。為此,我們站在紫色區域中央的紅色方格上,執行 /wb set 50,把世界邊界設在紫色區域稍外側。

接下來,我們使用 /wb trim [freq] [pad] 指令,把 frequency 設為 200、pad 設為 20。pad 決定世界邊界(紫色區域)周圍應保留多少區塊,frequency 則決定每秒應處理多少區塊。執行 /wb trim 200 20 之後,系統會提示我們執行 /wb trim confirm 來確認。我們確認該操作,過一段時間後,我們的世界就會被修剪完成,縮小其體積並讓散布更為方便。

你現在可以使用 /wb clear all 移除世界邊界,或者你想留著也可以。

修剪世界資料夾

你的世界資料夾中有數個檔案與資料夾是可以捨棄的,因為外掛並不會用到全部。這能縮減你世界的大小,讓散布更容易。

對於 NORMAL 世界環境:

為了準備你的世界,請保留以下檔案與資料夾:

  1. region 資料夾
  2. data 資料夾內的 raids.dat(複製時請確保它被放在 data 資料夾內)
  3. level.dat 檔案

位於世界資料夾中的所有其他檔案與資料夾都可以安全刪除。這樣就能為 NORMAL 環境正確設定好你的世界。

對於 NETHER 與 THE_END 世界環境:

為了準備你的世界,請保留以下檔案與資料夾:

  1. DIM-1 資料夾內的 region 資料夾(複製時請確保它被放在 DIM-1 資料夾內)
  2. data 資料夾內的 raids.dat(複製時請確保它被放在 data 資料夾內)
  3. level.dat 檔案

位於世界資料夾中的所有其他檔案與資料夾都可以安全刪除。這樣就能為 NETHER 與 THE_END 環境正確設定好你的世界。

執行打包指令

EliteMobs 提供 /em package <dungeonName> <version> 指令。此指令會在下列每個內容資料夾中尋找名為 dungeonName 的子資料夾,把找到的東西複製到 exports/<dungeonName>/,再把它壓縮成 exports/<dungeonName>_packaged.zip

它掃描的資料夾依序為:

custombossescustomeventsnpcscustomitemscustomquestscustomarenascustomspawnscustomtreasurechestswormholesworld_blueprintspowers

找不到的項目會印出一則「no subdirectory」提示並被略過,對於沒有使用所有內容類型的套件而言這是正常的。

因此,強烈建議你把想要打包的內容,放在與套件名稱同名的資料夾中。 否則,你就得手動收集這些檔案,並自行把它們整理成可供散布的檔案結構。

請注意 /em package 不會收集 content_packagesworldcontainermodelsresource_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
        • [你的蟲洞放這裡]
    • npcs
      • my_cool_dungeon
        • [你的 NPC 放這裡]
    • customtreasurechests
      • my_cool_dungeon
        • [你的寶箱放這裡]
    • customquests
      • my_cool_dungeon
        • [你的任務放這裡]
    • customitems
      • my_cool_dungeon
        • [你的自訂物品放這裡]
    • custombosses
      • my_cool_dungeon
        • [你的自訂 Boss 放這裡]
    • customarenas
      • my_cool_dungeon
        • [你的自訂競技場放這裡]
    • powers
      • my_cool_dungeon
        • [你的自訂能力放這裡]
    • world_blueprints
      • my_cool_dungeon
        • [你的世界資料夾放這裡,供副本地城使用]
    • customevents
      • my_cool_dungeon
        • [你的自訂事件放這裡]
    • customspawns
      • my_cool_dungeon
        • [你的自訂生成放這裡]
    • models
      • [你的 bbmodel 格式模型放這裡,可接受資料夾]
    • scripts
      • [你的 FreeMinecraftModels Lua 腳本放這裡]
    • resource_pack
      • my_cool_dungeon_rsp
        • [你的資源包檔案放這裡]

這讓大多數使用者能直接把檔案拖放到自己的伺服器上,立刻就能運作。

可辨識的頂層資料夾

匯入器只認得一組固定的頂層名稱。對於 EliteMobs 套件(pack.meta 含有 elitemobs),這些名稱為:

資料夾安裝位置
content_packagesplugins/EliteMobs/content_packages
dungeonpackagesplugins/EliteMobs/content_packages(舊別名)
custombossesplugins/EliteMobs/custombosses
customitemsplugins/EliteMobs/customitems
customtreasurechestsplugins/EliteMobs/customtreasurechests
customeventsplugins/EliteMobs/customevents
customspawnsplugins/EliteMobs/customspawns
customquestsplugins/EliteMobs/customquests
customarenasplugins/EliteMobs/customarenas
npcsplugins/EliteMobs/npcs
wormholesplugins/EliteMobs/wormholes
powersplugins/EliteMobs/powers
world_blueprintsplugins/EliteMobs/world_blueprints
resource_packplugins/EliteMobs/resource_pack
worldcontainer伺服器的世界容器
modelsmodelengine若已安裝 FreeMinecraftModels 則為其 models 資料夾,否則為 ModelEngine 的 blueprints 資料夾
scriptsplugins/FreeMinecraftModels/scripts
pack.meta不會被安裝到任何地方 —— 它只會被讀取以識別該套件

壓縮檔頂層的其他任何東西都不會被辨識,也不會被安裝,因此請把零散的 readme 檔案、螢幕截圖與 __MACOSX 資料夾排除在封存檔根目錄之外。

schematics 是個特例:把它匯入 EliteMobs 會印出一則警告,告知你藍圖副本已在 EliteMobs 9.0 中移除。

重要:要打包散布時,請務必先解除安裝小型地城!你不會想散布已安裝狀態的小型地城,你要的是讓管理員自己在他們的伺服器上設定它!

與社群分享你所建立的副本套件

Discord 上有一個 #community_dungeons 區塊,人們可以在那裡分享自己的小型地城創作。歡迎踴躍貢獻!