jopi
Попрошайка
- 1,421
- 30
- 260
в классе claz.class вызываю register, если возвращается
далее я высылаю евент test по классам(т.е. только по claz.class тк он зареган)
но размер листа = 0, какого черта тут такое происходит, рефлексия работает на о#####сь, invoke не работает, а сейчас даже в лист обьект не засовывается...
Извините за гарево, но у меня уже конкретно жопу вырывает из-за таких приколов
true
в логе пишется ok reg: true
далее я высылаю евент test по классам(т.е. только по claz.class тк он зареган)
но размер листа = 0, какого черта тут такое происходит, рефлексия работает на о#####сь, invoke не работает, а сейчас даже в лист обьект не засовывается...
EventBus.class:
private List<Object> listeners = new ArrayList<Object>();
public boolean register(Object obj) {
if (!this.listeners.contains(obj)) {
this.listeners.add(obj);
return true;
}
return false;
}
public boolean unregister(Object obj) {
if (this.listeners.contains(obj)) {
return this.listeners.remove(obj);
}
return false;
}
public void post(Event event) {
System.out.println("g " + this.listeners.size());
for (Object listener : this.listeners) {
System.out.println("f " + listener.getClass().getSimpleName());
for (Method m : listener.getClass().getMethods()) {
System.out.println("e " + m.getName());
if (m.isAnnotationPresent(EventHandler.class)) {
System.out.println("d");
if (m.getParameterTypes().length == 1) {
System.out.println("c");
if (event.getClass().isAssignableFrom(m.getParameterTypes()[0])) {
System.out.println("b");
try {
System.out.println("a");
m.invoke(listener, event);
} catch (Exception e) {
e.printStackTrace();
}
}
} else {
CrueModLoader.err("Method annotated with @EventHandler must have only one parameter <? extends Event>");
}
}
}
}
}
Java:
public claz() {
System.out.println("ok reg: " + CrueModLoader.EVENT_BUS.register(this));
}