破坏方块激怒生物 (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 / netherBlacklist
  • Enderman / Pigmen(Limits 段)→ endermanAggroRange / pigmanAggroRange
  • BlockBreakEnabled(ModuleControl 段)→ enabled

相关条目