Override the hurt method, check if the source that's passed isn't DamageSource.OUT_OF_WORLD (this is in order to allow your entity to be killed via commands or the void) and then return false. If the check is false then just return call to the hurt method in the super class.
You can save the color of your entity in it's class (make sure it's saved to the NBT and is synced) and after that use the instance that's passed to the method for the texture in your model to check for the color and pass a different texture depending on that.
You can have an enum with all your colors and then save the ordinal of the color to the NBT.
Look at how the glass block is registered, there might be a property for that.
You'll also most likely need to subscribe to FMLClientSetupEvent and then use ItemBlockRenderTypes#setRenderLayer. You'll need to pass it your block and the render type.
Most people don't do custom dimensions manually anymore. That's ever since Mojank introduced JSON-driven dimensions on which you can find documentation here.
If you want more diversity you can do your own generators.
Please keep in mind that I haven't messed with the new dimensions yet so if you need more help you'll need to wait for someone else to help.
A similar bug was fixed back in .90 but another one seems to have appeared.
There's a PR working on a fix. For the time being, I recommend downgrading to .84.