You need to call World#notifyBlockUpdate from the TileEntity whenever a value used by Block#getActualState changes. This tells the server to send the TileEntity's update packet to any nearby clients as well as telling them to re-draw the chunk containing the block, using the new actual state to select the model.
You also need to call World#notifyBlockUpdate from TileEntity#onDataPacket so that the client re-draws the chunk whenever it receives the TileEntity's update packet.
You can see an example of a block that uses TileEntity data in Block#getActualState here: BlockColoredRotatable, TileEntityColoredRotatable