From 0f162ddc6a75afe3ea4e3fbdcfbbac833abebaaf Mon Sep 17 00:00:00 2001 From: Lex Manos Date: Fri, 27 Mar 2015 03:03:31 -0700 Subject: [PATCH] Updated FML: MinecraftForge/FML@2a268cd5664b6562a4bf2a953a6a93fd8e111bd2 Improve mod list GUI, add sort and search MinecraftForge/FML@951fc2d9fd7e7970c86accb1be095a24f7bfaf18 First attempt at making FMLControlledRegistry something a bit more generic than just blocks/items. MinecraftForge/FML@410582222d9ba15d42dc47db0d3d6a84aeac2d22 Merge pull request #614 from tterrag1098/betterModList MinecraftForge/FML@ba0b176430cdbc3573643a6e21d47013cfd1f0e0 Fix ModDiscoverer ignoring inner classes. MinecraftForge/FML@9cc313eab9939724786f833f511a87c9957dbc72 Merge pull request #617 from diesieben07/innerclass-disc MinecraftForge/FML@01aaa7dc97480b381ca0d192ec65016d7baeb747 Fix mods defined via --mods or --modListFile launch args not being searched for coremods. #560 MinecraftForge/FML@8cecc47b85db68e8e69f45641b1d843509dbe71d Merge pull request #620 from killjoy1221/extra-coremod-fix MinecraftForge/FML@38d9a5f444815810dec3607f5b3b7ff1ac513d4c Enhance output of common FML errors in crash reports and server Force load anonymous minecraft classes used in crash reports. This prevents some crashes being hiddedn behind class definiton exceptions.GUI. --- fml | 2 +- .../minecraftforge/common/MinecraftForge.java | 116 +++++++++++++++++- 2 files changed, 115 insertions(+), 3 deletions(-) diff --git a/fml b/fml index 7f96b2c69..38d9a5f44 160000 --- a/fml +++ b/fml @@ -1 +1 @@ -Subproject commit 7f96b2c69ab8a2ed07b5b786b3d679ea4c509121 +Subproject commit 38d9a5f444815810dec3607f5b3b7ff1ac513d4c diff --git a/src/main/java/net/minecraftforge/common/MinecraftForge.java b/src/main/java/net/minecraftforge/common/MinecraftForge.java index 41740c68a..7df865b5c 100644 --- a/src/main/java/net/minecraftforge/common/MinecraftForge.java +++ b/src/main/java/net/minecraftforge/common/MinecraftForge.java @@ -1,8 +1,14 @@ package net.minecraftforge.common; +import java.util.concurrent.Callable; + +import com.google.common.collect.ObjectArrays; + +import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.FMLLog; import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.eventhandler.EventBus; +import net.minecraftforge.fml.relauncher.Side; import net.minecraft.crash.CrashReport; import net.minecraft.item.ItemStack; import net.minecraftforge.common.ForgeHooks.SeedEntry; @@ -47,8 +53,114 @@ public class MinecraftForge OreDictionary.getOreName(0); //Force these classes to be defined, Should prevent derp error hiding. - new CrashReport("ThisIsFake", new Exception("Not real")); - + CrashReport fake = new CrashReport("ThisIsFake", new Exception("Not real")); + //Lets init World's crash report inner classes to prevent them from hiding errors. + String[] handlers = { + "net.minecraft.world.World$1", + "net.minecraft.world.World$2", + "net.minecraft.world.World$3", + "net.minecraft.world.World$4", + "net.minecraft.world.chunk.Chunk$1", + "net.minecraft.world.chunk.Chunk$2", + "net.minecraft.world.chunk.Chunk$3", + "net.minecraft.command.server.CommandBlockLogic$1", + "net.minecraft.command.server.CommandBlockLogic$2", + "net.minecraft.crash.CrashReportCategory$1", + "net.minecraft.crash.CrashReportCategory$2", + "net.minecraft.crash.CrashReportCategory$3", + "net.minecraft.entity.Entity$1", + "net.minecraft.entity.Entity$2", + "net.minecraft.entity.Entity$3", + "net.minecraft.entity.Entity$4", + "net.minecraft.entity.EntityTracker$1", + "net.minecraft.world.gen.layer.GenLayer$1", + "net.minecraft.world.gen.layer.GenLayer$2", + "net.minecraft.entity.player.InventoryPlayer$1", + "net.minecraft.world.gen.structure.MapGenStructure$1", + "net.minecraft.world.gen.structure.MapGenStructure$2", + "net.minecraft.world.gen.structure.MapGenStructure$3", + "net.minecraft.server.MinecraftServer$3", + "net.minecraft.server.MinecraftServer$4", + "net.minecraft.server.MinecraftServer$5", + "net.minecraft.nbt.NBTTagCompound$1", + "net.minecraft.nbt.NBTTagCompound$2", + "net.minecraft.network.NetHandlerPlayServer$2", + "net.minecraft.network.NetworkSystem$3", + "net.minecraft.tileentity.TileEntity$1", + "net.minecraft.tileentity.TileEntity$2", + "net.minecraft.tileentity.TileEntity$3", + "net.minecraft.world.storage.WorldInfo$1", + "net.minecraft.world.storage.WorldInfo$2", + "net.minecraft.world.storage.WorldInfo$3", + "net.minecraft.world.storage.WorldInfo$4", + "net.minecraft.world.storage.WorldInfo$5", + "net.minecraft.world.storage.WorldInfo$6", + "net.minecraft.world.storage.WorldInfo$7", + "net.minecraft.world.storage.WorldInfo$8", + "net.minecraft.world.storage.WorldInfo$9" + }; + String[] client = { + "net.minecraft.client.Minecraft$3", + "net.minecraft.client.Minecraft$4", + "net.minecraft.client.Minecraft$5", + "net.minecraft.client.Minecraft$6", + "net.minecraft.client.Minecraft$7", + "net.minecraft.client.Minecraft$8", + "net.minecraft.client.Minecraft$9", + "net.minecraft.client.Minecraft$10", + "net.minecraft.client.Minecraft$11", + "net.minecraft.client.Minecraft$12", + "net.minecraft.client.Minecraft$13", + "net.minecraft.client.Minecraft$14", + "net.minecraft.client.Minecraft$15", + "net.minecraft.client.multiplayer.WorldClient$1", + "net.minecraft.client.multiplayer.WorldClient$2", + "net.minecraft.client.multiplayer.WorldClient$3", + "net.minecraft.client.multiplayer.WorldClient$4", + "net.minecraft.client.particle,EffectRenderer$1", + "net.minecraft.client.particle,EffectRenderer$2", + "net.minecraft.client.particle,EffectRenderer$3", + "net.minecraft.client.particle,EffectRenderer$4", + "net.minecraft.client.renderer.EntityRenderer$1", + "net.minecraft.client.renderer.EntityRenderer$2", + "net.minecraft.client.renderer.EntityRenderer$3", + "net.minecraft.server.integrated.IntegratedServer$1", + "net.minecraft.server.integrated.IntegratedServer$2", + "net.minecraft.client.renderer.RenderGlobal$1", + "net.minecraft.client.renderer.entity.RenderItem$1", + "net.minecraft.client.renderer.entity.RenderItem$2", + "net.minecraft.client.renderer.entity.RenderItem$3", + "net.minecraft.client.renderer.entity.RenderItem$4", + "net.minecraft.client.renderer.texture.TextureAtlasSprite$1", + "net.minecraft.client.renderer.texture.TextureManager$1", + "net.minecraft.client.renderer.texture.TextureMap$1", + "net.minecraft.client.renderer.texture.TextureMap$2", + "net.minecraft.client.renderer.texture.TextureMap$3" + }; + String[] server = { + "net.minecraft.server.dedicated.DedicatedServer$3", + "net.minecraft.server.dedicated.DedicatedServer$4" + }; + if (FMLCommonHandler.instance().getSide() == Side.CLIENT) + handlers = ObjectArrays.concat(handlers, client, String.class); + else + handlers = ObjectArrays.concat(handlers, server, String.class); + + FMLLog.info("Preloading CrashReport classes", ForgeVersion.getVersion()); + for (String s : handlers) + { + //FMLLog.info("\t" + s); + try + { + Class cls = Class.forName(s, false, MinecraftForge.class.getClassLoader()); + if (cls != null && !Callable.class.isAssignableFrom(cls)) + { + FMLLog.info("\t% s is not a instance of callable!", s); + } + } + catch (Exception e){} + } + UsernameCache.load(); }