主题
作用
MobSpawnControl 用于在指定世界中按类型控制生物生成。
它不再只处理敌对怪,而是支持两组独立开关:
block-hostile-mobs:是否阻止敌对生物block-friendly-mobs:是否阻止友好生物
当前默认配置是:
block-hostile-mobs: trueblock-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
设置允许放行的生成原因。
- 默认值:
COMMAND、SPAWNER_EGG、CUSTOM []:不放行任何生成原因,命中世界且命中拦截类型后直接阻止生成- 填枚举名列表:这些生成原因仍允许生成,其余原因会被拦截
常见可选值示例:
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联动说明
- 想让大厅既不刷怪,也不允许玩家互相攻击:搭配 PvpControl
- 想同时禁止环境破坏:搭配 WorldProtect、ExplosionProtect、EndermanProtect
- 想看全部脚本索引:看 GroovyScripts 总览
注意事项
allowed-spawn-reasons需要填写CreatureSpawnEvent.SpawnReason的枚举名,大小写当前按不区分处理- 当
block-hostile-mobs: true、block-friendly-mobs: false时,表示“默认只拦敌对生物” - 当
block-hostile-mobs: true、block-friendly-mobs: true且worlds: []与allowed-spawn-reasons: []同时出现时,表示“全世界阻止所有常规生物生成” - 当
allow-mythicmobs: true时,MythicMobs 生物会优先放行,不受上面这条“全拦截”结论影响
