创建生成点
什么是自定义生成点?
自定义生成点由事件和全局援军使用,用于设定事件应如何、在哪里以及何时生成该事件的 Boss。
事件和全局援军通过写下文件名来设定它们使用的生成点。
创建自定义生成点
自定义生成点位于 customspawns 文件夹中。一个自定义生成点可以同时被多个事件使用,因此你不需要为每个事件创建一个。
以下是一个自定义生成点的示例:
isEnabled: true
validWorldEnvironments:
- NORMAL
- CUSTOM
bypassWorldGuard: false
isSurfaceSpawn: true
创建任意位置生成点
要创建一个可以在任何地方发生的生成点,你的配置应该如下所示:
isEnabled: true
canSpawnInLight: true
此配置取消光照限制,不额外添加世界、时间或月相过滤。启用世界列表、默认 Y 范围、附近的合格玩家、已加载区块、保护标志以及下文的位置检查仍然适用。
如果你有兴趣创建更自定义的生成点,请继续阅读下方内容。
值
isEnabled
设定生成点是否启用。
| 键 | 值 | 默认值 |
|---|---|---|
isEnabled | 布尔值 | true |
示例
isEnabled: true
lowestYLevel
设置最低 Y 坐标。默认值 0 排除 Y 为负数的洞穴;使用 -64 等负值可允许地下搜索进入更深的洞穴。这不会改变初始随机 Y 范围或向上搜索的内置高度上限。
| 键 | 值 | 默认值 |
|---|---|---|
lowestYLevel | 整数 | 0 |
示例
lowestYLevel: 0
highestYLevel
设定使用的最高 Y 级别(地图高度)。
| 键 | 值 | 默认值 |
|---|---|---|
highestYLevel | 整数 | 320 |
示例
highestYLevel: 320
validWorlds
过滤普通玩家选择中的世界,定时事件也使用此流程。省略后不添加自己的世界过滤,但 ValidWorlds.yml 和其他资格检查仍然适用。全局援军直接选择召唤者世界中的玩家,不使用此过滤。
| 键 | 值 | 默认值 |
|---|---|---|
validWorlds | 字符串列表 | 无 |
示例
validWorlds:
- WORLD
- FUN_LAND
如果你希望所有世界都有效,可以不使用该设定或者这样格式化:
validWorlds: []
validWorldEnvironments
过滤普通玩家选择中的世界环境。省略后不额外限制环境。全局援军直接选择召唤者世界中的玩家,不使用此过滤。
| 键 | 值 | 默认值 |
|---|---|---|
validWorldEnvironments | 环境列表 | 无 |
示例
validWorldEnvironments:
- NORMAL
- NETHER
如果你希望所有环境都有效,可以不使用该设定或者这样格式化:
validWorldEnvironments: []
validBiomesV2
设定可以发生自定义生成的生物群系。省略此项或使用空列表,即不添加任何生物群系限制。
此设定在旧版 EM 中称为 validBiomes。
每个条目都是一个生物群系键。不带命名空间的名称(例如 plains 或 DEEP_OCEAN)会被读取为 minecraft:<name>,且不区分大小写。只要有任何条目不是已注册的生物群系,EliteMobs 就会记录一条警告并禁用整个生成文件,使用该文件的事件和全局援军都将无法生成。
生物群系在随机抽取的候选点处读取,此时 EliteMobs 尚未确定最终的 Y 坐标。请参阅生成位置是如何选出的。
| 键 | 值 | 默认值 |
|---|---|---|
validBiomesV2 | 生物群系列表 | 无 |
示例
validBiomesV2:
- minecraft:plains
- desert
earliestTime
设置允许生成的最早游戏时间。时间范围包含两个端点,不能跨越午夜:若 earliestTime 大于 latestTime,生成会一直被阻止。
找到位置后,EliteMobs 每 tick 检查 earliestTime、latestTime 和 moonPhase,在该位置等待条件满足。等待后不会重新检查玩家距离、光照、区块加载状态或 WorldGuard。放置 Boss 前仍会执行最终僵尸测试和和平旗帜检查。
| 键 | 值 | 默认值 |
|---|---|---|
earliestTime | 长整数 | 0 |
示例
earliestTime: 0
latestTime
设置允许生成的最晚游戏时间,包含该时刻。请保持大于或等于 earliestTime。
| 键 | 值 | 默认值 |
|---|---|---|
latestTime | 长整数 | 24000 |
示例
latestTime: 24000
moonPhase
设定自定义生成所需的月相。
| 键 | 值 | 默认值 |
|---|---|---|
moonPhase | 特殊 [1] | 无 |
示例
moonPhase: FULL_MOON
特殊 [1]
展开表格
| 月相 | 预览 |
|---|---|
NEW_MOON | 🌑 |
WAXING_CRESCENT | 🌒 |
FIRST_QUARTER | 🌓 |
WAXING_GIBBOUS | 🌔 |
FULL_MOON | 🌕 |
WANING_GIBBOUS | 🌖 |
WANING_CRESCENT | 🌘 |
LAST_QUARTER | 🌗 |
bypassWorldGuard
本意是让自定义生成绕过 WorldGuard 等保护系统。
此设定目前不起任何作用。 EliteMobs 会从你的生成文件中读取这个键,但从不据此行动,因此无论你在这里设置什么,WorldGuard 标志始终会被检查。若要让生成发生在受保护的区域内,请改为在该区域上设置相应的 WorldGuard 标志。
| 键 | 值 | 默认值 |
|---|---|---|
bypassWorldGuard | 布尔值 | false |
canSpawnInLight
控制位置选择时的光照检查。设为 false 时,方块的综合光照等级必须不超过 8,包括天空光。设为 true 则跳过此检查。
| 键 | 值 | 默认值 |
|---|---|---|
canSpawnInLight | 布尔值 | false |
示例
canSpawnInLight: false
isSurfaceSpawn
设定自定义生成是否只能在世界表面发生。
| 键 | 值 | 默认值 |
|---|---|---|
isSurfaceSpawn | 布尔值 | false |
示例
isSurfaceSpawn: false
isUndergroundSpawn
设定自定义生成是否只能在地下发生。
| 键 | 值 | 默认值 |
|---|---|---|
isUndergroundSpawn | 布尔值 | false |
示例
isUndergroundSpawn: false
生成位置是如何选出的
EliteMobs 并不会扫描整个世界去找地点。它会随机挑选一名在线玩家,然后从该玩家出发做偏移:
- 随机选择一名合格玩家。如果 EliteMobs 数据未加载、世界不在
ValidWorlds.yml中、位于地下城、竞技场或职业试炼的实例区域内、世界禁止怪物生成,或被validWorlds/validWorldEnvironments排除,则跳过该玩家。定时事件还会排除 EliteMobs 地下城世界内的玩家。此选择不会按游戏模式排除玩家。 - X 和 Z 各取 24 至 127 格偏移量,正负方向分别随机选择。未加载区块中的候选位置会被拒绝;搜索不会加载区块。
- Y 由
isSurfaceSpawn或isUndergroundSpawn决定。两者都未启用时,向上寻找不可穿过的方块上方连续两格空气的位置。 - 随后该候选位置会经过下面列出的各项验证。
全局援军使用召唤者世界中的所有玩家,取代步骤 1 的过滤列表。因此会跳过该步骤的数据加载、世界、环境、实例和怪物生成游戏规则检查。候选位置仍须通过生物群系、高度、距离、光照和 WorldGuard 检查。
最多尝试 100 个候选位置,每 tick 一个。全部失败后等待一分钟再试。初始 Y 在 0 至 255 之间。普通向上搜索从该采样值开始,在 highestYLevel 与世界建筑高度上限以下两格之间取较低者停止。地下向下搜索即使配置了更低的 lowestYLevel,也会在 Y=-63 停止。地表和地下模式各有自己的搜索流程,同时启用时地表优先。
生成验证行为
EliteMobs 在搜索期间检查候选位置。时间和月相允许生成后,才执行最终僵尸测试和和平旗帜检查:
- 玩家距离:拒绝与任何玩家的三维距离小于 24 格的候选位置
- 下界天花板:下界维度中 Y=127 以上的生成会被阻止
- 方块安全性:地下搜索要求固体地面,普通向上搜索要求不可穿过的方块。两者都要求其上有两格空气。地表模式使用该列最高方块上方一格的位置,不执行相同的净空检查。
- Y 级别:最终位置必须处于
lowestYLevel与highestYLevel之间 - 游戏规则:普通玩家选择遵守世界的怪物生成规则。Minecraft 1.21.11 起为
spawnMobs,此前为doMobSpawning。全局援军跳过此选择检查。 - WorldGuard 标志:检查
elitemobs-events、elitemob-spawning以及 WorldGuard 自身的mob-spawning标志 - 和平旗帜:若
PeaceBanner.yml的suppressEvents保持默认启用,受保护的位置会取消本次生成尝试。定时事件会安排下一次事件,此检查不会为当前尝试重新搜索位置。 - 最终试探性生成:在 Boss 出现之前的最后一刻,EliteMobs 会在该位置生成并立即移除一只普通的原版僵尸。如果有其他保护插件阻止了这只僵尸,该位置会被丢弃并重新开始搜索
这些检查自动执行。光照和和平旗帜有上述配置开关;bypassWorldGuard 不会关闭 WorldGuard 检查。
