1) The behaviour of online player lookups is unchanged - this only affects offline player data lookups.
2) If a 'offline player' request is made from an async task, it is executed normally. (the data is loaded)
3) If a 'offline player' request that cannot be immediately fulfilled is made from the main server thread, an exception is thrown.
The exception thrown as a result of 3) can be disabled in the config. In this case, the query is performed anyway. The main server thread will block until the request is complete.
* Event instances are now generated dynamically at runtime. The performance hit of creating proxies at runtime is negligible in this case.
* A better EventBus implementation is now being used internally, API contracts are unaffected.
This was causing issues when user data was saved, without UUID data being saved beforehand.
This commit fixes the way the inconsistency was introduced, and ensures that inconsistent data is made consistent in the future. (when players next login)