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/ 資料夾中。每個檔案定義一個戰利品池項目列表,其中每個項目都有獨立的機率產生物品。
| 鍵 | 類型 | 預設值 | 說明 |
|---|---|---|---|
isEnabled | Boolean | true | 會寫入檔案,但不會被強制執行:無論這個值是不是 true,戰利品表都會被註冊而且可用。若要讓某張表停止被使用,請把它從內容包的 chestLootTables / barrelLootTables 中移除,並清空它的 spawnPools。 |
spawnPools | String list | [] | BetterStructures 生成池名稱。當與匹配生成池關聯的 EliteMob 被擊殺時,將使用此戰利品表產生掉落物。比對不分大小寫,並且會忽略結尾的 .yml,所以 kobold_miner_pool 和 Kobold_Miner_Pool.yml 都能匹配。 |
lootTable | List 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% 的機率產生掉落物。
戰利品池
戰利品池設定位於 loot_pools/ 資料夾中。每個池定義一組可能的物品。當池被觸發時,會根據加權機率選擇一個物品。
| 鍵 | 類型 | 預設值 | 說明 |
|---|---|---|---|
isEnabled | Boolean | true | 會寫入檔案,但不會被強制執行:無論這個值是不是 true,戰利品池都會被註冊而且可用。若要讓某個池停止被使用,請把它的項目從引用它的戰利品表中移除。 |
eliteMobsLoot | List of objects | [] | 可以掉落的 EliteMobs 自訂物品 |
vanillaLoot | List 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 生成。當玩家右鍵點擊箱子或木桶時:
- 原版容器永遠不會打開——該互動會被取消,並由 Extractioncraft 的掠奪流程取代。
- 玩家必須完全靜止站立 3 秒。倒數會以副標題顯示。
- 任何移動都會取消互動(「Don't move while opening a container!」)。一名玩家一次只能開啟一個容器。
- 成功後,從內容包的
chestLootTables或barrelLootTables列表中選擇一個戰利品表(加權選擇)。 - 選定的戰利品表項目各自獨立擲骰,產生的物品掉落在容器位置的地面上。
- 容器在被掠奪後會被摧毀(替換為空氣),因此每個容器只能被掠奪一次。
在比賽期間,活躍的容器每 10 刻顯示傳送門粒子效果,使玩家更容易發現它們。
容器掉落物傳給 EliteMobs 的等級固定是 10,無論這場比賽使用哪個內容包。Kobold Mines 套件所標示的等級範圍來自地圖裡的怪物,而不是箱子與木桶的戰利品。
怪物擊殺戰利品
當 EliteMob 在比賽期間死亡時,外掛會讀取該怪物身上的 betterstructures:spawnpool 自訂資料。沒有這項資料的怪物(也就是任何不是由 BetterStructures 模組生成器生成的怪物)永遠不會產生 Extractioncraft 戰利品。
每一張 spawnPools 列表與該怪物生成池相符的戰利品表,都會在死亡位置產生掉落物——這不是加權挑選,所以把同一個生成池列在三張戰利品表裡,你就會得到三組各自獨立的擲骰。怪物本身的等級會傳遞給 EliteMobs,以產生等級相應的物品。
怪物等級本身則是在地圖生成時由 BetterStructures 決定:越靠近地圖中心的 Boss,其等級越接近所屬生成池的最高等級;越靠外緣的 Boss 則越接近最低等級。因此不斷朝中心收縮的世界邊界,會把玩家推向越來越困難——也越來越有回報——的區域。
撤離時的物品行為
- 每一位離開比賽的玩家,無論成功與否,物品欄都會先被靈魂綁定(使用 EliteMobs 靈魂綁定附魔),因此他們帶出去的任何東西都會綁定在自己身上。
- 成功撤離的玩家保留所有物品。
- 未能撤離的玩家在
config.yml中deleteItemsOnFailToExtract為true(預設值)時會失去所有物品欄物品。這涵蓋了以/exc leave離開、斷線,以及受到致命傷害。 - 在比賽仍處於等待或倒數狀態時,不會清除任何東西;這條規則只在比賽開打後才適用。