-
Notifications
You must be signed in to change notification settings - Fork 2
Event API
XiaoColorful edited this page Nov 12, 2025
·
7 revisions
事件机制简述:
- 编写一些事件处理函数,将他们集中添加至注册处
- 玩家登录时派发(玩家登录)事件;玩家被击杀时派发(玩家死亡)事件;……
- 派发事件即从注册处按优先级顺序逐个执行事件处理函数
package xiao.battleroyale.api.event;
public enum CustomEventType {
// 自定义事件类型
}
- 名称带
"Finish"的事件类型不可取消
package xiao.battleroyale.api.event;
public enum EventType {
SERVER_TICK_EVENT,
CLIENT_TICK_EVENT,
LIVING_DAMAGE_EVENT,
LIVING_DEATH_EVENT,
PLAYER_LOGGED_IN_EVENT,
PLAYER_LOGGED_OUT_EVENT
}
- 仅包含本模组需要使用的事件类型
package xiao.battleroyale.api.event;
public enum EventPriority {
HIGHEST,
HIGH,
NORMAL,
LOW,
LOWEST;
}
- 自定义事件优先级与模组事件一致
boolean receiveCanceled;
- 通过本模组提供的API注册,对于相同优先级的自定义事件和模组事件,
receivedCanceled = true的事件一定在所有receivedCanceled = false的事件之后执行
- 在Forge/NeoForge该操作为“监听事件”,而本模组已经封装相关接口,即只需要注册事件处理器即可自动监听
- 建议保留注册的事件处理器的实例,以取消注册
ICustomEventRegister customEventRegister = xiao.battleroyale.BattleRoyale.getEventRegister(); // 自定义事件注册API
ICustomEventHandler handler; // 自定义事件处理器
ICustomEventType customEventType; // 自定义事件类型
Priority priority; // 事件优先级
boolean receiveCanceled; // 是否接收被取消的事件
customEventRegister.register(handler, customEventType, priority, receiveCanceled);
BattleRoyale.getEventRegister()自模组加载时即可用
EventRegister eventRegister = xiao.battleroyale.event.EventRegister.get(); // 模组事件注册API
EventHandler handler; // 模组事件处理器
IEventType eventType; // 模组事件类型
Priority priority; // 事件优先级
boolean receiveCanceled; // 是否接收被取消的事件
- 模组事件处理器需要在游戏中手动注册/取消注册,而不是在模组加载时就注册
A brief description of the event mechanism:
- Write event handler functions and register them collectively to the registry.
- An event is dispatched (e.g., Player Logged In) when a player logs in; an event is dispatched (e.g., Player Death) when a player is killed; etc.
- Dispatching an event means executing the event handler functions in priority order from the registry one by one.
package xiao.battleroyale.api.event;
public enum CustomEventType {
// Custom event types
}- Event types with
"Finish"in their name are non-cancellable.
package xiao.battleroyale.api.event;
public enum EventType {
SERVER_TICK_EVENT,
CLIENT_TICK_EVENT,
LIVING_DAMAGE_EVENT,
LIVING_DEATH_EVENT,
PLAYER_LOGGED_IN_EVENT,
PLAYER_LOGGED_OUT_EVENT
}- Only includes event types required by this mod.
package xiao.battleroyale.api.event;
public enum EventPriority {
HIGHEST,
HIGH,
NORMAL,
LOW,
LOWEST;
}
- Custom event priorities are consistent with mod events.
boolean receiveCanceled;
- When registered via the API provided by this mod, for Custom Events and Mod Events of the same priority, events with
receivedCanceled = truewill always be executed after all events withreceivedCanceled = false.
- In Forge/NeoForge, this operation is "listening for events." This mod has encapsulated the relevant interfaces, meaning you only need to register the event handler to automatically listen for events.
- It is recommended to retain the instance of the registered event handler for unregistration purposes.
ICustomEventRegister customEventRegister = xiao.battleroyale.BattleRoyale.getEventRegister(); // Custom event registration API
ICustomEventHandler handler; // Custom event handler
ICustomEventType customEventType; // Custom event type
Priority priority; // Event priority
boolean receiveCanceled; // Whether to receive canceled events
customEventRegister.register(handler, customEventType, priority, receiveCanceled);
BattleRoyale.getEventRegister()is available from the moment the mod is loaded.
EventRegister eventRegister = xiao.battleroyale.event.EventRegister.get(); // Mod event registration API
EventHandler handler; // Mod event handler
IEventType eventType; // Mod event type
Priority priority; // Event priority
boolean receiveCanceled; // Whether to receive canceled events
- Mod event handlers need to be manually registered/unregistered in-game, not upon mod loading.
🌐 Language / 语言
-
- Configuration Introduction
- Command Introcuction
- Game type introduction
- About
- Mod development tutorial