破坏方块激怒生物 (Block Break Anger)
基本信息
| 属性 | 值 |
|---|---|
| 类型 | 事件系统(配置 + 事件订阅) |
| 触发条件 | 玩家破坏方块(BlockEvent.BreakEvent) |
| 配置类 | com.github.namikon.angermod.config.BlockBreakAngerConfig |
| 事件类 | com.github.namikon.angermod.events.BlockBreakEvent |
| 默认启用 | false |
| 配置分类 | block-break-anger |
行为
玩家在下界(dimension == -1)或末地(dimension == 1)挖掘黑名单中的方块时,会激怒一定范围内相应的敌对生物。
- 下界:触发后调用
aggroZombiePigmenInRange,将范围内的所有EntityPigZombie(僵尸猪人)目标锁定为该玩家,并播放mob.zombiepig.zpighurt音效。 - 末地:触发后调用
aggroEndermenInRange,将范围内的所有EntityEnderman(末影人)目标锁定为该玩家,并强制其进入setScreaming(true)尖叫姿态。
事件还会过滤掉 FakePlayer(如矿车、骷髅陷阱等假玩家),避免机器刷怪塔等场景被误触发。
数值
| 数值名 | 默认值 | 范围 | 说明 |
|---|---|---|---|
enabled |
false |
bool | 是否启用整个模块 |
endermanAggroRange |
16 | 2 - 128 | 末影人激怒半径(方块) |
pigmanAggroRange |
16 | 2 - 128 | 僵尸猪人激怒半径(方块) |
endBlacklist |
["gregtech:gt.blockores"] |
字符串数组 | 末影人激怒方块,格式 [modid]:[name] 或 [modid]:[name]:[meta] |
netherBlacklist |
["gregtech:gt.blockores"] |
字符串数组 | 僵尸猪人激怒方块,格式同上 |
黑名单解析
- 使用
:分割条目;少于 2 段视为非法并报错。 - 3 段 = 元数据敏感(仅匹配指定 metadata 的方块);4 段及以上会被记录"多余部分被忽略"。
- 通过
GameRegistry.findBlock(modid, name)解析为Block实例;找不到则保留null(即永远不会匹配)。 - 使用
BlockSet内部数据结构同时支持通配条目与元数据敏感条目。
AABB 范围
以玩家坐标为中心,向 ±range 方块扩展的立方体范围(包含边界 +1)
AxisAlignedBB.getBoundingBox(x-r, y-r, z-r, x+r+1, y+r+1, z+r+1)
旧版配置迁移
LegacyAngerModConfig.loadLegacyConfig 会从 config/GTNewHorizons/angermod.cfg 读取以下旧键并写入新字段(迁移完毕后删除旧文件):
EndBlocks/NetherBlocks→endBlacklist/netherBlacklistEnderman/Pigmen(Limits 段)→endermanAggroRange/pigmanAggroRangeBlockBreakEnabled(ModuleControl 段)→enabled