插件的主类

注解

阅读 Sponge 文档中的所有内容都建立在你已经事先掌握了 Java 知识的基础上。SpongeAPI 提供了你开始为使用 Sponge 的 Minecraft 服务器开发插件的基础。然而,让你的代码工作和富有创新取决于你!有一些免费的在线 Java 课程可以帮助你,如果你在 Java 方面实在没什么经验。

新建你自己的类

在添加一个 SpongeAPI 作为依赖后的下一步自然就是新建一个类。这个类可以按照你想要的方式去命名,而且可以使用除了 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", description = "Example")
public class ExamplePlugin {

}

注解

如果你还没有选择好一个插件 ID,可以看看这一部分: 插件标识符

初始化你的插件

插件会在游戏和世界加载前加载。所以对于插件的所有和游戏的交互操作,如注册命令或者事件,都有着明确的时间界线。

你的插件可以监听特定的事件,我们称其为 状态事件(State event),用于通知游戏阶段的变化。在下面的示例中,在 GameStartedServerEvent 发生时, onServerStart() 方法会被调用,请注意在这一方法前添加的 Listener 注解。

下列示例会在服务器启动时打印一条信息。如果你的插件正确加载了,你会在服务器的初始化输出中找到这条信息。

import org.spongepowered.api.plugin.Plugin;
import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.game.state.GameStartedServerEvent;

// Imports for logger
import com.google.inject.Inject;
import org.slf4j.Logger;

@Plugin(id = "exampleplugin", name = "Example Plugin", version = "1.0", description = "Example")
public class ExamplePlugin {

    @Inject
    private Logger logger;

    @Listener
    public void onServerStart(GameStartedServerEvent event) {
        logger.info("Successfully running ExamplePlugin!!!");
    }

}

小技巧

如果想要了解关于事件的更多信息可以参见 Sponge 文档的 事件 部分。通常情况下,除了添加 @Listener 前缀之外,一个方法如果想要监听事件还需要把对应的对象注册到 Sponge 的事件总线(Event bus)上。然而,你的主类已经自动完成了这一注册。

状态事件

一个插件很有可能会监听其他的状态事件,特别是 GameStoppingServerEvent 这一事件。对于状态事件来说有两种类别:

有关每个状态事件发生时的信息,请参阅 插件生命周期 这一部分文档。