MinecraftForge/FML@24cb4a42c4 Enhance output of common FML errors in crash reports and server GUI.
Force load anonymous minecraft classes used in crash reports. This prevents some crashes being hiddedn behind class definiton exceptions.
This commit is contained in:
parent
ce10d0dfd0
commit
9e7e9e5cbf
2 changed files with 111 additions and 3 deletions
2
fml
2
fml
|
@ -1 +1 @@
|
|||
Subproject commit 13ac015f0c36b8e2091ae332c556be315429f4c8
|
||||
Subproject commit 24cb4a42c4e4bddde95c0e49d1f8b8bcc20c626d
|
|
@ -1,8 +1,14 @@
|
|||
package net.minecraftforge.common;
|
||||
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import com.google.common.collect.ObjectArrays;
|
||||
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.eventhandler.EventBus;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import net.minecraft.crash.CrashReport;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.common.ForgeHooks.SeedEntry;
|
||||
|
@ -47,11 +53,113 @@ 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.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.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();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static String getBrandingVersion()
|
||||
{
|
||||
return "Minecraft Forge "+ ForgeVersion.getVersion();
|
||||
|
|
Loading…
Reference in a new issue