ProtectionHandlers
基本信息
| 属性 | 值 |
|---|---|
| 类名 | mytown.protection.ProtectionHandlers |
| 文件 | src/main/java/mytown/protection/ProtectionHandlers.java |
| 行数 | 554 |
| 订阅方法 | 20 个 @SubscribeEvent |
| 单例 | ProtectionHandlers.instance |
| 启用版本 | Minecraft 1.7.10 |
功能
把 ProtectionManager 的静态判定挂到 Forge 事件总线上。
注册位置在 Mod 入口 的 registerHandlers(),双总线注册:
FMLCommonHandler.instance().bus().register(ProtectionHandlers.instance);
MinecraftForge.EVENT_BUS.register(ProtectionHandlers.instance);
事件清单(20 个)
| 事件 | 优先级 | 关注点 |
|---|---|---|
AttackEntityEvent |
HIGHEST | 攻击实体 |
BlockEvent.PlaceEvent |
默认 | 放置方块 |
BlockEvent.MultiPlaceEvent |
默认 | 多方块整体放置 |
EntityInteractEvent |
默认 | 实体交互 |
ProjectileImpactEvent |
HIGHEST | 抛射物命中 |
PlayerInteractEvent |
HIGHEST | 玩家交互 |
AE2PartPlaceEvent |
HIGHEST | AE2 部件放置 |
ModifyBlockEvent |
HIGHEST | 改写方块 |
BlockTrampleEvent |
HIGHEST | 踩踏破坏(Forestry) |
ModifyBiomeEvent |
HIGHEST | 改写生物群系 |
BlockEvent.BreakEvent |
HIGHEST | 破坏方块 |
EntityItemPickupEvent |
默认 | 拾取掉落物 |
LivingAttackEvent |
默认 | 生物攻击 |
FillBucketEvent |
默认 | 桶装取 |
PlayerEvent.PlayerChangedDimensionEvent |
默认 | 换维度 |
| 另 5 个 | — | 见文件 |
实现要点
⚠️ AE2PartPlaceEvent / BlockTrampleEvent / ModifyBiomeEvent / ModifyBlockEvent /
ProjectileImpactEvent 并非 Minecraft 或 AE2 / Forestry 原生事件,
它们的包名是 myessentials.event(ProtectionHandlers.java:34-36 等),
由 MyEssentials-Core 定义并代为投递。
即 MyEssentials-Core 充当统一事件兼容层:AE2 部件放置、Forestry 踩踏、 生物群系改写等被包成自己的事件再 post 到 Forge 总线。
因此不能说 MyTown2 直接依赖 Applied Energistics 2 或 Forestry ——
Constants.DEPENDENCIES 里没有它们,AE2 / Forestry 缺失时只是相应保护不生效,
不会导致启动失败。
- 多数高危判定用
EventPriority.HIGHEST,以便在其他 mod 改写事件前先行拦截。 onMultiBlockPlacement与onBlockPlacement共用onAnyBlockPlacement(...)处理逻辑。- 换维度事件
onPlayerChangedDimensionEvent与 ProtectionManager 的checkLocationOnDimensionChanged(...)配合。
相关条目
- ProtectionManager - 判定逻辑本体
- ExtraEventsHandler - 额外事件挂接
- MyEssentials-Core - 事件兼容层来源(已收录)
- Mod 入口 - 双总线注册