A maintenance release with some general bug fixes and usability improvements.
Change log:
- Change the target version of the project to Java 8 to match the few Java 8 classes that are used.
- Added SafeVarargs annotation to EntityContainer to avoid unchecked varargs warnings.
- Added ChatHostedService.add/removeChatSessionListener() so that the server can listen for chat messages.
- Added ChatHostedService.postMessage() so that a server console can post messages to the chat.
- Added some alternate constructors to GameSystemState that allow passing of an existing/custom GameSystemManager.
- Added GameSystemsState.getGameSystemManager() and GameSystemsState.get(class, boolean) methods.
- Added RecurringTaskSystem for executing general tasks once per frame.
- Added JobState/WorkerPool.isBusy() to indicate if there are still pending/running workers.
- Added JobState.getPoolSize() for querying the number of threads in the pool.
- Modified JobState.getQueuedCount()/getActiveCount() to return the live numbers from WorkerPool instead of the (likely delayed) numbers that the versioned objects are tracking.
- Fixed an issue where shutdown workers were spewing InterruptedException stack traces to the logs during shutdown.
- Changed the element ID for MessageState labels to be "console.message.label" instead of "message.label". The latter was too generic in styling and was often catching optionPanel.message.label as well.
- Fixed BulletSystem collision listener iteration to use getArray() instead of creating an iterator every time. (thanks Ali-RS)