diff --git a/build.gradle b/build.gradle index 2ef43721e..8a44117fe 100644 --- a/build.gradle +++ b/build.gradle @@ -358,7 +358,7 @@ project(':forge') { installer 'cpw.mods:modlauncher:2.1.+' installer 'cpw.mods:grossjava9hacks:1.1.+' installer 'net.minecraftforge:accesstransformers:0.16.+:shadowed' - installer 'net.minecraftforge:eventbus:0.9.+:service' + installer 'net.minecraftforge:eventbus:0.10.+:service' installer 'net.minecraftforge:forgespi:0.13.+' installer 'net.minecraftforge:coremods:0.5.+' installer 'net.minecraftforge:unsafe:0.2.+' diff --git a/src/main/java/net/minecraftforge/common/MinecraftForge.java b/src/main/java/net/minecraftforge/common/MinecraftForge.java index 75afb5f2b..b1352d7ff 100644 --- a/src/main/java/net/minecraftforge/common/MinecraftForge.java +++ b/src/main/java/net/minecraftforge/common/MinecraftForge.java @@ -38,7 +38,7 @@ public class MinecraftForge * ORE_GEN_BUS for ore gen events * EVENT_BUS for everything else */ - public static final IEventBus EVENT_BUS = BusBuilder.builder().build(); + public static final IEventBus EVENT_BUS = BusBuilder.builder().startShutdown().build(); static final ForgeInternalHandler INTERNAL_HANDLER = new ForgeInternalHandler(); private static final Logger LOGGER = LogManager.getLogger(); diff --git a/src/main/java/net/minecraftforge/fml/ModList.java b/src/main/java/net/minecraftforge/fml/ModList.java index 7a0a4384f..03a04e471 100644 --- a/src/main/java/net/minecraftforge/fml/ModList.java +++ b/src/main/java/net/minecraftforge/fml/ModList.java @@ -40,6 +40,7 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; +import java.util.stream.Stream; import static net.minecraftforge.fml.Logging.LOADING; @@ -187,4 +188,8 @@ public class ModList public void forEachModContainer(BiConsumer modContainerConsumer) { indexedMods.forEach(modContainerConsumer); } + + public Stream applyForEachModContainer(Function function) { + return indexedMods.values().stream().map(function); + } } diff --git a/src/main/java/net/minecraftforge/fml/client/ClientModLoader.java b/src/main/java/net/minecraftforge/fml/client/ClientModLoader.java index 4dc01ed27..c34bb8c60 100644 --- a/src/main/java/net/minecraftforge/fml/client/ClientModLoader.java +++ b/src/main/java/net/minecraftforge/fml/client/ClientModLoader.java @@ -61,9 +61,7 @@ public class ClientModLoader try { ModLoader.get().gatherAndInitializeMods(); } catch (LoadingFailedException e) { - MinecraftForge.EVENT_BUS.shutdown(); error = e; - TEMP_printLoadingExceptions(e); } ResourcePackLoader.loadResourcePacks(defaultResourcePacks); mcResourceManager.addReloadListener(ClientModLoader::onreload); @@ -126,6 +124,10 @@ public class ClientModLoader } else { ClientHooks.logMissingTextureErrors(); } + if (error != null) { + // We can finally start the forge eventbus up + MinecraftForge.EVENT_BUS.start(); + } } public static boolean isLoading() diff --git a/src/main/java/net/minecraftforge/fml/server/ServerModLoader.java b/src/main/java/net/minecraftforge/fml/server/ServerModLoader.java index 1304cd04f..dc58b2973 100644 --- a/src/main/java/net/minecraftforge/fml/server/ServerModLoader.java +++ b/src/main/java/net/minecraftforge/fml/server/ServerModLoader.java @@ -20,6 +20,7 @@ package net.minecraftforge.fml.server; import net.minecraft.server.dedicated.DedicatedServer; +import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.LogicalSidedProvider; import net.minecraftforge.fml.ModLoader; import net.minecraftforge.fml.ModLoadingWarning; @@ -41,6 +42,7 @@ public class ServerModLoader SidedProvider.setServer(()->dedicatedServer); LogicalSidedProvider.setServer(()->dedicatedServer); LanguageHook.loadForgeAndMCLangs(); + ModLoader.get().gatherAndInitializeMods(); ModLoader.get().loadMods(); } @@ -51,6 +53,7 @@ public class ServerModLoader LOGGER.warn(LOADING, "Mods loaded with {} warnings", warnings.size()); warnings.forEach(warning -> LOGGER.warn(LOADING, warning.formatToString())); } + MinecraftForge.EVENT_BUS.start(); server.getServerStatusResponse().setForgeData(new FMLStatusPing()); //gathers NetworkRegistry data } } diff --git a/src/main/java/net/minecraftforge/server/command/CommandModList.java b/src/main/java/net/minecraftforge/server/command/CommandModList.java index 70ac461bd..d9bfe5600 100644 --- a/src/main/java/net/minecraftforge/server/command/CommandModList.java +++ b/src/main/java/net/minecraftforge/server/command/CommandModList.java @@ -35,7 +35,9 @@ public class CommandModList { .requires(cs->cs.hasPermissionLevel(0)) //permission .executes(ctx -> { ctx.getSource().sendFeedback(new TranslationTextComponent("commands.forge.mods.list", - ModList.get().getMods().stream().map(ModInfo::getModId).collect(Collectors.joining(","))), + ModList.get().applyForEachModContainer( + mc->String.format("%s:%s(%s)", mc.getModId(), mc.getModInfo().getVersion().toString(), mc.getCurrentState())). + collect(Collectors.joining(","))), true); return 0; }