跳到主要内容

创建宝箱

webapp_banner.jpg

宝箱可以发放战利品,或生成敌对的拟态 Boss。将配置文件放在 plugins/EliteMobs/customtreasurechests 中。

取值​

isEnabled​

设置宝箱是否启用。

键取值默认值
isEnabled布尔值true

没有此键的文件会以启用状态加载。被禁用的箱子会被完全跳过:它们不会被放置到世界中,也不会被 /em place treasureChest 提供或接受。

示例
isEnabled: true

chestType​

设置方块材质。请使用 CHEST 或 BARREL 等具有朝向的容器。这项设置不会填充普通容器的物品栏;玩家交互时,奖励来自 lootList。

键取值默认值
chestType材质CHEST
示例
chestType: CHEST

这必须是有效的箱子材质,例如 CHEST 或 BARREL。

create_chest_material.jpg


facing​

设置箱子的朝向。

键取值默认值
facing特殊 [1]NORTH
示例
facing: NORTH

这设置箱子面向的方向。有效值为 NORTH、SOUTH、EAST 或 WEST。

特殊 [1]

展开表格
朝向
NORTH
SOUTH
WEST
EAST

dropStyle​

设置箱子是为一名玩家还是为多名玩家掉落的。

SINGLE 由第一个交互的玩家消耗。方块变为空气,并保存补货期限;经过 restockTimer 分钟且区块已加载后,方块才会重新出现。它不按玩家分别记录。左键和右键都可以触发宝箱。

GROUP 宝箱保留在世界中,按玩家分别冷却。实例外,同一配置文件的所有放置位置通过 restockTimers 共享该玩家的冷却。若要分别领取,请使用不同文件。实例内,每个运行中的宝箱独立记录已经领取的玩家。

两种模式都只向交互者发放个人奖励。GROUP 不会启动队伍战利品投票,也不会奖励周围所有玩家。已被其他插件取消的交互会被忽略,普通方块破坏也会被阻止。开箱不要求公会等级。

键取值默认值
dropStyleSINGLE / GROUPSINGLE
示例
dropStyle: SINGLE

lootList​

列出宝箱被打开时应当掉落的战利品。

符合条件的条目分别独立抽取,因此一次开箱可以获得多项奖励。权限、数量和适用的副本难度筛选仍然生效。ItemSettings.yml 中的 putLootDirectlyIntoPlayerInventory 决定直接放入物品栏还是掉落在宝箱处。直接发放时放不下的精英物品会掉落在玩家身边,并将该玩家设为所有者。

键取值默认值
lootListEM 战利品表无
示例
lootList:
- filename=elite_scrap_tiny.yml:chance=0.90
- filename=magmaguys_toothpick.yml:chance=1.0

如果没有任何条目成功发放奖励,玩家会收到 config.yml 中的 treasureChestNoDropMessage。这既包括抽取失败,也包括无法生成奖励的条目。冷却仍会消耗。


mimicChance​

设置生成敌对 Boss 而不是掉落战利品的几率。

键取值默认值
mimicChance双精度浮点数0

每次符合条件的交互都会在生成战利品之前判定拟态。成功时会尝试生成拟态,不再发放普通战利品,二者不会同时发生。使用 0 到 1 的值,0.5 表示 50%。即使所选 Boss 缺失或生成失败,冷却仍会消耗。

示例
mimicChance: 0.5

mimicCustomBossesList​

指定可用于生成的敌对 Boss 列表。系统会从该列表中随机选择一个 Boss 进行生成。

该列表还支持权重系统,你可以用它来确保某些 Boss 被选中的频率高于其他 Boss。

键取值默认值
mimicCustomBossesList字符串列表无
示例
mimicCustomBossesList:
- my_cool_mimic_boss.yml
- weak_mimic_boss.yml

如果你希望为这些 Boss 分配权重,列表应按如下格式书写:

mimicCustomBossesList:
- my_cool_mimic_boss.yml:60
- weak_mimic_boss.yml:40

在这个配置中,my_cool_mimic_boss.yml 比 weak_mimic_boss.yml 更有可能被选中生成。

没有权重后缀的条目,以及权重无法被解析为数字的条目,都会回退为权重 1。

请使用不同的 Boss 文件名和有限正数权重。重复文件名会覆盖前面的权重,而不是增加一个条目。选择器不会验证负数或非有限权重。请确保 Boss 已启用且能够生成。

拟态会以什么等级生成?

Boss 文件决定计算方式;固定数值等级会被宝箱层级计算替代:

拟态 Boss 的 level它生成时的等级
固定数字chestTier × 10,再加上 0-10 的随机值
动态副本内的 dynamic(-1)该副本所选的等级,±1
其他任何地方的 dynamic(-1)打开箱子玩家的自然生成等级,±1

如果找不到列表中指定的 Boss 文件,则不会生成拟态,并且会记录一条警告——玩家什么都得不到,也拿不到战利品。

±1 计算的结果最低为等级 1。在动态副本之外,如果无法读取开箱者的物品栏数据,动态拟态会使用 Boss 的普通生成流程。副本内创建的拟态归属于该场战斗。


restockTimer​

设置箱子重新填充战利品之前需要经过的时间(分钟)。

键取值默认值
restockTimer整数0

实例外,SINGLE 在该间隔后于已加载区块恢复方块;GROUP 则按玩家应用这个冷却。期限在重启后仍保留。实例特有的行为请参阅下方 instanced。

