package com.enderio.core.client;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

import com.enderio.core.client.render.IconUtil;
import com.enderio.core.common.CommonProxy;
import com.enderio.core.common.util.NNList;
import com.enderio.core.common.util.Scheduler;

import net.minecraft.client.Minecraft;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

public class ClientProxy extends CommonProxy {

  @Override
  public @Nonnull Scheduler getScheduler() {
    if (scheduler != null) {
      return scheduler;
    }
    return scheduler = new Scheduler(false);
  }

  @Override
  public @Nonnull World getClientWorld() {
    return Minecraft.getMinecraft().world;
  }

  @Override
  public void throwModCompatibilityError(@Nonnull String... msgs) {
    throw new EnderCoreModConflictException(msgs);
  }

  @Override
  public void onPreInit(@Nonnull FMLPreInitializationEvent event) {
    IconUtil.instance.init();
  }

  @Override
  public CreativeTabs getCreativeTab(@Nonnull ItemStack stack) {
    return stack.getItem().getCreativeTab();
  }

  @SuppressWarnings("null")
  @Override
  public void getSubItems(@Nonnull Item itemIn, @Nullable CreativeTabs tab, @Nonnull NNList<ItemStack> subItems) {
    itemIn.getSubItems(itemIn, tab, subItems);
  }

}

@@ -503,45 +503,159 @@
 ml.c
-ommon.event.FMLPreInitializationEvent
+lient.FMLClientHandler;%0Aimport net.minecraftforge.fml.common.event.FMLPreInitializationEvent;%0Aimport net.minecraftforge.fml.relauncher.ReflectionHelper
 ;%0A%0Ap
@@ -1054,21 +1054,50 @@
 ) %7B%0A    
-throw
+EnderCoreModConflictException ex =
  new End
@@ -1126,24 +1126,150 @@
 tion(msgs);%0A
+    ReflectionHelper.setPrivateValue(FMLClientHandler.class, FMLClientHandler.instance(), ex, %22customError%22);%0A//    throw ex;%0A
   %7D%0A%0A  @Over

Add hack workaround for FML custom display exceptions bug