Advertisement
MISTERVODKA

EventsApi.java

Jul 21st, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.67 KB | None | 0 0
  1. package me.kofest.eventsapi;
  2.  
  3. import java.lang.reflect.InvocationTargetException;
  4. import java.lang.reflect.Method;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7.  
  8. import org.bukkit.event.Event;
  9. import org.bukkit.plugin.java.JavaPlugin;
  10.  
  11. import me.kofest.eventsapi.api.ApiHandler;
  12. import me.kofest.eventsapi.api.EventType;
  13. import me.kofest.eventsapi.thread.EventsThread;
  14.  
  15. public class EventsApi extends JavaPlugin {
  16.     private static EventsApi instance;
  17.  
  18.     public static EventsApi getInst() {
  19.         return instance;
  20.     }
  21.  
  22.     @Override
  23.     public void onEnable() {
  24.         instance = this;
  25.         getServer().getPluginManager().registerEvents(new EventsHandler(), this);
  26.     }
  27.  
  28.     private static final List<Object> handlers = new ArrayList<>();
  29.  
  30.     public static final void registerHandler(Object handlerClass) {
  31.         handlers.add(handlerClass);
  32.     }
  33.  
  34.     public static final void unregisterHandler(Object handlerClass) {
  35.         handlers.remove(handlerClass);
  36.     }
  37.  
  38.     public static final void callEvent(Event event) {
  39.         synchronized (instance) {
  40.             new EventsThread() {
  41.                 @Override
  42.                 public void run() {
  43.                     for (Object handler : handlers) {
  44.                         for (Method m : handler.getClass().getDeclaredMethods()) {
  45.                             if (m.isAnnotationPresent(ApiHandler.class)) {
  46.                                 ApiHandler ah = m.getAnnotation(ApiHandler.class);
  47.                                 EventType et = ah.eventType();
  48.                                 if (event.getEventName().equalsIgnoreCase(et.toString())) {
  49.                                     try {
  50.                                         m.invoke(handler, event);
  51.                                     } catch (IllegalAccessException | IllegalArgumentException
  52.                                             | InvocationTargetException e) {
  53.                                         e.printStackTrace();
  54.                                     }
  55.                                 }
  56.                             }
  57.                         }
  58.                     }
  59.                 }
  60.             };
  61.         }
  62.     }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement