A custom gui is done with a class extending GuiScreen , you only need to open that up on client side (I guess you want to be using a KeyBinding for that) so every time the KeyBinding gets hit open the gui using
@SubscribeEvent
public void onKeyPressed(KeyInputEvent event)
{
if(ClientProxy.binding.isKeyDown())
{
Minecraft.getMinecraft.displayGuiScreen(new MyScreen())
}
}
You should look for a basic tutorial on how to set up ur proxies ( you will need it). There are tons of them out there so I wont teach u how to do that.
Same goes for Keybindings. Look for a tutorial, if you have any problems come back and ask. (Of course the Clientproxy.binding is from type KeyBinding)
For the playermodels.. I have no idea. Sorry