diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/Bindings.java b/fmlcore/src/main/java/net/minecraftforge/fml/Bindings.java index 6a34cea208..52149f1a51 100644 --- a/fmlcore/src/main/java/net/minecraftforge/fml/Bindings.java +++ b/fmlcore/src/main/java/net/minecraftforge/fml/Bindings.java @@ -5,36 +5,39 @@ package net.minecraftforge.fml; -import cpw.mods.modlauncher.util.ServiceLoaderUtils; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.config.IConfigEvent; import net.minecraftforge.fml.loading.FMLLoader; +import java.util.ServiceConfigurationError; import java.util.ServiceLoader; import java.util.function.Supplier; +/** + * Used to allow access to certain things from the game layer + */ public class Bindings { - private static final Bindings INSTANCE = new Bindings(); + private Bindings() {} - private final IBindingsProvider provider; - - private Bindings() { - final var providers = ServiceLoaderUtils.streamServiceLoader(()->ServiceLoader.load(FMLLoader.getGameLayer(), IBindingsProvider.class), sce->{}).toList(); - if (providers.size() != 1) { - throw new IllegalStateException("Could not find bindings provider"); - } - this.provider = providers.get(0); - } + /** + * The provider of the bindings + * @implNote May also throw a {@link ServiceConfigurationError} + */ + private static final IBindingsProvider PROVIDER = ServiceLoader.load(FMLLoader.getGameLayer(), IBindingsProvider.class) + .findFirst().orElseThrow(() -> new IllegalStateException("Could not find bindings provider")); + /** + * @return A supplier of net.minecraftforge.common.MinecraftForge#EVENT_BUS + */ public static Supplier getForgeBus() { - return INSTANCE.provider.getForgeBusSupplier(); + return PROVIDER.getForgeBusSupplier(); } public static Supplier getMessageParser() { - return INSTANCE.provider.getMessageParser(); + return PROVIDER.getMessageParser(); } public static Supplier getConfigConfiguration() { - return INSTANCE.provider.getConfigConfiguration(); + return PROVIDER.getConfigConfiguration(); } }