覆蓋原有服務
此為版本 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("未註冊任何的經濟插件!");
}
}最後在主類註冊
經濟服務提供插件 (經濟插件)
首先掛接經濟服務中介插件,然後實作自己的經濟服務。
最後,到主類註冊。
使用經濟服務的插件 (任何)
最後由其他插件掛接經濟服務中介插件並注入經濟服務並使用,範例如下
當然,別忘了任何使用依賴注入的單例都需要註冊。
在註冊 ShopManager 的同時,它也將可被其他單例注入使用。
最后更新于