From d966746fbf5fcf5567a1ce02c01d644be778b370 Mon Sep 17 00:00:00 2001 From: cpw Date: Sat, 22 Jun 2019 20:36:07 -0400 Subject: [PATCH] Moved some events to the Mod's event bus. You'll need to update which bus you're listening to for these. (The Mod event bus is the only one actively dispatching events during model loading). ModelRegistryEvent, ModelBakeEvent, TextureStitchEvent.Pre, TextureStitchEvent.Post, ColourHandlerEvent.Block, ColourHandlerEvent.Item Signed-off-by: cpw --- .../net/minecraftforge/client/ForgeHooksClient.java | 11 ++++++----- .../minecraftforge/client/event/ModelBakeEvent.java | 3 ++- .../java/net/minecraftforge/fml/ModContainer.java | 7 +++++++ src/main/java/net/minecraftforge/fml/ModLoader.java | 11 ++++++++--- .../fml/javafmlmod/FMLModContainer.java | 5 +++++ 5 files changed, 28 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/minecraftforge/client/ForgeHooksClient.java b/src/main/java/net/minecraftforge/client/ForgeHooksClient.java index 34b35db1c..10c73db6d 100644 --- a/src/main/java/net/minecraftforge/client/ForgeHooksClient.java +++ b/src/main/java/net/minecraftforge/client/ForgeHooksClient.java @@ -45,6 +45,7 @@ import javax.vecmath.Vector4f; import net.minecraft.client.MouseHelper; import net.minecraftforge.client.event.RecipesUpdatedEvent; +import net.minecraftforge.fml.ModLoader; import org.apache.commons.lang3.tuple.Pair; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -179,24 +180,24 @@ public class ForgeHooksClient public static void onTextureStitchedPre(AtlasTexture map) { - MinecraftForge.EVENT_BUS.post(new TextureStitchEvent.Pre(map)); + ModLoader.get().postEvent(new TextureStitchEvent.Pre(map)); // ModelLoader.White.INSTANCE.register(map); // TODO Custom TAS ModelDynBucket.LoaderDynBucket.INSTANCE.register(map); } public static void onTextureStitchedPost(AtlasTexture map) { - MinecraftForge.EVENT_BUS.post(new TextureStitchEvent.Post(map)); + ModLoader.get().postEvent(new TextureStitchEvent.Post(map)); } public static void onBlockColorsInit(BlockColors blockColors) { - MinecraftForge.EVENT_BUS.post(new ColorHandlerEvent.Block(blockColors)); + ModLoader.get().postEvent(new ColorHandlerEvent.Block(blockColors)); } public static void onItemColorsInit(ItemColors itemColors, BlockColors blockColors) { - MinecraftForge.EVENT_BUS.post(new ColorHandlerEvent.Item(itemColors, blockColors)); + ModLoader.get().postEvent(new ColorHandlerEvent.Item(itemColors, blockColors)); } static final ThreadLocal renderLayer = new ThreadLocal(); @@ -373,7 +374,7 @@ public class ForgeHooksClient public static void onModelBake(ModelManager modelManager, Map modelRegistry, ModelLoader modelLoader) { - MinecraftForge.EVENT_BUS.post(new ModelBakeEvent(modelManager, modelRegistry, modelLoader)); + ModLoader.get().postEvent(new ModelBakeEvent(modelManager, modelRegistry, modelLoader)); modelLoader.onPostBakeEvent(modelRegistry); } diff --git a/src/main/java/net/minecraftforge/client/event/ModelBakeEvent.java b/src/main/java/net/minecraftforge/client/event/ModelBakeEvent.java index 658cf62f4..58d6ebe0d 100644 --- a/src/main/java/net/minecraftforge/client/event/ModelBakeEvent.java +++ b/src/main/java/net/minecraftforge/client/event/ModelBakeEvent.java @@ -26,13 +26,14 @@ import net.minecraft.client.renderer.model.ModelManager; import net.minecraft.client.renderer.model.ModelResourceLocation; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.eventbus.api.Event; /** * Fired when the ModelManager is notified of the resource manager reloading. * Called after model registry is setup, but before it's passed to BlockModelShapes. */ // TODO: try to merge with ICustomModelLoader -public class ModelBakeEvent extends net.minecraftforge.eventbus.api.Event +public class ModelBakeEvent extends Event { private final ModelManager modelManager; private final Map modelRegistry; diff --git a/src/main/java/net/minecraftforge/fml/ModContainer.java b/src/main/java/net/minecraftforge/fml/ModContainer.java index c1856b79f..137e4cce1 100644 --- a/src/main/java/net/minecraftforge/fml/ModContainer.java +++ b/src/main/java/net/minecraftforge/fml/ModContainer.java @@ -19,6 +19,7 @@ package net.minecraftforge.fml; +import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.forgespi.language.IModInfo; import org.apache.commons.lang3.tuple.Pair; @@ -158,4 +159,10 @@ public abstract class ModContainer * @return the mod object instance */ public abstract Object getMod(); + + /** + * Accept an arbitrary event for processing by the mod. Probably posted to an event bus in the lower level container. + * @param e Event to accept + */ + protected void acceptEvent(Event e) {} } diff --git a/src/main/java/net/minecraftforge/fml/ModLoader.java b/src/main/java/net/minecraftforge/fml/ModLoader.java index ee10beb19..977af62c2 100644 --- a/src/main/java/net/minecraftforge/fml/ModLoader.java +++ b/src/main/java/net/minecraftforge/fml/ModLoader.java @@ -27,6 +27,7 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.capabilities.CapabilityManager; +import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.fml.config.ConfigTracker; import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.event.lifecycle.GatherDataEvent; @@ -118,16 +119,16 @@ public class ModLoader return INSTANCE == null ? INSTANCE = new ModLoader() : INSTANCE; } - private static Runnable fireClientEvents() + private Runnable fireClientEvents() { - return ()->MinecraftForge.EVENT_BUS.post(new ModelRegistryEvent()); + return ()->postEvent(new ModelRegistryEvent()); } public void loadMods() { DistExecutor.runWhenOn(Dist.CLIENT, ()->()-> ConfigTracker.INSTANCE.loadConfigs(ModConfig.Type.CLIENT, FMLPaths.CONFIGDIR.get())); ConfigTracker.INSTANCE.loadConfigs(ModConfig.Type.COMMON, FMLPaths.CONFIGDIR.get()); dispatchAndHandleError(LifecycleEventProvider.SETUP); - DistExecutor.runWhenOn(Dist.CLIENT, ModLoader::fireClientEvents); + DistExecutor.runWhenOn(Dist.CLIENT, this::fireClientEvents); dispatchAndHandleError(LifecycleEventProvider.SIDED_SETUP); } @@ -200,6 +201,10 @@ public class ModLoader } } + public void postEvent(Event e) { + ModList.get().forEachModContainer((id, mc) -> mc.acceptEvent(e)); + } + public void finishMods() { dispatchAndHandleError(LifecycleEventProvider.ENQUEUE_IMC); diff --git a/src/main/java/net/minecraftforge/fml/javafmlmod/FMLModContainer.java b/src/main/java/net/minecraftforge/fml/javafmlmod/FMLModContainer.java index 0f13a66df..d8b5303bd 100644 --- a/src/main/java/net/minecraftforge/fml/javafmlmod/FMLModContainer.java +++ b/src/main/java/net/minecraftforge/fml/javafmlmod/FMLModContainer.java @@ -157,4 +157,9 @@ public class FMLModContainer extends ModContainer { return this.eventBus; } + + @Override + protected void acceptEvent(final Event e) { + this.eventBus.post(e); + } }