覆蓋原有服務

此為版本 v0.0.6 後的功能。

在某些情況下, 你可能需要讓其他插件師註冊你的服務,以進行掛接操作。 版本 v0.0.6 後提供了 覆蓋原有服務類,該服務必須繼承 Overridable。 我們以類似 Vault 的中介方式作為範例。

以下為經濟服務中介插件

首先定義經濟服務

public interface EconomyService extends Overridable {

    Result giveMoney(Player player, double money);

    Result takeMoney(Player player, double money);

    Result setMoney(Player player, double money);

    enum Result {
        SUCCESS, FAILED
    }
}

實作默認的經濟服務 (這邊的默認將拋出沒有註冊的錯誤)

public class DefaultEconomyService implements EconomyService {

    @Override
    public Result giveMoney(Player player, double money) {
        throw new IllegalStateException("未註冊任何的經濟插件!");
    }

    @Override
    public Result takeMoney(Player player, double money) {
        throw new IllegalStateException("未註冊任何的經濟插件!");
    }

    @Override
    public Result setMoney(Player player, double money) {
        throw new IllegalStateException("未註冊任何的經濟插件!");
    }
}

最後在主類註冊

經濟服務提供插件 (經濟插件)

首先掛接經濟服務中介插件,然後實作自己的經濟服務。

最後,到主類註冊。

使用經濟服務的插件 (任何)

最後由其他插件掛接經濟服務中介插件並注入經濟服務並使用,範例如下

當然,別忘了任何使用依賴注入的單例都需要註冊。

最后更新于