I need to update values for the GUI (energy bar and progress bar), I already use IMessage for things that need to sync all the clients in a range, but I don't want to use them because I need to send message only to player who have the gui open.
About Block Events, I apologize for not being specific, I mean World#addBlockEvent, Block#onBlockEventReceived and TileEntity#receiveClientEvent and I need to know if these methods are a good way to update values in the GUI.
About the third question, I mean IInventory#getField, IInventory#setField and IInventory#getFieldCount. These methods are use by vanilla furnace to update the GUI, I just wondering why these methods are inside IInventory interface and not in a ISyncable interface or something like this.