aboutsummaryrefslogtreecommitdiff
path: root/fabric/src/main/java/me/shedaniel
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-06-03 15:12:06 +0800
committershedaniel <daniel@shedaniel.me>2021-06-03 15:12:06 +0800
commit0689696fe2639ea2f2de5fcfa1b6a42bf3d3ac8e (patch)
tree950f82789689e0e67fd6e15a4afc0ebe6cd219ac /fabric/src/main/java/me/shedaniel
parentd0a092c29f21136fb7654afc87afc3557b4b39f4 (diff)
downloadRoughlyEnoughItems-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.java48
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() {