Changed entity initialization to take location rather than server and world.
Split player data out of WorldMetadataService (partially done):
- GlowServer has an accessor for the main world's PlayerDataService.
- PlayerDataService handles all I/O of online and offline player data.
- Better OfflinePlayer support, more on the way.
- Unfinished improved initial player load support.
Further player data stuff:
- OfflinePlayer loads data from data service on construction.
- GlowSession is responsible for constructing the player.
- NbtSerialization's world and location lookup improved.
- PlayerReader now has all the important stuff.
Use PlayerReader and PlayerProfile to create GlowPlayers (fixes #113).
- PlayerProfile holds name, UUID, and properties and is used where these are required.
- Player's location is now read before their entity is constructed.
- Moved initial isActive check into GlowSession.
- Profile is now part of HumanEntity rather than Player.
Completely revamped entity storage system (fixes #115).
- Some missing fields (velocity, UUID) were added to the entity classes.
- More NBT tags are written and read and unsupported ones are documented.
Added more MetadataIndex values, tests, and changed Tameable handling.
Minor cleanup and fixes and better NbtSerialization documentation.
Many changes to support actual entity spawning:
- Entity location and previousLocation are now tracked more correctly.
- GlowItem is now spawnable and uses metadata for storing its item.
- Chunks now track what entities they contain.
- World I/O now loads and saves entities.
- GlowEntity getType() has been left abstract.
- EntityManager's allocation code improved.
- Non-player entities are ticked before players.
More entity improvements:
- Keep teleported, velocityChanged, and better Velocity state.
- Send metadata and velocity changes as part of normal update cycle.
- Added Vector constructor to EntityVelocityMessage.
- Prevent client from assigning velocities to items.
- Implemented setVelocity() on players.
Improvements to entity metadata and I/O:
- Fix entities not being removed because their id was unset.
- Metadata changes system improved, players see their own metadata.
- On-fire status is now reflected in entity metadata.
- Nicer metadata bitflag manipulation and constants.
- Catch more exceptions in entity load/save.
- Use a reasonable default when setting GlowItems to null stacks.
Fixed errors trying to save out lightning bolts.
Corrected a comment and added a missing @Override.