public PyObject custom_event(PyType event) { Class<?> proxy = event.getProxyType(); if (Event.class.isAssignableFrom(proxy)) { // add the stupid handler list attribute and get handler list method // which the bukkit team could not add themselves for some strange reason // event.__setattr__("handlerList", Py.java2py(new HandlerList())); // ((PyType)event.getBase()).addMethod(new // PyBuiltinClassMethodNarrow("getHandlerList", 0, 0) { // @Override // public PyObject __call__() { // return self.__getattr__("handlerList"); // } // }); // event.addMethod(new PyBuiltinClassMethodNarrow("getHandlers", 0, 0) { // @Override // public PyObject __call__() { // return self.__getattr__("handlerList"); // } // }); customEvents.put(event.getName(), (Class<? extends Event>) proxy); } else { throw new IllegalArgumentException( "Tried to register a custom Event which does not extend Event"); } return event; }