跳到主要内容

常见陷阱

虽然我们努力使 API 使用起来令人愉快,但偶尔也会有一些棘手的问题,你应该注意这些问题。

在构造时访问 API

在 Velocity 中,插件加载分为两个步骤:构造和初始化。你的插件构造函数中的代码是构造阶段的一部分。 在构造期间你能安全做的事情很少,特别是因为 API 没有指定在构造期间哪些操作是安全的。 值得注意的是,你不能在构造函数中注册事件监听器,因为你需要有一个有效的插件注册, 但 Velocity 在插件构造完成之前无法注册插件。

要打破这个循环,你应该始终等待初始化,当 Velocity 触发 ProxyInitializeEvent 时就表示初始化完成。 我们可以通过为这个事件添加一个监听器来在初始化时执行操作,如下所示。 注意,Velocity 会自动将你的插件主类注册为监听器。

@Subscribe
public void onProxyInitialization(ProxyInitializeEvent event) {
// 在这里执行需要访问 Velocity API 的操作。
// 例如,我们可以注册一个事件:
server.getEventManager().register(this, new PluginListener());
}

受众操作不完全支持

Velocity 目前不支持 Adventure API 的所有受众操作,所以这些操作应该在后端处理。 此外,播放声音之前被认为是不可行的,因为对于 1.19.3 以下的版本,需要一个硬编码的声音 ID 注册表。

操作是否支持
聊天消息
动作栏消息
标题
Boss 栏
标签列表头部和底部
资源包
声音
书本