主要插件類別
備註
Sponge 文档中的所有内容都假设读者已经事先掌握了 Java 的基础知识。Sponge API 只提供一个基础,一个为使用 Sponge 的 Minecraft 服务器开发插件的基础。然而,你的代码是否工作,表现力是否丰富,这些取决于你!如果你对 Java 一无所知,有一些免费的在线 Java 课程可以帮助你。
新建你自己的类
在添加一个 Sponge API 作为依赖后的下一步自然就是新建一个类。这个类可以按照你想要的方式去命名,而且可以使用 除了 org.spongepowered
外的任何一个包。按照惯例,一个类的名称应该首字母大写。
Oracle 推荐 你去使用你自己的域名作为你的包名,如果你有这样的一个域名的话。然而,如果你没有拥有一个域名,一种常见的做法是使用一个电子邮件(如 com.gmail.username.project
),或者一个开源仓库的地址(如 io.github.username.project
)。
当你创建好你的主类后,你的主类必须有 Plugin 这个注解(Annotation)。这个注解能够让 Sponge 在读取插件时找到你的主类。下面是一个示例。
package io.github.username.project;
import org.spongepowered.api.plugin.Plugin;
@Plugin(id = "exampleplugin", name = "Example Plugin", version = "1.0")
public class ExamplePlugin {
}
備註
如果你还没有选择好一个插件 ID,可以看看这一部分: 插件識別碼 。
初始化你的插件
插件会在游戏和世界加载前加载。所以对于插件的所有和游戏的交互操作,如注册命令或者事件,都有着明确的时间界线。
你的插件可以监听特定的事件,我们称其为 状态事件(State event),用于通知游戏阶段的变化。在下面的示例中,在 GameStartedServerEvent 发生时, onServerStart()
方法会被调用,请注意在这一方法前添加的 Listener 注解。
import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.game.state.GameStartedServerEvent;
@Plugin(id = "exampleplugin", name = "Example Plugin", version = "1.0")
public class ExamplePlugin {
@Listener
public void onServerStart(GameStartedServerEvent event) {
// Hey! The server has started!
// Try instantiating your logger in here.
// (There's a guide for that)
}
}
小訣竅
如果想要了解关于事件的更多信息可以参见 Sponge 文档的 事件 部分。通常情况下,除了添加 @Listener
前缀之外,一个方法如果想要监听事件还需要把对应的对象注册到 Sponge 的事件总线(Event bus)上。然而,你的主类已经自动完成了这一注册。
状态事件
一个插件很有可能会监听其他的状态事件,特别是 GameStoppingServerEvent
这一事件。对于状态事件来说有两种类别:
初始化:这些事件会在 Sponge 和插件加载时发生。
运行:这些事件会在游戏和世界加载时发生。
有关每个状态事件发生时的信息,请参阅 插件生命周期 这一部分文档。