19162c3688
Some of the plugins are not yet supported. If you're feeling brave you can build from source using ant.
64 lines
1.9 KiB
JavaScript
64 lines
1.9 KiB
JavaScript
var bkEventPriority = org.bukkit.event.EventPriority,
|
|
bkEventExecutor = org.bukkit.plugin.EventExecutor,
|
|
bkRegisteredListener = org.bukkit.plugin.RegisteredListener,
|
|
bkEventPackage = 'org.bukkit.event.';
|
|
|
|
var nashorn = (typeof Java != 'undefined');
|
|
|
|
function getHandlerListForEventType( eventType ){
|
|
var result = null;
|
|
var clazz = null;
|
|
if (nashorn) {
|
|
|
|
//Nashorn doesn't like when getHandlerList is in a superclass of your event
|
|
//so to avoid this problem, call getHandlerList using java.lang.reflect
|
|
//methods
|
|
clazz = eventType['class'];
|
|
result = clazz.getMethod("getHandlerList").invoke(null);
|
|
|
|
} else {
|
|
result = eventType.getHandlerList();
|
|
}
|
|
|
|
return result;
|
|
}
|
|
exports.on = function(
|
|
/* Java Class */
|
|
eventType,
|
|
/* function( registeredListener, event) */
|
|
handler,
|
|
/* (optional) String (HIGH, HIGHEST, LOW, LOWEST, NORMAL, MONITOR), */
|
|
priority ) {
|
|
var handlerList,
|
|
regd,
|
|
eventExecutor;
|
|
|
|
if ( typeof priority == 'undefined' ) {
|
|
priority = bkEventPriority.HIGHEST;
|
|
} else {
|
|
priority = bkEventPriority[priority.toUpperCase().trim()];
|
|
}
|
|
handlerList = getHandlerListForEventType (eventType);
|
|
|
|
var result = { };
|
|
eventExecutor = new bkEventExecutor( {
|
|
execute: function( l, evt ) {
|
|
handler.call( result, evt );
|
|
}
|
|
} );
|
|
/*
|
|
wph 20130222 issue #64 bad interaction with Essentials plugin
|
|
if another plugin tries to unregister a Listener (not a Plugin or a RegisteredListener)
|
|
then BOOM! the other plugin will throw an error because Rhino can't coerce an
|
|
equals() method from an Interface.
|
|
The workaround is to make the ScriptCraftPlugin java class a Listener.
|
|
Should only unregister() registered plugins in ScriptCraft js code.
|
|
*/
|
|
regd = new bkRegisteredListener( __plugin, eventExecutor, priority, __plugin, true );
|
|
handlerList.register( regd );
|
|
result.unregister = function(){
|
|
handlerList.unregister( regd );
|
|
};
|
|
return result;
|
|
};
|