diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java index ca4373adc..b2f33e78f 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -121,7 +121,6 @@ public abstract class AbstractPlatform implements Platform { logger.error("Error loading config.yml resource from jar", e); } - config.load(this); // load config.yml if(config.dumpDefaultConfig()) { @@ -134,55 +133,7 @@ public abstract class AbstractPlatform implements Platform { profiler.start(); } - List addonList = new ArrayList<>(); - - InternalAddon internalAddon = new InternalAddon(); - - addonList.add(internalAddon); - - platformAddon().forEach(addonList::add); - - BootstrapAddonLoader bootstrapAddonLoader = new BootstrapAddonLoader(); - - Path addonsFolder = getDataFolder().toPath().resolve("addons"); - - Injector platformInjector = new InjectorImpl<>(this); - platformInjector.addExplicitTarget(Platform.class); - - bootstrapAddonLoader.loadAddons(addonsFolder, getClass().getClassLoader()) - .forEach(bootstrapAddon -> { - platformInjector.inject(bootstrapAddon); - - bootstrapAddon.loadAddons(addonsFolder, getClass().getClassLoader()) - .forEach(addonList::add); - }); - addonList.sort(Comparator.comparing(StringIdentifiable::getID)); - if(logger.isInfoEnabled()) { - StringBuilder builder = new StringBuilder(); - builder.append("Loading ") - .append(addonList.size()) - .append(" Terra addons:"); - - for(BaseAddon addon : addonList) { - builder.append("\n ") - .append("- ") - .append(addon.getID()) - .append("@") - .append(addon.getVersion().getFormatted()); - } - - logger.info(builder.toString()); - } - - DependencySorter sorter = new DependencySorter(); - addonList.forEach(sorter::add); - sorter.sort().forEach(addon -> { - platformInjector.inject(addon); - addon.initialize(); - if(!(addon instanceof EphemeralAddon)) { // ephemeral addons exist only for version checking - addonRegistry.register(addon.key(addon.getID()), addon); - } - }); + InternalAddon internalAddon = loadAddons(); eventManager.getHandler(FunctionalEventHandler.class) .register(internalAddon, PlatformInitializationEvent.class) @@ -198,6 +149,61 @@ public abstract class AbstractPlatform implements Platform { logger.info("Finished initialization."); } + protected InternalAddon loadAddons() { + List addonList = new ArrayList<>(); + + InternalAddon internalAddon = new InternalAddon(); + + addonList.add(internalAddon); + + platformAddon().forEach(addonList::add); + + BootstrapAddonLoader bootstrapAddonLoader = new BootstrapAddonLoader(); + + Path addonsFolder = getDataFolder().toPath().resolve("addons"); + + Injector platformInjector = new InjectorImpl<>(this); + platformInjector.addExplicitTarget(Platform.class); + + bootstrapAddonLoader.loadAddons(addonsFolder, getClass().getClassLoader()) + .forEach(bootstrapAddon -> { + platformInjector.inject(bootstrapAddon); + + bootstrapAddon.loadAddons(addonsFolder, getClass().getClassLoader()) + .forEach(addonList::add); + }); + + addonList.sort(Comparator.comparing(StringIdentifiable::getID)); + if(logger.isInfoEnabled()) { + StringBuilder builder = new StringBuilder(); + builder.append("Loading ") + .append(addonList.size()) + .append(" Terra addons:"); + + for(BaseAddon addon : addonList) { + builder.append("\n ") + .append("- ") + .append(addon.getID()) + .append("@") + .append(addon.getVersion().getFormatted()); + } + + logger.info(builder.toString()); + } + + DependencySorter sorter = new DependencySorter(); + addonList.forEach(sorter::add); + sorter.sort().forEach(addon -> { + platformInjector.inject(addon); + addon.initialize(); + if(!(addon instanceof EphemeralAddon)) { // ephemeral addons exist only for version checking + addonRegistry.register(addon.key(addon.getID()), addon); + } + }); + + return internalAddon; + } + protected void dumpResources() { try(InputStream resourcesConfig = getClass().getResourceAsStream("/resources.yml")) { if(resourcesConfig == null) {