@Override
 public void onDisable() {
   for (Hook hook : hooks) {
     if (hook.isProvided()) {
       hook.unload();
     }
   }
 }
 @Override
 public void onEnable() {
   registerHooks();
   for (Hook hook : hooks) {
     if (hook.isProvided()) {
       hook.load();
     }
   }
 }
 @SuppressWarnings("unchecked")
 @Override
 public <T extends Hook> T getHook(Class<T> cls) {
   for (Hook hook : hooks) {
     if (cls.isAssignableFrom(hook.getClass())) {
       return (T) hook;
     }
   }
   return null;
 }