For the Screen, have you tried to put in your constructor "this.width = super.width * 2" & "this.height = super.height * 2" to double the size instead of setSize method?
You didn't tell the parent class what your gui width and height are, so it assumes the default values, which are out of an assumed total of 256 when calculating UVs (which are what's actually used when drawing the gui).
DeferredRegister uses the event hooks. They just have much simpler and cleaner syntax. They also take care of ensuring your object references stay up to date and also support registry overrides.
I wouldn't say I know enough Java to pr Forge, so I will instead make my suggestion here.
I think it would be useful if there was a ShieldBlockEvent of some sort, which is fired when an an attack is blocked by a shield. I would assume you could get the DamageSource of the attack along with the shield item from the event.