1package com.runehive.io;
3import com.runehive.net.packet.PacketListener;
4import com.runehive.net.packet.PacketListenerMeta;
5import com.runehive.net.packet.PacketRepository;
6import io.github.classgraph.*;
7import org.apache.logging.log4j.LogManager;
8import org.apache.logging.log4j.Logger;
10import java.lang.annotation.Annotation;
11import java.lang.reflect.Constructor;
12import java.util.Arrays;
25 try (
final ScanResult scanResult =
29 .enableAnnotationInfo()
30 .acceptPackages(
"com.runehive.net.packet.in")
32 for (
final ClassInfo classInfo : scanResult.getClassesWithAnnotation(
PacketListenerMeta.class)) {
34 final MethodInfoList constructorInfos = classInfo.getDeclaredConstructorInfo();
35 final MethodInfo constructorInfo = constructorInfos.get(0);
36 final Constructor<?> constructor = constructorInfo.loadClassAndGetConstructor();
38 final Object instance = constructor.newInstance();
41 final AnnotationInfo annotationInfo = classInfo.getAnnotationInfo(
PacketListenerMeta.class);
42 final Annotation annotation = annotationInfo.loadClassAndInstantiate();
45 Arrays.stream(meta.
value())
47 }
catch (
final Exception ex) {
48 logger.error(String.format(
"Error loading packet listeners=%s", classInfo.getSimpleName()), ex);
The class that loads all packet listeners.
static final Logger logger
The repository that stores packets sizes and listeners for how to execute the packets.
static void registerListener(int opcode, PacketListener listener)
Registers a listener to listen for client -> server packet events.