hCore allows you to register event handling without creating any class.
Example
Example code:
HCore.registerEvent(PlayerJoinEvent.class) //registers PlayerJoinEvent
.priority(EventPriority.HIGHEST) //sets priority as HIGHEST
.expire(10, TimeUnit.HOURS) //this event will expire in 10 hours
.filter(event -> event.getPlayer().hasPermission("example.permission")) //adds filter to work this listener
.limit(10) //after 10 usage, this listener will unregister (Events that fail the filter do not affects the limit!)
.consume(event -> { //when the event is triggered, consume will work
event.getPlayer().sendMessage("test");
event.getPlayer().sendMessage("test");
event.getPlayer().sendMessage("test");
});