UploadedNov 20, 2012
Supported Bukkit Versions
- CB 1.4.5-R0.2
Another update is out. This time I've mainly focused on asynchronous listeners, along with the usual bug fixes. I've also fixed a serious bug that would prevent client packets from being re-transmitted after being cancelled, and this time (hopefully) the update feature should be working properly. Upgrading is recommended.
The most significant new feature is the ability to move processing of client packets to the main thread. This is important, as client packet are typically processed asynchronously in a client's reader thread, and as such cannot access the Bukkit API safely without manual synchronization. This is especially problematic if you need to cancel a packet as a response to the Bukkit API, such as the permission system.
Currently, you will have to either cancel the packet - which I'd discourage - and sync with the main thread and then re-transmit it outside the filters. Or you could use an asynchronous thread with callSyncMethod and wait on the returned future, but that involves a lot of complicated logic. A better method is needed.
Synchronous processing allows you to run light-weight packet listeners on the main thread without having to deal with synchronization, concurrency or the overhead of an additional thread. It can also process multiple packets per tick with a configurable timeout.
- Added synchronous packet processing.
- Add the ability to clone a watchable object.
- Added the ability to enable or disable the background compiler.
- Use a separate asynchronous sending queue for every online player.
- Process asynchronous packets on an async thread.
- Fixed the update feature (hopefully for the last time).
- Always generate classes with legal identifiers.
- Fixed writing private fields with a compiled structure modifier.
- Fix the packet sending procedure.
- Log the plugin version in the error report.
- Add an error reporter to the background compiler.
- Correct concurrent initialization patterns.
- Fixed error reporter not being assigned properly.
- Fixed a number of minor bugs.
- Implement equals() and hashCode(), since we've implemented compareTo.
- Fix removing intervals in the interval tree.