Reorganize sided event dispatch slightly. Dispatch model and entityrenderer
functions at more appropriate times. Signed-off-by: cpw <cpw+github@weeksfamily.ca>
This commit is contained in:
parent
bdad2af27b
commit
0a819da0e7
|
@ -1,10 +1,7 @@
|
|||
--- a/net/minecraft/client/renderer/entity/EntityRendererManager.java
|
||||
+++ b/net/minecraft/client/renderer/entity/EntityRendererManager.java
|
||||
@@ -255,8 +255,13 @@
|
||||
this.field_178637_m = new PlayerRenderer(this);
|
||||
this.field_178636_l.put("default", this.field_178637_m);
|
||||
@@ -257,6 +257,10 @@
|
||||
this.field_178636_l.put("slim", new PlayerRenderer(this, true));
|
||||
+ net.minecraftforge.fml.client.registry.RenderingRegistry.loadEntityRenderers(this, this.field_78729_o);
|
||||
}
|
||||
|
||||
+ public Map<String, PlayerRenderer> getSkinMap() {
|
||||
|
|
|
@ -21,11 +21,8 @@ package net.minecraftforge.fml;
|
|||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import cpw.mods.modlauncher.TransformingClassLoader;
|
||||
import net.minecraft.data.DataGenerator;
|
||||
import net.minecraft.util.registry.Bootstrap;
|
||||
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;
|
||||
|
@ -52,6 +49,7 @@ import java.util.*;
|
|||
import java.util.concurrent.Executor;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static net.minecraftforge.fml.Logging.CORE;
|
||||
|
@ -124,20 +122,16 @@ public class ModLoader
|
|||
return INSTANCE == null ? INSTANCE = new ModLoader() : INSTANCE;
|
||||
}
|
||||
|
||||
private Runnable fireClientEvents()
|
||||
{
|
||||
return ()->postEvent(new ModelRegistryEvent());
|
||||
}
|
||||
|
||||
public void loadMods(Executor mainThreadExecutor) {
|
||||
public void loadMods(Executor mainThreadExecutor, Consumer<Consumer<Supplier<Event>>> preSidedRunnable, Consumer<Consumer<Supplier<Event>>> postSidedRunnable) {
|
||||
statusConsumer.ifPresent(c->c.accept("Loading mod config"));
|
||||
DistExecutor.runWhenOn(Dist.CLIENT, ()->()-> ConfigTracker.INSTANCE.loadConfigs(ModConfig.Type.CLIENT, FMLPaths.CONFIGDIR.get()));
|
||||
ConfigTracker.INSTANCE.loadConfigs(ModConfig.Type.COMMON, FMLPaths.CONFIGDIR.get());
|
||||
statusConsumer.ifPresent(c->c.accept("Mod setup: SETUP"));
|
||||
dispatchAndHandleError(LifecycleEventProvider.SETUP, mainThreadExecutor);
|
||||
statusConsumer.ifPresent(c->c.accept("Mod setup: SIDED SETUP"));
|
||||
DistExecutor.runWhenOn(Dist.CLIENT, this::fireClientEvents);
|
||||
mainThreadExecutor.execute(()->preSidedRunnable.accept(c->ModList.get().forEachModContainer((mi,mc)->mc.acceptEvent(c.get()))));
|
||||
dispatchAndHandleError(LifecycleEventProvider.SIDED_SETUP, mainThreadExecutor);
|
||||
mainThreadExecutor.execute(()->postSidedRunnable.accept(c->ModList.get().forEachModContainer((mi,mc)->mc.acceptEvent(c.get()))));
|
||||
statusConsumer.ifPresent(c->c.accept("Mod setup complete"));
|
||||
}
|
||||
|
||||
|
|
|
@ -26,10 +26,13 @@ import net.minecraft.profiler.IProfiler;
|
|||
import net.minecraft.resources.*;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.client.event.ModelRegistryEvent;
|
||||
import net.minecraftforge.common.ForgeConfig;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.eventbus.api.Event;
|
||||
import net.minecraftforge.fml.*;
|
||||
import net.minecraftforge.fml.client.gui.LoadingErrorScreen;
|
||||
import net.minecraftforge.fml.client.registry.RenderingRegistry;
|
||||
import net.minecraftforge.fml.packs.ResourcePackLoader;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
@ -40,6 +43,8 @@ import java.util.Collections;
|
|||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import static net.minecraftforge.fml.loading.LogMarkers.LOADING;
|
||||
|
||||
|
@ -85,8 +90,17 @@ public class ClientModLoader
|
|||
|
||||
private static void startModLoading(Executor executor) {
|
||||
earlyLoaderGUI.handleElsewhere();
|
||||
createRunnableWithCatch(() -> ModLoader.get().loadMods(executor)).run();
|
||||
createRunnableWithCatch(() -> ModLoader.get().loadMods(executor, ClientModLoader::preSidedRunnable, ClientModLoader::postSidedRunnable)).run();
|
||||
}
|
||||
|
||||
private static void postSidedRunnable(Consumer<Supplier<Event>> perModContainerEventProcessor) {
|
||||
RenderingRegistry.loadEntityRenderers(mc.getRenderManager());
|
||||
}
|
||||
|
||||
private static void preSidedRunnable(Consumer<Supplier<Event>> perModContainerEventProcessor) {
|
||||
perModContainerEventProcessor.accept(ModelRegistryEvent::new);
|
||||
}
|
||||
|
||||
private static void finishModLoading(Executor executor)
|
||||
{
|
||||
createRunnableWithCatch(() -> ModLoader.get().finishMods(executor)).run();
|
||||
|
|
|
@ -43,14 +43,14 @@ public class RenderingRegistry
|
|||
INSTANCE.entityRenderers.put(entityClass, renderFactory);
|
||||
}
|
||||
|
||||
public static void loadEntityRenderers(EntityRendererManager manager, Map<Class<? extends Entity>, EntityRenderer<? extends Entity>> renderMap)
|
||||
public static void loadEntityRenderers(EntityRendererManager manager)
|
||||
{
|
||||
INSTANCE.entityRenderers.forEach((key, value) -> register(manager, renderMap, key, value));
|
||||
INSTANCE.entityRenderers.forEach((key, value) -> register(manager, key, value));
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private static <T extends Entity> void register(EntityRendererManager manager, Map<Class<? extends Entity>, EntityRenderer<? extends Entity>> renderMap, Class<T> entityClass, IRenderFactory<?> renderFactory)
|
||||
private static <T extends Entity> void register(EntityRendererManager manager, Class<T> entityClass, IRenderFactory<?> renderFactory)
|
||||
{
|
||||
renderMap.put(entityClass, ((IRenderFactory<T>)renderFactory).createRenderFor(manager));
|
||||
manager.func_217782_a(entityClass, ((IRenderFactory<T>)renderFactory).createRenderFor(manager));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,7 +43,7 @@ public class ServerModLoader
|
|||
LogicalSidedProvider.setServer(()->dedicatedServer);
|
||||
LanguageHook.loadForgeAndMCLangs();
|
||||
ModLoader.get().gatherAndInitializeMods();
|
||||
ModLoader.get().loadMods(Runnable::run);
|
||||
ModLoader.get().loadMods(Runnable::run, (a)->{}, (a)->{});
|
||||
}
|
||||
|
||||
public static void end() {
|
||||
|
|
|
@ -115,6 +115,9 @@ public net.minecraft.world.chunk.ChunkStatus <init>(Ljava/lang/String;Lnet/minec
|
|||
|
||||
# ItemRenderer
|
||||
protected net.minecraft.client.renderer.entity.ItemRenderer func_177078_a(Lnet/minecraft/item/ItemStack;)I # getMiniItemCount
|
||||
|
||||
public net.minecraft.client.renderer.entity.EntityRendererManager func_217782_a(Ljava/lang/Class;Lnet/minecraft/client/renderer/entity/EntityRenderer;)V # addRenderer
|
||||
|
||||
public net.minecraft.item.crafting.TippedArrowRecipe
|
||||
public net.minecraft.item.crafting.ShieldRecipes$Decoration
|
||||
public net.minecraft.item.crafting.RecipesBanners$RecipeAddPattern
|
||||
|
|
Loading…
Reference in New Issue