So you are more the type of "give me some code i can copy and paste cuz i don't want to understand the concept thats going on here"?
The documentation on capabilities is perfectly fine. They function as the exact purpose you just described in your first post. So give it a try at least. I doubt you are under strict time constraints and need to finish porting your mod within the next week....
For the mob spawning you could check when an entity joins the world (EntityJoinWorldEvent) and cancel that within a certain radius to your block. For the melting you would either use the randomtick of your block and manually melt ice around or use a tileentity for that
So i solved this by using blockstates for the intermediate state where the block would not update and schedule a tick after the given amount of time. Then in the tick() method of the block i do my logic when the blockstate matches my intermediate state.
I want to know how i can schedule changes to a blockstate after a certain amount of time. I want to change the blocks state of my block on right click after some seconds to render an animation during this time. How would i approach this?
Is there a way to completely stop an entity from moving (including head, limbs...) for a certain amount of time? I have an effect that should freeze the entities. If i set their motion to 0 they can still move their legs or head. That effect is my effect and it should be able to be applied to all enemies.