package openmods.access; import com.google.common.reflect.TypeToken; public abstract class ApiProviderBase<A> { @SuppressWarnings("serial") private final Class<? super A> markerType = (new TypeToken<A>(getClass()) {}).getRawType(); private final ApiProviderRegistry<A> apiRegistry; public ApiProviderBase(ApiProviderRegistry<A> apiRegistry) { this.apiRegistry = apiRegistry; } public ApiProviderBase() { this.apiRegistry = new ApiProviderRegistry<A>(markerType); } public void registerClass(Class<? extends A> cls) { apiRegistry.registerClass(cls); } public <T extends A> void registerInstance(T obj) { apiRegistry.registerInstance(obj); } public <T extends A> T getApi(Class<T> cls) { return apiRegistry.getApi(cls); } public <T extends A> boolean isApiPresent(Class<T> cls) { return apiRegistry.isApiPresent(cls); } }