快速開始

本頁將教你如何創建你的第一個使用 ELD framework 框架開發的插件。

在閱讀本教程之前,可以先參閱以下字眼的定義以更易理解教程。

  • 文件 - 泛指 YAML

  • 參數 - 泛指指令參數

  • 服務 - 泛指 界面接口,可用作 插件對外接口 (API)

  • 單例 - 保持單一的實例。如果用於實現接口,通常不會用於注入。

若果你使用 Maven, 你可以依照下列的 文本 掛接 ELDependenci 框架。

本框架採用 github packages 作為 maven 庫。你可以在 這裏 進一步了解如何掛接。

<repository>
    <id>github</id>
    <url>https://maven.pkg.github.com/ELDependenci/eldependenci</url>
</repository>
<dependency>
    <groupId>org.eldependenci</groupId>
    <artifactId>eldependenci-bukkit</artifactId>
    <version>{最新版本}</version>
    <scope>provided</scope>
</dependency>

首先你需要創建兩個 classes, 第一個是 Registry,用於註冊監聽器與指令。

public class TesterRegistry implements ComponentsRegistry {


    @Override
    public void registerCommand(CommandRegistry<CommandSender> commandRegistry) { //註冊指令
    }

    @Override
    public void registerListeners(ListenerRegistry<Listener> listenerRegistry) { //註冊監聽器
    }

}

第二個是 LifeCycle, 用於插件的生命週期執行。

從上述掛接方式你會發現,LifeCycle 類 和 Registry 類在 bungee 和 bukkit 掛接方式中都是同名的,這是為了確保在編寫不同平台插件時保持統一的編寫習慣。 雖然這些類都是同名,但是 package 路徑並不一樣。他們分別放置於 bukkit 包路徑和 bungee 包路徑內,因此仍有助讓你分別該類是屬於哪一個平台,防止混淆。

開始創建你的 Main Class。

創建指令

以下範例將編寫分支指令。

最後,在 Registry class 定義關係。

同樣,雖然所有平台都統一使用 CommandNode 作為指令接口,但其包路徑對應所屬平台會有所不同。例如在上述 CommandNode 例子中, bukkit 的路徑是 com.ericlam.mc.eld.bukkit.CommandNode, 而 bungee 的路徑則是 com.ericlam.mc.eld.bungee.CommandNode 。

事件監聽器

在註冊事件監聽器中,你可以直接註冊原版的事件監聽器來使其可以進行依賴注入。

Yaml 文件配置

此框架採用 ORM 設計進行 Yaml 文件配置。假設你有如下文件配置:

文件映射物件需設計如下。

此框架文件配置採用 jackson-databind-yaml 作為基礎,因此你可以使用任何的 jackson-annotations 以控制映射物件。

假若你的文件配置如下,則可使用 Map 裝載。

最後在你的 Main class 中,註冊 映射物件。

注入實例

注入文件映射物件

以分支指令為例。

以事件監聽器為例

注入自定義單例 (Singleton)

註冊單例

使用: 以生命週期為例

@Inject 除了使用在 instance field 之外,你也可以使用於 constructor (建構子/構造器) 之中。

注入服務 (Service)

服務與單例性質基本相同,但其分別在於服務是使用 interface 作為媒介,而 單例 則使用 實例 。 使用 interface 作為媒介的好處在於避免出現高耦合的問題,通常適用於作為插件對外接口(API), 或是出現不同的實作方式時。

最后更新于