API 事件
基本信息
| 属性 | 值 |
|---|---|
| 位置 | src/main/java/mytown/api/events/ |
| 事件类 | 6 个 |
| 启用版本 | Minecraft 1.7.10 |
MyTown2 对外暴露的事件 API,供附属 mod 挂钩。
6 个事件基类
| 文件 | 基类 | 覆盖对象 |
|---|---|---|
TownEvent.java |
extends net.minecraftforge.eventbus.Event |
Town |
NationEvent.java |
同上 | Nation |
PlotEvent.java |
同上 | Plot |
RankEvent.java |
同上 | Rank |
ResidentEvent.java |
同上 | Resident |
TownBlockEvent.java |
同上 | TownBlock |
内嵌具体事件(实测 13 个)
每个基类内含若干 public static class。5 个基类各有 Create / Delete 两个事件,
TownEvent 额外有 2 个 —— 合计 13 个内嵌事件:
| 基类文件 | 内嵌事件 | 数量 |
|---|---|---|
TownEvent.java |
TownCreateEvent(19)、TownDeleteEvent(27)、TownEnterEvent(35)、TownEnterInRangeEvent(45) |
4 |
NationEvent.java |
NationCreateEvent、NationDeleteEvent |
2 |
PlotEvent.java |
PlotCreateEvent、PlotDeleteEvent |
2 |
RankEvent.java |
RankCreateEvent、RankDeleteEvent |
2 |
ResidentEvent.java |
ResidentCreateEvent、ResidentDeleteEvent |
2 |
TownBlockEvent.java |
BlockCreateEvent、BlockDeleteEvent |
2 |
⚠️ TownBlockEvent 的两个事件名为 BlockCreateEvent / BlockDeleteEvent,
不带 TownBlock 前缀。这是本 mod 内唯一打破「基类名 + 动作」命名规律的,
按 TownBlockCreateEvent 去搜会搜不到。
⚠️ 只有 TownEvent 有超过 Create/Delete 的事件(TownEnterEvent、
TownEnterInRangeEvent)。其余 5 个基类各只有 2 个。
不能笼统声称「每个实体都有 enter 类事件」。
⚠️ 6 是基类文件数,13 才是内嵌事件总数。 统计「事件数量」时必须逐个内嵌类展开,否则会少报一半以上。
⚠️ 全部继承 Forge 的 net.minecraftforge.eventbus.Event,
不是 MyEssentials 的自定义事件类,也不是 myessentials.event.*。
后者(AE2PartPlaceEvent 等)由
ProtectionHandlers 消费,是另一套事件。
API 声明
包级注解(见 API 包声明):
@cpw.mods.fml.common.API(owner = "MyTown", apiVersion = "1.0", provides = "MyTown|API")
⚠️ provides = "MyTown|API" 中的标识是 MyTown(不带 2),
而 modid 是 MyTown2。这与
SellSign 的 "MyTown:SellSign" 属同一类命名不一致。
相关条目
- API 包声明 -
provides标识 - Town 等 6 个数据模型
- MyEssentials-Core -
myessentials.event.*另一套事件(已收录)