001package com.ericlam.mc.eld;
002
003import java.util.function.Consumer;
004
005/**
006 * ELDependenci API
007 */
008public interface ELDependenciAPI {
009
010    /**
011     * 不應手動註冊,而應繼承 {@link ELDPlugin} 取代註冊
012     *
013     * @param plugin   eld 插件
014     * @param injector 註冊服務
015     * @return 管理器提供
016     */
017    ManagerProvider<?> register(ELDPlugin plugin, Consumer<ServiceCollection> injector);
018
019
020    /**
021     * 對外提供接口服務。主要用於框架以外的插件想要存取本插件的服務的時候
022     * @param serviceCls 服務接口
023     * @param <T> 服務類
024     * @return 服務, 如無則報錯
025     */
026    <T> T exposeService(Class<T> serviceCls);
027
028}