From c807665ab9956663485df4adb68829ca175381eb Mon Sep 17 00:00:00 2001 From: LexManos Date: Sun, 7 Aug 2022 17:35:15 -0700 Subject: [PATCH] Update EventBus to address concurrency issue in ModLauncher Factory. Closes #8924 --- build.gradle | 2 +- .../net/minecraftforge/fml/javafmlmod/FMLModContainer.java | 2 +- src/main/java/net/minecraftforge/common/MinecraftForge.java | 2 +- .../minecraftforge/common/world/PieceBeardifierModifier.java | 5 +++++ .../java/net/minecraftforge/network/NetworkInstance.java | 2 +- 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index b34e1ae567..5561fa9604 100644 --- a/build.gradle +++ b/build.gradle @@ -43,7 +43,7 @@ ext { SPI_VERSION = '6.0.0' ACCESSTRANSFORMERS_VERSION = '8.0.4' COREMODS_VERSION = '5.0.1' - EVENTBUS_VERSION = '6.0.0' + EVENTBUS_VERSION = '6.0.3' MODLAUNCHER_VERSION = '10.0.8' SECUREJARHANDLER_VERSION = '2.1.4' BOOTSTRAPLAUNCHER_VERSION = '1.1.2' diff --git a/javafmllanguage/src/main/java/net/minecraftforge/fml/javafmlmod/FMLModContainer.java b/javafmllanguage/src/main/java/net/minecraftforge/fml/javafmlmod/FMLModContainer.java index 50b8265d8e..a2fbedbe1c 100644 --- a/javafmllanguage/src/main/java/net/minecraftforge/fml/javafmlmod/FMLModContainer.java +++ b/javafmllanguage/src/main/java/net/minecraftforge/fml/javafmlmod/FMLModContainer.java @@ -38,7 +38,7 @@ public class FMLModContainer extends ModContainer LOGGER.debug(LOADING,"Creating FMLModContainer instance for {}", className); this.scanResults = modFileScanResults; activityMap.put(ModLoadingStage.CONSTRUCT, this::constructMod); - this.eventBus = BusBuilder.builder().setExceptionHandler(this::onEventFailed).setTrackPhases(false).markerType(IModBusEvent.class).build(); + this.eventBus = BusBuilder.builder().setExceptionHandler(this::onEventFailed).setTrackPhases(false).markerType(IModBusEvent.class).useModLauncher().build(); this.configHandler = Optional.of(ce->this.eventBus.post(ce.self())); final FMLJavaModLoadingContext contextExtension = new FMLJavaModLoadingContext(this); this.contextExtension = () -> contextExtension; diff --git a/src/main/java/net/minecraftforge/common/MinecraftForge.java b/src/main/java/net/minecraftforge/common/MinecraftForge.java index a0a2a5221f..352c3abaf8 100644 --- a/src/main/java/net/minecraftforge/common/MinecraftForge.java +++ b/src/main/java/net/minecraftforge/common/MinecraftForge.java @@ -26,7 +26,7 @@ public class MinecraftForge * ORE_GEN_BUS for ore gen events * EVENT_BUS for everything else */ - public static final IEventBus EVENT_BUS = BusBuilder.builder().startShutdown().build(); + public static final IEventBus EVENT_BUS = BusBuilder.builder().startShutdown().useModLauncher().build(); static final ForgeInternalHandler INTERNAL_HANDLER = new ForgeInternalHandler(); private static final Logger LOGGER = LogManager.getLogger(); diff --git a/src/main/java/net/minecraftforge/common/world/PieceBeardifierModifier.java b/src/main/java/net/minecraftforge/common/world/PieceBeardifierModifier.java index 50870245f9..2a4f7f2c2a 100644 --- a/src/main/java/net/minecraftforge/common/world/PieceBeardifierModifier.java +++ b/src/main/java/net/minecraftforge/common/world/PieceBeardifierModifier.java @@ -1,3 +1,8 @@ +/* + * Copyright (c) Forge Development LLC and contributors + * SPDX-License-Identifier: LGPL-2.1-only + */ + package net.minecraftforge.common.world; import net.minecraft.world.level.levelgen.structure.BoundingBox; diff --git a/src/main/java/net/minecraftforge/network/NetworkInstance.java b/src/main/java/net/minecraftforge/network/NetworkInstance.java index dd9e733e44..7d962b6ff7 100644 --- a/src/main/java/net/minecraftforge/network/NetworkInstance.java +++ b/src/main/java/net/minecraftforge/network/NetworkInstance.java @@ -36,7 +36,7 @@ public class NetworkInstance this.networkProtocolVersion = networkProtocolVersion.get(); this.clientAcceptedVersions = clientAcceptedVersions; this.serverAcceptedVersions = serverAcceptedVersions; - this.networkEventBus = BusBuilder.builder().setExceptionHandler(this::handleError).build(); + this.networkEventBus = BusBuilder.builder().setExceptionHandler(this::handleError).useModLauncher().build(); } private void handleError(IEventBus iEventBus, Event event, IEventListener[] iEventListeners, int i, Throwable throwable)