跳至主要內容

Extractioncraft 戰利品系統

Extractioncraft 擁有一個分層的戰利品系統,建立在三個概念之上:內容包引用戰利品表,戰利品表引用戰利品池,戰利品池定義可以掉落的實際物品。

概覽​

Content Package
-> chestLootTables / barrelLootTables (weighted selection)
-> Loot Table
-> lootTable entries (each has a chance to roll)
-> Loot Pool
-> eliteMobsLoot / vanillaLoot (weighted selection of one item)

戰利品表​

戰利品表設定位於 loot_tables/ 資料夾中。每個檔案定義一個戰利品池項目列表,其中每個項目都有獨立的機率產生物品。

鍵類型預設值說明
isEnabledBooleantrue設為 false 可讓此表不再產生任何掉落物。容器在挑選戰利品表時會略過已停用的表,怪物擊殺也會忽略它。
spawnPoolsString list[]BetterStructures 生成池名稱。當與匹配生成池關聯的 EliteMob 被擊殺時,將使用此戰利品表產生掉落物。比對不分大小寫,並且會忽略結尾的 .yml,所以 kobold_miner_pool 和 Kobold_Miner_Pool.yml 都能匹配。
lootTableList of objects[]每個項目引用一個戰利品池檔案名稱和一個 chance(0.0 到 1.0)

戰利品表項目格式​

lootTable:
- filename: my_loot_pool.yml
chance: 0.5
- filename: another_pool.yml
chance: 0.2

每個項目獨立擲骰。chance 為 0.5 表示該池有 50% 的機率產生掉落物。chance 可以是數字或數字字串。若項目的池檔案不存在於 loot_pools/ 中,或其 chance 缺少或超出 0 到 1 的範圍,會在啟動時被略過並發出警告;其他項目仍會照常載入。

戰利品池​

戰利品池設定位於 loot_pools/ 資料夾中。每個池定義一組可能的物品。當池被觸發時,會根據加權機率選擇一個物品。

鍵類型預設值說明
isEnabledBooleantrue設為 false 時,引用此池的戰利品表項目永遠不會擲到它。
eliteMobsLootList of objects[]可以掉落的 EliteMobs 自訂物品
vanillaLootList of objects[]可以掉落的原版 Minecraft 物品

EliteMobs 戰利品項目​

eliteMobsLoot:
- filename: my_elite_item.yml
weight: 1.0
- filename: another_item.yml
weight: 0.5

filename 引用 EliteMobs 自訂物品設定。weight 決定在池中所有項目之間的相對掉落機率。

有些自訂物品會在挑選前就被排除:

  • 設有 permission 的物品只能從箱子與木桶取得,且只對擁有該權限的玩家有效。掉落的物品屬於該玩家,其他人無法撿起。怪物擊殺永遠不會掉落受權限鎖定的物品。
  • itemType: CLASS_LOOT 的物品只有在 EliteMobs 的職業戰利品允許該掉落的難度與階級時才有資格掉落。職業戰利品掉落時不會綁定。

原版戰利品項目​

vanillaLoot:
- material: DIAMOND
weight: 1.0
- material: GOLD_INGOT
weight: 2.0

material 是 Bukkit Material 列舉名稱。weight 的作用與菁英戰利品項目相同。池中所有菁英和原版項目在單次加權選擇中競爭,因此一個池每次擲骰最多只會產生一件物品。原版物品一律以單一個數量掉落。無法辨識、不是物品或是空氣的 material 會在啟動時被略過並發出警告;而找不到對應 EliteMobs 自訂物品的 eliteMobsLoot 檔案名稱,則會在掉落時記錄警告並且什麼都不產生。

權重可寫為小數(0.5)、整數(2)或數字字串("1.5"),且必須大於 0。權重缺少、為零、為負數或不是數字,或缺少 filename 或 material 的項目,會在啟動時被略過並發出警告;池中其餘項目仍會照常載入。

容器戰利品(箱子和木桶)​

比賽開打時,BetterStructures 會在地圖中每個容器標記處放置箱子或木桶。當比賽中的玩家右鍵點擊箱子或木桶時:

  1. 原版容器永遠不會打開。該互動會被取消,並由 Extractioncraft 的掠奪流程取代;這個流程只在比賽進行中執行,且只針對比賽所放置的容器。
  2. 玩家必須完全靜止站立 3 秒。倒數會以副標題顯示。
  3. 任何位置變化都會取消互動(「Don't move while opening a container!」)。允許原地轉動視角。一名玩家一次只能開啟一個容器,一個容器一次也只能由一名玩家開啟。
  4. 戰利品表在互動開始時就已從內容包的加權 chestLootTables 或 barrelLootTables 列表中選定。成功後由該表產生掉落物。
  5. 容器會被替換為空氣,選定的戰利品表項目各自獨立擲骰。產生的物品掉落在容器位置的地面上。

在比賽期間,活躍的容器每 10 刻顯示傳送門粒子效果,使玩家更容易發現它們。

容器掉落物使用內容包的 contentLevel(預設 10)作為 EliteMobs 物品等級。其職業戰利品難度取決於容器所在的區域(如怪物擊殺戰利品所述),階級則為最低的 trash。

怪物擊殺戰利品​

當 EliteMob 在進行中的 Extractioncraft 比賽世界裡死亡時,外掛會讀取 BetterStructures 附加在其生成之 Boss 上的 betterstructures:spawnpool 自訂資料。沒有該資料的怪物,以及在進行中比賽世界之外的死亡,都不會產生 Extractioncraft 戰利品。

每一張已啟用且 spawnPools 列表與該怪物生成池相符的戰利品表,都會在死亡位置產生掉落物。這不是加權挑選,所以把同一個生成池列在三張戰利品表裡,你就會得到三組各自獨立的擲骰。怪物本身的等級會傳遞給 EliteMobs 以產生等級相應的物品,Boss 的職業戰利品難度與階級也會一併傳遞。

比賽開打時,BetterStructures 會以每個實例 Boss 所屬生成池的 maxLevel 生成它們。每個 Boss 也會取得其生成區域的難度。這些區域是圍繞地圖中心的方形環帶:

區域在任一軸上與中心的距離預設 EliteMobs 難度
2小於地圖寬度的六分之一Mythic
1小於地圖寬度的三分之一Hard
0地圖其餘部分Normal

難度名稱來自 EliteMobs 職業戰利品設定中的 difficultyIds 對應。EliteMobs 也只會在相符的區域套用受 difficultyID 限制的 Boss 能力,Kobold Mines 的 Boss 就使用了這項機制。因此朝中心收縮的世界邊界會把玩家推進 Hard 與 Mythic 區域。

撤離時的物品行為​

  • 成功撤離的玩家保留所有物品。Extractioncraft 會將其物品欄、游標與合成格中每件未綁定的物品靈魂綁定給該玩家;已靈魂綁定的物品保留原本的擁有者。只有在 EliteMobs 的 Soulbind 附魔啟用時才會進行綁定。
  • 比賽進行中發生伺服器關閉或外掛重新載入,視同撤離。
  • 從進行中的比賽以其他任何方式離開時,若 deleteItemsOnFailToExtract 為 true(預設值),會清除物品欄、游標與合成格。設為 false 時,這些物品會改為被靈魂綁定。
  • 在比賽等待或倒數期間離開,物品欄不會受到影響。各種離開方式請參閱比賽流程。