MinecraftTAS / TASmod

Minecraft Tool-Assisted Speedrun (TAS) Tools with input playback
https://discord.gg/jGhNxpd
GNU General Public License v3.0
30 stars 5 forks source link

[MCTCommon/Events] Improve event firing and listening #199

Closed ScribbleTAS closed 8 months ago

ScribbleTAS commented 8 months ago

Improved event handling in preparation of #193 Continuation of my refactor attempt in c5782562f6e2fe739f58f92ac1e57237fad0e906 , 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 parameter
and 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