If $direct is true, it'll send changes directly to players. if false, it'll be queued
and the best way to send queued changes will be done in the next tick.
This way big changes can be sent on a single chunk update packet instead of thousands of packets.
If $update is true, it'll get the neighbour blocks (6 sides) and update them.
If you are doing big changes, you might want to set this to false, then update manually.