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 <cpw+github@weeksfamily.ca>
This commit is contained in:
cpw 2019-06-22 20:36:07 -04:00
parent 89baeb3d5d
commit d966746fbf
No known key found for this signature in database
GPG Key ID: 8EB3DF749553B1B7
5 changed files with 28 additions and 9 deletions

View File

@ -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<BlockRenderLayer> renderLayer = new ThreadLocal<BlockRenderLayer>();
@ -373,7 +374,7 @@ public class ForgeHooksClient
public static void onModelBake(ModelManager modelManager, Map<ResourceLocation, IBakedModel> modelRegistry, ModelLoader modelLoader)
{
MinecraftForge.EVENT_BUS.post(new ModelBakeEvent(modelManager, modelRegistry, modelLoader));
ModLoader.get().postEvent(new ModelBakeEvent(modelManager, modelRegistry, modelLoader));
modelLoader.onPostBakeEvent(modelRegistry);
}

View File

@ -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<ResourceLocation, IBakedModel> modelRegistry;

View File

@ -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) {}
}

View File

@ -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);

View File

@ -157,4 +157,9 @@ public class FMLModContainer extends ModContainer
{
return this.eventBus;
}
@Override
protected void acceptEvent(final Event e) {
this.eventBus.post(e);
}
}