-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Здравствуйте, есть вопрос, делал EventManager вроде как всё нормально, но когда добавляю Event через call то вылазит ошибка, как её решить ?
Код:
public class EventManager {
public static Map<Class<? extends Event>, Map<Object, Method>> eventList;
@SneakyThrows
public EventManager () {
eventList = new HashMap<>();
}
public static void register (Object object) {
Class<? extends Event> classObject = (Class<? extends Event>) object.getClass();
for (Method method : classObject.getDeclaredMethods()) {
if (method.isAnnotationPresent( SubstribleEvent .class)) {
Class<? extends Event>[] classParameter = (Class<? extends Event>[]) method.getParameterTypes();
if (classParameter.length == 1) {
Class<? extends Event> eventType = classParameter[0];
eventList.computeIfAbsent(eventType, k -> new HashMap<>()).put(object, method);
}
}
}
}
public static void unregister (Object object) {
for (Map<Object, Method> mapList : eventList.values()) {
eventList.remove(object);
}
}
@SneakyThrows
public static void call (Object object) {
Class<? extends Event> classObject = (Class<? extends Event>) object.getClass();
Map<Object, Method> mapList = eventList.get(classObject);
if (mapList != null) {
for (Method method : mapList.values()) {
method.invoke(method.getDeclaringClass().getInterfaces(), object);
}
}
}
}