Please learn Java.
This is ran once and it happens before you set your BurnTime variable in your constructor. You need to set this also in your constructor.
You said example. I wasn't just going to code it for you. ON isn't a property you want.
Now you will want to override getStateForPlacement and return the blockstate with the FACING property set to something based on EntityPlayer#getHorizontalFacing()
new BlockStateContainer(this, FACING, ON);
And if you dont know what I mean by override createBlockState then you need to learn Java basics. And it will be overridden in your Blocks class.
Stanford has a Java Programming course that they recorded the lectures of and put on YouTube, I dont have the link but it is pretty good. I dont have any books I can recommend. I mostly learned by doing and various google searches and my time here on the forum picking up various tidbits of information.
Since they happen at a set period of time after each other the game has a deltaTime(partialTicks) variable between each tick that is used for rendering things smoothly. So the game would update the position as to where it should be every tick and then render at that position with the partialTicks. Though your way of doing it works this is just the way minecraft handles these things.
I'm not sure if TEISRs are given GL access, but the it could be done using a combination of the two. If you use a TESR that doesnt do anything but a single conditional check every frame except for when the Item uses a TEISR it should be a better performing render. The reason I brought up GL access is TESRFast would obviously be the better method instead of just a TESR.
You will have to use the Events for RightClicking. Probably the event that is client side would be the most appropriate the class should be Inputsomething unless the PlayerInteractEvents work for this.
.You should instead use a custom IBakedModel and add the quads of the Item to the Blocks model.
Override TileEntity#getUpdatePacket/getUpdateTag/onDataPacket/handleUpdateTag