This allows us to cancel events when the subject is no longer around.
For example, if a chunk is unloaded due to inactivity, the events within
it are cancelled (growth of wheat, propegation of fluids, etc). When a
client disconnects, events associated with it are cancelled.
To use this for your own scheduled events, pick a subject. If your
subject does not implement IEventSubject, implement it. Then, you can
pass the subject into ScheduleEvent and that's it. When the subject
dies, your events will die with it. So long as the subject remains
alive, your events still fire.
`null` is a valid subject for events that should happen regardless of
any subject expiring.
Closes#1
- Enforced coding style
- Improved perlin constants
- Improved biome constants
- Spawn plants before trees so plants may grow underneath
- Fixed areas that were not deterministic
- Decorations are terrain features such as trees & dungeons
- cleaned up the code for chunk decorators, and tree & dungeon
generation
- monster spawner blocks now have no drop
- when a block is set to air its metadata value is now reset to 0x0