Sometimes it is required to have stable block update ticks.
Here we can use Block.updateTick, Block.setRandomTick(true) and tickRate(world)
But it gives unstable, random updates.
So we are using tile entities, but they was designed to store data. So we have to add mapping for it and store in saves dummy structures like {id, x, y, z} (created by Tileentity.writeToNBT method), just to recreate timer after relaunching server.
And i am suggesting to add an api to Block class which will be like Random Tick, but stable; with fixed intervals.