diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-06-03 15:12:06 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-06-03 15:12:06 +0800 |
| commit | 0689696fe2639ea2f2de5fcfa1b6a42bf3d3ac8e (patch) | |
| tree | 950f82789689e0e67fd6e15a4afc0ebe6cd219ac /fabric/src/main/java/me/shedaniel | |
| parent | d0a092c29f21136fb7654afc87afc3557b4b39f4 (diff) | |
| download | RoughlyEnoughItems-0689696fe2639ea2f2de5fcfa1b6a42bf3d3ac8e.tar.gz RoughlyEnoughItems-0689696fe2639ea2f2de5fcfa1b6a42bf3d3ac8e.tar.bz2 RoughlyEnoughItems-0689696fe2639ea2f2de5fcfa1b6a42bf3d3ac8e.zip | |
Throw better errors while constructing entrypoints
Diffstat (limited to 'fabric/src/main/java/me/shedaniel')
| -rw-r--r-- | fabric/src/main/java/me/shedaniel/rei/fabric/PluginDetectorImpl.java | 48 |
1 files changed, 30 insertions, 18 deletions
diff --git a/fabric/src/main/java/me/shedaniel/rei/fabric/PluginDetectorImpl.java b/fabric/src/main/java/me/shedaniel/rei/fabric/PluginDetectorImpl.java index d5e2d2ddd..4e452bf16 100644 --- a/fabric/src/main/java/me/shedaniel/rei/fabric/PluginDetectorImpl.java +++ b/fabric/src/main/java/me/shedaniel/rei/fabric/PluginDetectorImpl.java @@ -36,6 +36,7 @@ import java.util.function.Consumer; public class PluginDetectorImpl { private static <P extends REIPlugin<?>> void loadPlugin(Class<? extends P> pluginClass, Consumer<? super REIPluginProvider<P>> consumer) { + RuntimeException exception = null; for (EntrypointContainer<REIPluginProvider> container : Iterables.concat( FabricLoader.getInstance().getEntrypointContainers("rei_containers", REIPluginProvider.class), FabricLoader.getInstance().getEntrypointContainers("rei_server", REIPluginProvider.class), @@ -44,26 +45,37 @@ public class PluginDetectorImpl { FabricLoader.getInstance().getEntrypointContainers("rei_plugins", REIPluginProvider.class), FabricLoader.getInstance().getEntrypointContainers("rei_plugins_v0", REIPluginProvider.class) )) { - REIPluginProvider<P> plugin = container.getEntrypoint(); - if (pluginClass.isAssignableFrom(plugin.getPluginProviderClass())) { - consumer.accept(new REIPluginProvider<P>() { - @Override - public Collection<P> provide() { - return plugin.provide(); - } - - @Override - public Class<P> getPluginProviderClass() { - return plugin.getPluginProviderClass(); - } - - @Override - public String getPluginProviderName() { - return plugin.getPluginProviderName() + " [" + container.getProvider().getMetadata().getId() + "]"; - } - }); + try { + REIPluginProvider<P> plugin = container.getEntrypoint(); + if (pluginClass.isAssignableFrom(plugin.getPluginProviderClass())) { + consumer.accept(new REIPluginProvider<>() { + @Override + public Collection<P> provide() { + return plugin.provide(); + } + + @Override + public Class<P> getPluginProviderClass() { + return plugin.getPluginProviderClass(); + } + + @Override + public String getPluginProviderName() { + return plugin.getPluginProviderName() + " [" + container.getProvider().getMetadata().getId() + "]"; + } + }); + } + } catch (Throwable t) { + if (exception == null) { + exception = new RuntimeException("Could not create REI Plugin [" + pluginClass.getName() + "] due to errors, provided by '" + container.getProvider().getMetadata().getId() + "'!", t); + } else { + exception.addSuppressed(t); + } } } + if (exception != null) { + throw exception; + } } public static void detectServerPlugins() { |
