Okay, the stack overflow error is a bit weird at that line of code.
I looked through your code and one thing that stands out is that you're double-registering your entities. You shouldn't use the global id registration. At the time of 1.7.10 they were transitioning from the global registration to per-mod id, but you should only use the mod id one. Furthermore, you don't need to set it based on the getGlobalUniqueID(0 method, but rather simply start at 0 for your mod and increment for each one.
For example, in my mods I had something like this:
protected int modEntityID = -1;
public void registerModEntity(Class parEntityClass, String parEntityName)
{
EntityRegistry.registerModEntity(parEntityClass, parEntityName, ++modEntityID, WildAnimals.instance, 80, 3, false);
}
You'll note that I use a pre-increment ++ on the id so that if this gets called multiple times it will get the next id for next entity registered.
I'm not sure but potentially the double-registering of your entities could cause some problem during rendering so maybe clean that up and see if it helps.