Fix for issue #64 bad interaction with Essentials plugin
This commit is contained in:
parent
a684a0b333
commit
5b473d9c93
3 changed files with 16 additions and 7 deletions
|
@ -15,8 +15,9 @@ import java.util.ArrayList;
|
|||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.bukkit.command.*;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
public class ScriptCraftPlugin extends JavaPlugin
|
||||
public class ScriptCraftPlugin extends JavaPlugin implements Listener
|
||||
{
|
||||
// right now all ops share the same JS context/scope
|
||||
// need to look at possibly having context/scope per operator
|
||||
|
|
|
@ -94,10 +94,6 @@ var events = events || {
|
|||
}
|
||||
var _event = org.bukkit.event;
|
||||
var _plugin = org.bukkit.plugin;
|
||||
//
|
||||
// can't have objects that implement multiple interface in javax.scripts.*
|
||||
//
|
||||
var theListener = new _event.Listener(){};
|
||||
|
||||
var _on = function(eventType, handler, priority)
|
||||
{
|
||||
|
@ -121,7 +117,19 @@ var events = events || {
|
|||
}
|
||||
};
|
||||
listener.reg = new _plugin.RegisteredListener(
|
||||
theListener,eventExecutor,priority,__plugin,true
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
__plugin
|
||||
,eventExecutor
|
||||
,priority
|
||||
,__plugin
|
||||
,true
|
||||
)
|
||||
handlerList.register(listener.reg);
|
||||
return listener.reg;
|
||||
|
|
|
@ -206,6 +206,7 @@ var signs = signs || plugin("signs", {
|
|||
look up our list of menu signs. If there's a matching location and there's
|
||||
a sign, then update it.
|
||||
*/
|
||||
|
||||
if (! event.clickedBlock.state instanceof org.bukkit.block.Sign)
|
||||
return;
|
||||
var evtLocStr = utils.locationToString(event.clickedBlock.location);
|
||||
|
@ -213,7 +214,6 @@ var signs = signs || plugin("signs", {
|
|||
if (signUpdater)
|
||||
signUpdater(event.player, event.clickedBlock.state);
|
||||
});
|
||||
|
||||
});
|
||||
}());
|
||||
|
||||
|
|
Reference in a new issue