保持默认值 0 实际上意味着完全没有冷却,因此箱子可以被反复刷取。请为任何掉落有价值物品的箱子设置一个真实的数值。

示例
restockTimer: 30

effects​

注意: 此设置没有效果。配置加载器会读取它,但宝箱不会使用解析后的值,也不会因此生成粒子。

如果你希望在箱子周围有粒子,目前请从其他来源生成它们。

键取值默认值
effects字符串列表无

locations​

设置宝箱将会生成的位置。

站在目标方块上执行 /em place treasureChest <treasurechestfilename.yml>。该命令要求玩家拥有 elitemobs.place.admin,且宝箱配置已加载并启用。它会把方块坐标保存到文件中,并立即放置宝箱。在已列出的方块上执行该命令时,会重置该位置的补货期限,而不会再添加一个条目。

键取值默认值
locations字符串列表无

每个条目使用 worldName,x,y,z,yaw,pitch 格式。较短的 worldName,x,y,z 形式同样被接受,此时 yaw 和 pitch 均视为 0。

可选后缀 :unixTimestamp 以 Unix 秒保存该位置的补货期限。EliteMobs 在 SINGLE 被领取时写入它。手动删除期限前请停止服务器;修改在加载配置时生效,不会重置已经运行的宝箱。

一个文件可以包含多个位置。SINGLE 的期限彼此独立;实例外的 GROUP 共享按玩家记录的冷却列表。

小数坐标会向下取整到其所在的方块。不要混用旧版 location 与 locations:加载时优先使用 location,但保存期限时会使用非空的 locations 列表。使用 /em remove 移除宝箱时,只会从文件中删除被点击的那个位置,其他位置保持不变。

示例
locations:
- my_world,10,50,10,0,0
- my_nether_world,12,58,12,0,0
- my_world,80,64,-30,0,0:1707394380

chestTier​

设置箱子的层级,它是箱子所掉落战利品等级的基准。基准等级为 chestTier * 10。

键取值默认值
chestTier整数0

chestTier 实际上有多重要,取决于箱子所在的位置以及战利品表中是哪类物品:

情况战利品掉落时的等级
在任何实例之外打开的箱子scalable 精英物品跟随打开箱子玩家的自然生成等级,±1。其他一切使用 chestTier * 10。
动态副本内的箱子一切都使用该副本所选的等级,其中 scalable 精英物品获得 ±1。chestTier 会被忽略。
其他任何实例内的箱子一切都使用 chestTier * 10。

这些等级传给物品生成流程。fixed 仍保留作者设置的属性,limited 仍遵守其配置上限;宝箱不会覆盖这些缩放规则。在普通生存世界中,scalable 跟随开箱者。拟态使用另一套公式,参见 mimicCustomBossesList。

±1 计算的结果最低为等级 1。实例外缺少玩家物品栏数据时,战利品改用 chestTier * 10。

保持默认值 0 会得到基准战利品等级 0。

示例
chestTier: 3

instanced​

设置宝箱是否属于实例。领取后不安排普通的定时补货:SINGLE 移除方块,GROUP 允许每名玩家领取该宝箱一次。同时运行的实例拥有独立的宝箱状态。

SINGLE 存在限制:卸载并重新加载区块,会按当前宝箱的补货期限重新安排补货。因此它可能在期限后于同一实例中再次出现。若需要在整个实例期间保持每人一次的限制,请使用 GROUP。

请勿手动设置此值。

键取值默认值
instanced布尔值false
示例
instanced: true

restockTime​

在箱子被搜刮之后,插件会写入这个键来追踪补货时间。

它只被旧的单箱子格式使用,在那种格式中箱子的位置存放在 location 键里而不是 locations 列表中。只要文件中有任何 locations 条目,补货时间就会改为以 :unixTimestamp 后缀写在对应的 locations 条目上,而这个键会被保持不变。

请勿手动设置此值。

键取值默认值
restockTimeUnix 时间戳(秒)0
示例
restockTime: 1707394380

restockTimers​

存储 GROUP 模式箱子的按玩家冷却数据。玩家搜刮箱子时,插件会自动写入它,并在每次写入时清除已过期的条目。冷却会在发放任何战利品之前保存;如果保存失败,玩家会收到稍后再试的提示,并且什么也得不到。

实例化的箱子不使用这个列表——在实例内部,按玩家的冷却只会在该实例的生命周期内保存在内存中。

请勿手动设置此值。

键取值默认值
restockTimers字符串列表无
示例
restockTimers:
- '12345678-abcd-4ef0-8123-123456789012:1707394380'
- '09876543-abcd-4ef0-8123-098765432109:1707395000'

每个条目包含玩家 UUID 和以秒为单位的 Unix 时间戳,用冒号分隔。


宝箱配置示例
isEnabled: true
chestType: CHEST
facing: NORTH
chestTier: 3
dropStyle: GROUP
lootList:
- filename=elite_scrap_tiny.yml:chance=0.90
- filename=magmaguys_toothpick.yml:chance=0.95
mimicChance: 0.50
mimicCustomBossesList:
- balrog.yml
- killer_rabbit_of_caerbannog.yml
restockTimer: 1
locations:
- world,0.0,-60.0,-14.0,0.0,0.0

注意上面每一个战利品条目都使用了 filename= 前缀。如果写成 magmaguys_toothpick.yml:chance=0.95,它会被当作旧式的 filename.yml:chance 格式来读取,而 chance=0.95 并不是一个数字,因此该条目会在每次启动时记录一条解析警告。

create_chest_chest.jpg