[MCTCommon/Events] Improve event firing and listening #199
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Improved event handling in preparation of #193
Continuation of my refactor attempt in c578256 , which I postponed at the time
Changes
Firing events
Added a single
fireEvent()
method that takes the class of the event to fire as a parameterand removed the
fire
methods in each individual event.Registering event listeners
Instead of the registry just being one big list with all event listeners, the registry is now a hasmap of arraylists.
This is to avoid iterating over the entire list, to find which event listeners listens for the event that is being fired.
By using the Event.class as a key during registering, EVENTLISTENER_REGISTRY.get() returns the list of listeners that do actually implement the event.
Registering lambdas
Coincidentally, it is now possible to register lambdas as event listeners.
Misc
Moved CompactPacketHandler to
server
package as that it where it actually belongs