mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-13 16:54:22 +00:00
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:
1 parent
ce10d0dfd0
commit
9e7e9e5cbf
2 files changed
+111
-3
No files matched your search
@@ -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();
|
||||
|
||||
Reference in new issue
Block a user