Skip to content

作用

MobSpawnControl 用于在指定世界中按类型控制生物生成。

它不再只处理敌对怪,而是支持两组独立开关:

  • block-hostile-mobs:是否阻止敌对生物
  • block-friendly-mobs:是否阻止友好生物

当前默认配置是:

  • block-hostile-mobs: true
  • block-friendly-mobs: false

也就是:默认关闭敌对生物生成,默认保留友好生物生成。

另外,脚本默认会放行 MythicMobs 生物;如果你希望连 MythicMobs 一起拦截,需要显式关闭 allow-mythicmobs

默认配置:GroovyConfig/MobSpawnControl.yml

如果你在 config.yml -> feature-scripts.config-directory 中改过脚本配置目录,请以实际目录为准。

新版脚本启动时会检查是否还存在旧版 HostileMobBlock.groovy / HostileMobBlock.yml,如果存在会在控制台提示你删除旧文件并改用新版命名。

配置示例

yml
# 是否启用该脚本
# 控制指定世界中的生物生成;默认仅阻止敌对生物,友好生物保持允许
enabled: true

# 生效世界列表
# 留空 [] 表示所有世界都生效
# 示例:
# worlds:
#   - world
#   - world_nether
worlds: []

# 是否阻止敌对生物生成
# true = 关闭敌对生物生成(默认)
block-hostile-mobs: true

# 是否阻止友好生物生成
# false = 保持友好生物可正常生成(默认)
block-friendly-mobs: false

# 是否允许 MythicMobs 生物生成
# 开启后,已被 MythicMobs 标记的生物,或处于 MythicMobs 生成流程中的生物,将不受本脚本拦截
allow-mythicmobs: true

# 允许放行的生成原因
# 默认已放行:
# - COMMAND: 原版 /summon 指令生成
# - SPAWNER_EGG: 玩家使用怪物蛋生成
# - CUSTOM: 插件自定义生成(例如 HNCore 工具箱中的实体召唤)
# 留空 [] 表示不放行任何生成原因,也就是命中世界且命中拦截类型后直接阻止生成
# 如需额外放行刷怪笼、发射器怪物蛋等,可自行追加 SPAWNER / DISPENSE_EGG
allowed-spawn-reasons:
  - COMMAND
  - SPAWNER_EGG
  - CUSTOM

关键项说明

worlds

限定脚本生效的世界。

  • []:所有世界生效
  • 填世界名列表:只在这些世界生效

如果你只想让大厅、主城、剧情世界或新手世界控制刷怪,可以只填写这些世界名。

block-hostile-mobs

是否阻止敌对生物生成。

  • true:命中本脚本后,敌对生物会继续参与拦截判断
  • false:敌对生物直接跳过本脚本

当前实现按 Enemy 接口识别敌对实体,因此覆盖范围比旧版 Monster 更贴近“敌对生物”语义。

block-friendly-mobs

是否阻止友好生物生成。

  • true:命中本脚本后,非敌对生物也会参与拦截判断
  • false:友好生物直接跳过本脚本

如果你想做“世界完全静态,不刷任何生物”的区域,可以把它改为 true

allow-mythicmobs

是否默认放行 MythicMobs 生物。

  • true:如果实体已被 MythicMobs 标记为 MythicMob,或当前处于 MythicMobs 生成流程中,则直接放行,不再进入后续拦截判断
  • false:MythicMobs 生物也会继续参与本脚本判断,是否拦截取决于 worlds、类型开关与 allowed-spawn-reasons

如果你的大厅或主城会放一些自定义展示怪、剧情怪或 Boss,通常建议保持 true

allowed-spawn-reasons

设置允许放行的生成原因。

  • 默认值:COMMANDSPAWNER_EGGCUSTOM
  • []:不放行任何生成原因,命中世界且命中拦截类型后直接阻止生成
  • 填枚举名列表:这些生成原因仍允许生成,其余原因会被拦截

常见可选值示例:

  • SPAWNER:保留刷怪笼生成
  • DISPENSE_EGG:保留发射器怪物蛋生成
  • SPAWNER_EGG:保留玩家使用怪物蛋生成
  • COMMAND:保留命令生成
  • CUSTOM:保留其他插件自定义生成
  • NATURAL:保留自然刷新

如果你的目标是“大厅不自然刷怪,但管理员、玩家怪物蛋和插件还能正常召唤”,保持默认值通常就够了;如果还想放行刷怪笼,可以再补 SPAWNER

实际行为

当前实现监听的是 CreatureSpawnEvent

只要满足:

  • 脚本已启用
  • 当前世界命中 worlds
  • 当前实体命中了 block-hostile-mobs / block-friendly-mobs 对应的拦截类型
  • 当前实体没有因为 allow-mythicmobs: true 而被 MythicMobs 放行
  • 当前 spawnReason 不在 allowed-spawn-reasons

就会直接取消这次生成。

这意味着它不只会影响自然刷新,也会影响命令、怪物蛋、刷怪笼或其他插件触发的生成;是否保留这些来源,取决于你有没有在 allowed-spawn-reasons 中明确放行。

启用与重载

修改这个脚本的配置文件后,通常执行:

text
/hncore reload scripts

如果你改的是 config.yml 中的脚本目录名、脚本系统总开关等核心配置,则应执行:

text
/hncore reload

联动说明

注意事项

  • allowed-spawn-reasons 需要填写 CreatureSpawnEvent.SpawnReason 的枚举名,大小写当前按不区分处理
  • block-hostile-mobs: trueblock-friendly-mobs: false 时,表示“默认只拦敌对生物”
  • block-hostile-mobs: trueblock-friendly-mobs: trueworlds: []allowed-spawn-reasons: [] 同时出现时,表示“全世界阻止所有常规生物生成”
  • allow-mythicmobs: true 时,MythicMobs 生物会优先放行,不受上面这条“全拦截”结论影响

HN 系列插件文档