orbit icon indicating copy to clipboard operation
orbit copied to clipboard

Feat: generic events

Open 0x000006 opened this issue 1 year ago • 0 comments

Generic events would be really useful for avoiding repetitive if conditions at the beginning of an event handler, thus improving readability.

A possible solution for this problem is a new typed event handler like @​GenericEventHandler(Something.class) and an IGenericEvent<T> interface with a getClass() method which returns Class<T>.

An example use case for typed events would be this:

@GenericEventHandler(CustomPayloadS2CPacket.class)
private void onPluginMessageReceive(GenericPacketEvent.Receive<CustomPayloadS2CPacket> event) {
    // event.packet is of type CustomPayloadS2CPacket at compile time
}

instead of

@EventHandler
private void onPluginMessageReceive(PacketEvent.Receive event) {
    if (!(event.packet instanceof CustomPayloadS2CPacket packet)) {
        return;
    }
}

0x000006 avatar Nov 22 '24 13:11 0x000006