Skip to content

Commit d05448d

Browse files
Simplify and better document workaround for static method inheritance
1 parent 9a30574 commit d05448d

1 file changed

Lines changed: 7 additions & 15 deletions

File tree

src/main/js/lib/events-bukkit.js

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,15 @@ var bkEventPriority = org.bukkit.event.EventPriority,
33
bkEventExecutor = org.bukkit.plugin.EventExecutor,
44
bkRegisteredListener = org.bukkit.plugin.RegisteredListener;
55

6-
var nashorn = typeof Java != 'undefined';
7-
86
function getHandlerListForEventType(eventType) {
9-
var result = null;
10-
var clazz = null;
11-
if (nashorn) {
12-
//Nashorn doesn't like when getHandlerList is in a superclass of your event
13-
//so to avoid this problem, call getHandlerList using java.lang.reflect
14-
//methods
15-
clazz = eventType['class'];
16-
result = clazz.getMethod('getHandlerList').invoke(null);
17-
} else {
18-
result = eventType.getHandlerList();
19-
}
20-
21-
return result;
7+
// Nashorn doesn't make inherited static methods accessible on derived
8+
// classes (see https://stackoverflow.com/a/38258630), e.g.
9+
// org.bukkit.event.block.BlockBreakEvent.getHandlerList() does not work.
10+
// So to avoid this problem, call getHandlerList using java.lang.reflect
11+
// methods.
12+
return eventType.class.getMethod('getHandlerList').invoke(null);
2213
}
14+
2315
exports.on = function(
2416
/* Java Class */
2517
eventType,

0 commit comments

Comments
 (0)