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 | 设为 false 可让该表不再产生任何掉落。容器在挑选战利品表时会跳过已禁用的表,怪物击杀也会忽略它。 |
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%。chance 可以是数字或数字字符串。如果某个条目引用的池文件在 loot_pools/ 中不存在,或其 chance 缺失或超出 0 到 1 的范围,该条目会在启动时被跳过并输出警告;其他条目仍会加载。
战利品池
战利品池配置文件位于 loot_pools/ 文件夹中。每个池定义一组可能的物品。当池被判定时,根据加权概率选择一个物品。
| 键 | 类型 | 默认值 | 描述 |
|---|---|---|---|
isEnabled | Boolean | true | 设为 false 后,引用此池的战利品表条目永远不会判定它。 |
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 决定池中所有条目之间的相对掉落概率。
部分自定义物品会在选择之前就被排除:
- 带有
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 会在地图中每个容器标记处放置一个箱子或木桶。当对局中的玩家右键点击箱子或木桶时:
- 原版容器界面绝不会打开。该交互会被取消,并替换为 Extractioncraft 的搜刮流程;该流程只在对局进行期间运行,且只针对对局放置的容器。
- 玩家必须完全静止站立 3 秒钟。倒计时会以副标题形式显示。
- 任何位置变化都会取消该交互("Don't move while opening a container!")。允许原地转动视角。一名玩家同一时间只能打开一个容器,一个容器同一时间也只能由一名玩家打开。
- 战利品表在交互开始时就已从内容包的加权
chestLootTables或barrelLootTables列表中选定。成功后由该表生成掉落物。 - 容器会被替换为空气,所选战利品表的条目各自独立判定。产生的物品掉落在容器位置的地面上。
在对局中,活跃的容器每 10 tick 显示传送门粒子效果,使玩家能看到它们。
容器掉落使用内容包的 contentLevel(默认 10)作为 EliteMobs 物品等级。其职业战利品难度取决于容器所在的区域(见怪物击杀战利品),类别则为最低的 trash(普通敌人)。
怪物击杀战利品
当 EliteMob 在进行中的 Extractioncraft 对局世界里死亡时,插件会读取 BetterStructures 附加在其生成的 Boss 上的 betterstructures:spawnpool 自定义数据。没有该数据的怪物,以及在进行中的对局世界之外的死亡,都不会产生 Extractioncraft 战利品。
每一个已启用且 spawnPools 列表匹配该怪物生成池的战利品表都会在死亡位置生成掉落物。这不是加权挑选,因此在三个战利品表中列出同一个生成池,你就会得到三组独立的判定。怪物自身的等级会连同 Boss 的职业战利品难度和类别一起传递给 EliteMobs,以生成等级匹配的物品。
对局开始时,BetterStructures 会以生成池的 maxLevel 生成每个实例 Boss。每个 Boss 还会获得其生成所在区域的难度。这些区域是围绕地图中心的方形环带:
| 区域 | 在任一轴上与中心的距离 | 默认 EliteMobs 难度 |
|---|---|---|
2 | 小于地图宽度的六分之一 | Mythic |
1 | 小于地图宽度的三分之一 | Hard |
0 | 地图其余部分 | Normal |
难度名称来自 EliteMobs 职业战利品设置中的 difficultyIds 映射。EliteMobs 还会只在对应区域中启用受 difficultyID 限制的 Boss 技能,Kobold Mines 的 Boss 就使用了这一点。因此不断向中心收缩的世界边界会把玩家推入 Hard 和 Mythic 区域。
撤离时的物品行为
- 成功撤离的玩家保留所有物品。Extractioncraft 会把其物品栏、光标和合成格中每件未绑定的物品灵魂绑定给该玩家;已灵魂绑定的物品保留原有所有者。只有在 EliteMobs 灵魂绑定附魔启用时才会进行绑定。
- 在进行中的对局期间发生服务器关闭或插件重载,按撤离成功处理。
- 当
deleteItemsOnFailToExtract为true(默认值)时,以其他任何方式离开进行中的对局都会清空物品栏、光标和合成格。将其设为false时,这些物品会改为灵魂绑定。 - 在对局等待或倒计时期间离开,物品栏不会被改动。所有离开方式请参阅对局流程。