Skip to content

事件系统

事件(Event)是 Xinbot 插件系统的灵魂。通过监听不同的事件,你的插件可以对服务器内的各种变动作出反应。

1. 创建监听器

要监听事件,你需要创建一个实现 xin.bbtt.mcbot.event.Listener 接口的类。强烈建议使用插件内置的 getLogger() 来记录信息。

java
import xin.bbtt.mcbot.event.Listener;
import xin.bbtt.mcbot.event.EventHandler;
import xin.bbtt.mcbot.events.PublicChatEvent;
import xin.bbtt.mcbot.plugin.Plugin;

public class MyChatListener implements Listener {
    private final Plugin plugin;

    public MyChatListener(Plugin plugin) {
        this.plugin = plugin;
    }

    @EventHandler
    public void onPublicChat(PublicChatEvent event) {
        // 使用 getLogger() 而不是 System.out,这样日志会带有插件前缀
        plugin.getLogger().info("[聊天] {}: {}", event.getSender(), event.getMessage());
    }
}

2. 常用事件列表

事件名称触发时机常用方法
PublicChatEvent收到公屏消息getSender(), getMessage()
LoginSuccessEvent成功登录-
ReceivePacketEvent收到原始数据包getPacket()
AnswerQuestionEvent需回答服务器问题getQuestion(), setAnswer()

3. 事件优先级 (Priority)

当多个插件监听同一事件时,执行顺序由优先级决定。 例如,一个防脏话插件应该在 LOWESTLOW 阶段拦截消息,而一个日志插件应该在 MONITOR 阶段只读记录。

Released under the GPL-3.0 License.