TabooLib/src/main/scala/io/izzel/taboolib/common/loader/StartupLoader.java

48 lines
1.3 KiB
Java
Raw Normal View History

2020-03-24 16:24:44 +00:00
package io.izzel.taboolib.common.loader;
import com.google.common.collect.Lists;
import io.izzel.taboolib.TabooLib;
import io.izzel.taboolib.module.inject.TInjectHelper;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.List;
/**
* @Author sky
* @Since 2020-03-24 23:54
*/
public class StartupLoader {
static List<Class<?>> classList = Lists.newArrayList();
public static void register(Class<?> clazz) {
classList.add(clazz);
}
public static void onLoading() {
run(Startup.Loading.class);
}
public static void onStarting() {
run(Startup.Starting.class);
}
static void run(Class<? extends Annotation> annotation) {
for (Class pluginClass : classList) {
for (Method declaredMethod : pluginClass.getDeclaredMethods()) {
if (declaredMethod.isAnnotationPresent(annotation)) {
declaredMethod.setAccessible(true);
for (Object instance : TInjectHelper.getInstance(declaredMethod, pluginClass, TabooLib.getPlugin())) {
try {
declaredMethod.invoke(instance);
} catch (Throwable t) {
t.printStackTrace();
}
}
}
}
}
}
}