跳至主要內容

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會寫入檔案,但不會被強制執行:無論這個值是不是 true,戰利品表都會被註冊而且可用。若要讓某張表停止被使用,請把它從內容包的 chestLootTables / barrelLootTables 中移除,並清空它的 spawnPools
spawnPoolsString list[]BetterStructures 生成池名稱。當與匹配生成池關聯的 EliteMob 被擊殺時,將使用此戰利品表產生掉落物。比對不分大小寫,並且會忽略結尾的 .yml,所以 kobold_miner_poolKobold_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

每個項目獨立擲骰。chance0.5 表示該池有 50% 的機率產生掉落物。

戰利品池

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

類型預設值說明
isEnabledBooleantrue會寫入檔案,但不會被強制執行:無論這個值是不是 true,戰利品池都會被註冊而且可用。若要讓某個池停止被使用,請把它的項目從引用它的戰利品表中移除。
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 決定在池中所有項目之間的相對掉落機率。

原版戰利品項目

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

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

權重可以寫成小數(0.5)、整數(2)或加引號的字串("1.5");三種都能解析。缺少 weight 或其值非數字時會被視為 0 並記錄警告。

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

在比賽期間,箱子和木桶會在比賽開始時由 BetterStructures 生成。當玩家右鍵點擊箱子或木桶時:

  1. 原版容器永遠不會打開——該互動會被取消,並由 Extractioncraft 的掠奪流程取代。
  2. 玩家必須完全靜止站立 3 秒。倒數會以副標題顯示。
  3. 任何移動都會取消互動(「Don't move while opening a container!」)。一名玩家一次只能開啟一個容器。
  4. 成功後,從內容包的 chestLootTablesbarrelLootTables 列表中選擇一個戰利品表(加權選擇)。
  5. 選定的戰利品表項目各自獨立擲骰,產生的物品掉落在容器位置的地面上。
  6. 容器在被掠奪後會被摧毀(替換為空氣),因此每個容器只能被掠奪一次。

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

容器戰利品一律以等級 10 產生

容器掉落物傳給 EliteMobs 的等級固定是 10,無論這場比賽使用哪個內容包。Kobold Mines 套件所標示的等級範圍來自地圖裡的怪物,而不是箱子與木桶的戰利品。

怪物擊殺戰利品

當 EliteMob 在比賽期間死亡時,外掛會讀取該怪物身上的 betterstructures:spawnpool 自訂資料。沒有這項資料的怪物(也就是任何不是由 BetterStructures 模組生成器生成的怪物)永遠不會產生 Extractioncraft 戰利品。

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

怪物等級本身則是在地圖生成時由 BetterStructures 決定:越靠近地圖中心的 Boss,其等級越接近所屬生成池的最高等級;越靠外緣的 Boss 則越接近最低等級。因此不斷朝中心收縮的世界邊界,會把玩家推向越來越困難——也越來越有回報——的區域。

撤離時的物品行為

  • 每一位離開比賽的玩家,無論成功與否,物品欄都會先被靈魂綁定(使用 EliteMobs 靈魂綁定附魔),因此他們帶出去的任何東西都會綁定在自己身上。
  • 成功撤離的玩家保留所有物品。
  • 未能撤離的玩家在 config.ymldeleteItemsOnFailToExtracttrue(預設值)時會失去所有物品欄物品。這涵蓋了以 /exc leave 離開、斷線,以及受到致命傷害。
  • 在比賽仍處於等待或倒數狀態時,不會清除任何東西;這條規則只在比賽開打後才適用。