From d5de576591981e2b237ccb6732e8efd36c4be55b Mon Sep 17 00:00:00 2001 From: xGinko Date: Tue, 9 Jul 2024 03:24:17 +0200 Subject: [PATCH] improved reload --- .../modules/VillagerOptimizerModule.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/main/java/me/xginko/villageroptimizer/modules/VillagerOptimizerModule.java b/src/main/java/me/xginko/villageroptimizer/modules/VillagerOptimizerModule.java index eec4db8..530bc71 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/VillagerOptimizerModule.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/VillagerOptimizerModule.java @@ -11,6 +11,7 @@ import space.arim.morepaperlib.scheduling.GracefulScheduling; import java.lang.reflect.Modifier; import java.util.HashSet; +import java.util.Objects; import java.util.Set; public abstract class VillagerOptimizerModule implements Enableable, Disableable { @@ -46,19 +47,21 @@ public abstract class VillagerOptimizerModule implements Enableable, Disableable ENABLED_MODULES.forEach(VillagerOptimizerModule::disable); ENABLED_MODULES.clear(); - for (Class clazz : MODULES_PACKAGE.get(Scanners.SubTypes.of(VillagerOptimizerModule.class).asClass())) { - if (clazz.isInterface() || Modifier.isAbstract(clazz.getModifiers())) continue; + MODULES_PACKAGE.get(Scanners.SubTypes.of(VillagerOptimizerModule.class).asClass()) + .stream() + .filter(clazz -> !clazz.isInterface() && !Modifier.isAbstract(clazz.getModifiers())) + .map(clazz -> { + try { + return (VillagerOptimizerModule) clazz.getDeclaredConstructor().newInstance(); + } catch (Throwable t) { + VillagerOptimizer.logger().error("Failed initialising module '{}'.", clazz.getSimpleName(), t); + return null; + } + }) + .filter(Objects::nonNull) + .forEach(ENABLED_MODULES::add); - try { - VillagerOptimizerModule module = (VillagerOptimizerModule) clazz.getDeclaredConstructor().newInstance(); - if (module.shouldEnable()) { - module.enable(); - ENABLED_MODULES.add(module); - } - } catch (Throwable t) { - VillagerOptimizer.logger().error("Failed to load module {}", clazz.getSimpleName(), t); - } - } + ENABLED_MODULES.forEach(Enableable::enable); } protected void error(String message, Throwable throwable) {