Events API

Here is a list of the things we still need to do for the events API.

- [ ] player events
  - [x] PlayerJoinEvent and PlayerQuitEvent (#176)
  - [x] AsyncPlayerChatEvent (#158) (#143) (#151)
  - [x] PlayerChangedWorldEvent
  - [x] PlayerInteractEvent
  - [x] PlayerMoveEvent
  - [ ] achievement (#210)
- [ ] Chest events - refer to inventory events?
- [ ] Inventory Events
  - [ ] CraftItemEvent
  - [ ] EnchantItemEvent
  - [ ] InventoryDropEvent
  - [ ] InventoryAddEvent
  - [ ] InventoryPickupEvent
  - [ ] InventoryClickEvent
- [x] Entity riders (#94)
- [ ] Game mode change (#82)
- [ ] Entity interaction type (#206)
- [ ] Teleport cause/teleport event
- [x] Weather Events  (#212)
- [x] LightningStrikeEvent, WeatherChangedEvent, WeatherEvent (#212)
- [ ] Individual Player (#158)
- [ ] Entity events
  - [x] EntityDespawnEvent
  - [x] EntityDamageEvent
  - [ ] ProjectileLaunchEvent
  - [x] EntityBlockModificationEvent
  - [x] EntityCreatePortalEvent
  - [x] EntityDeathEvent
  - [ ] EntityInteractEvent
  - [x] EntityRegainHealthEvent
  - [x] EntityTeleportEvent
  - [x] EntityTameEvent

This doesn't make sense if the Entity is being unloaded due to unloading of chunks, the entity will still be "alive" and have the same persisting UUID after said entity has loaded, not necessarily killed or in a dead state.