跳到主要内容

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此战利品表是否启用
spawnPoolsString list[]BetterStructures 生成池名称。当与匹配生成池关联的 EliteMob 被击杀时,此战利品表将用于其掉落物。
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此战利品池是否启用
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 的工作方式与精英战利品条目相同。池中的所有精英和原版条目在单次加权选择中竞争。

容器战利品(箱子和桶)

在比赛中,箱子和桶由 BetterStructures 放置。当玩家右键点击箱子或桶时:

  1. 玩家必须站立不动 3 秒钟等待容器打开。
  2. 移动会取消交互。
  3. 成功后,从内容包的 chestLootTablesbarrelLootTables 列表中选择一个战利品表(加权选择)。
  4. 所选战利品表的条目各自独立判定,产生的物品掉落在容器位置。
  5. 容器在被搜刮后会被销毁(替换为空气)。

在比赛中,活跃的容器每 10 tick 显示传送门粒子效果,使玩家能看到它们。

怪物击杀战利品

当 EliteMob 在比赛中死亡时,插件会检查其 BetterStructures 生成池。任何 spawnPools 列表中包含该怪物生成池的战利品表都会在怪物死亡位置生成掉落物。怪物等级会传递给 EliteMobs 以生成等级匹配的物品。

撤离时的物品行为

  • 成功撤离的玩家保留所有物品。退出时其背包中的物品会被灵魂绑定(使用 EliteMobs 灵魂绑定附魔)。
  • 未能撤离的玩家(离开、断线或被世界边界吞没)在 config.ymldeleteItemsOnFailToExtracttrue 时会丢失所有背包物品。