Replace a function in the API

This commit is contained in:
Zontreck 2024-02-13 21:16:49 -07:00
parent 702b68a7ac
commit 799f32bca7

View file

@ -92,43 +92,12 @@ public class EventDispatcher
/** /**
* Scan all event subscribers * Register a class
*/ */
private static void Scan() public static void Register(Class<?> clazz)
{ {
Package[] packages = Package.getPackages(); if(clazz.isAnnotationPresent(EventSubscriber.class))
subscribers.add(clazz);
List<Class<?>> loaded = new ArrayList<>();
for(Package pkg : packages)
{
try {
String packageName = pkg.getName();
var classes = ClassPath.from(ClassLoader.getSystemClassLoader())
.getAllClasses()
.stream()
.filter(clz->clz.getPackageName().equals(packageName))
.map(c->c.load())
.collect(Collectors.toList());
for(Class<?> clazz : classes)
{
if(clazz.getPackage().getName().equalsIgnoreCase(packageName))
{
if(clazz.isAnnotationPresent(EventSubscriber.class))
loaded.add(clazz);
}
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
subscribers = loaded;
} }
/** /**
@ -140,8 +109,8 @@ public class EventDispatcher
{ {
Post(new ResetEventBusEvent()); Post(new ResetEventBusEvent());
subscribers.clear();
singleshot.clear(); singleshot.clear();
Scan();
ClassScanner.DoScan(); ClassScanner.DoScan();
Post(new EventBusReadyEvent()); Post(new EventBusReadyEvent());