Advertisement
imBEheAR

EventHandlerRegistration

Jan 6th, 2022
745
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.10 KB | None | 0 0
  1. @Singleton
  2. public class EventHandlerRegistration {
  3.  
  4.     private final MethodFinder methodSearcher;
  5.     private final JavaPlugin javaPlugin;
  6.     private final Injector injector;
  7.  
  8.     @Inject
  9.     public EventHandlerRegistration(MethodFinder methodSearcher,
  10.                                     JavaPlugin javaPlugin,
  11.                                     Injector injector) {
  12.         this.methodSearcher = methodSearcher;
  13.         this.javaPlugin = javaPlugin;
  14.         this.injector = injector;
  15.     }
  16.  
  17.     public void initialize(String... packageNames) {
  18.         Preconditions.checkNotNull(packageNames);
  19.         this.methodSearcher
  20.                 .filter(packageNames, MethodCriterion.annotatedWith(EventHandler.class))
  21.                 .forEach(
  22.                         method -> {
  23.                             EventHandler handler = method.getAnnotation(EventHandler.class);
  24.                            
  25.                             Bukkit.getPluginManager()
  26.                                     .registerEvent(
  27.                                             ((Class<? extends Event>) method.getParameterTypes()[0]),
  28.                                             new Listener() {},
  29.                                             handler.priority(),
  30.                                             (listener, event) -> {
  31.                                                 try {
  32.                                                     if (method.getParameterTypes()[0].isAssignableFrom(event.getClass())) {
  33.                                                         method.invoke(injector.getInstance(method.getDeclaringClass()), event);
  34.                                                     }
  35.                                                 } catch (IllegalAccessException | InvocationTargetException e) {
  36.                                                     e.printStackTrace();
  37.                                                 }
  38.                                             },
  39.                                             javaPlugin,
  40.                                             handler.ignoreCancelled());
  41.                         });
  42.     }
  43.  
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement