Oh that is right it changed in 1.9 right, I just remembered back to when I started in 1.5.2 I made armor that would make you invincible until it broke unless you took major damage like from one of the custom swords.
And if the int[] total reaches 25 you will be invincible(side note I don't know if that is true and I don't think it is because of the way armor reduction works), why would you want it to go that high Diamond Armor only goes to 20 and that is the max displayable amount of armor bars normally but you can customize Armor by implementing ISpecialArmor in your Armor Class.
Actually I did not though I makes sense that there is those sound mighty useful, though I have never had to do anything like that before. But is it possible to register GuiOpenEvent only client side and have it work?
You would have to override when the player right clicks on the Villager and display a new gui/container which you can't do on a vanilla server.
Actually you may be able to subscribe to a ClientTickEvent and check if the players currentScreen is the villager one and if so replace it. Though client tick event could cause lag.
What do you mean automatic? Are you going to make a new block that opens a Gui and allows players to select possible villager trades? Or is the block going to be placed next to a villager and it will access that inventory to deal with trades?
It is okay Draco18 I went into a Discord "call" and settled this, in his code there were many errors, caused by not properly Overriding and slot index's were set up incorrrecy, but thank you for the example I will look at it when I get some rest.
Your model handles all textures and you don't register multiple models for metadata. This blockstate JSON is an example of the forge variant system that I made for BlockPlanks.