Something went wrong. Try again.
Because why would Drowned have infinitely many tridents? Forked from gitlab.com/ananasem/one-trident-throw-only
Something went wrong. Try again.
1.7 kB · 27 lines
Java
at dev/26.3
12345678910111213141516171819202122232425262728package eu.comosus.ananas.onetridentthrowonly.platform;
import eu.comosus.ananas.onetridentthrowonly.Constants;import eu.comosus.ananas.onetridentthrowonly.platform.services.IPlatformHelper;
import java.util.ServiceLoader;
// Service loaders are a built-in Java feature that allow us to locate implementations of an interface that vary from one// environment to another. In the context of MultiLoader we use this feature to access a mock API in the common code that// is swapped out for the platform specific implementation at runtime.public class Services {
// In this example we provide a platform helper which provides information about what platform the mod is running on. // For example this can be used to check if the code is running on Forge vs Fabric, or to ask the modloader if another // mod is loaded. public static final IPlatformHelper PLATFORM = load(IPlatformHelper.class);
// This code is used to load a service for the current environment. Your implementation of the service must be defined // manually by including a text file in META-INF/services named with the fully qualified class name of the service. // Inside the file you should write the fully qualified class name of the implementation to load for the platform. For // example our file on Forge points to ForgePlatformHelper while Fabric points to FabricPlatformHelper. public static <T> T load(Class<T> clazz) { final T loadedService = ServiceLoader.load(clazz).findFirst().orElseThrow(() -> new NullPointerException("Failed to load service for " + clazz.getName())); Constants.LOG.debug("Loaded {} for service {}", loadedService, clazz); return loadedService; }}