Merge branch 'refreshFix' of https://github.com/MrVoltz/ScriptCraft into MrVoltz-refreshFix

This commit is contained in:
walterhiggins 2016-01-02 11:29:27 +00:00
commit 6cfe460e37

View file

@ -366,11 +366,18 @@ The refresh() function can be used to only reload the ScriptCraft plugin (it's l
1. Disable the ScriptCraft plugin. 1. Disable the ScriptCraft plugin.
2. Unload all event listeners associated with the ScriptCraft plugin. 2. Unload all event listeners associated with the ScriptCraft plugin.
3. Cancel all timed tasks (created by `setInterval` & `setTimeout`)
3. Enable the ScriptCraft plugin. 3. Enable the ScriptCraft plugin.
... refresh() can be used during development to reload only scriptcraft javascript files. ... refresh() can be used during development to reload only scriptcraft javascript files.
See [issue #69][issue69] for more information. See [issue #69][issue69] for more information.
By default, if `self` is defined at runtime, it checks, whether `self` is server operator, otherwise fails with message. This behavivor can be modified using `skipOpCheck` parameter (useful, if you are doing some custom premission checks before calling this function).
#### Parameters
* skipOpCheck (boolean - optional) : If true, the function won't check if `self` is server operator.
[issue69]: https://github.com/walterhiggins/ScriptCraft/issues/69 [issue69]: https://github.com/walterhiggins/ScriptCraft/issues/69
### addUnloadHandler() function ### addUnloadHandler() function
@ -529,19 +536,20 @@ function __onEnable ( __engine, __plugin, __script ) {
return sender.op; return sender.op;
} }
} }
function _refresh( ) { function _refresh( skipOpCheck ) {
if ( typeof self !== 'undefined' ) { if (!skipOpCheck && typeof self !== 'undefined') {
if ( !_isOp(self) ) { if (!_isOp(self))
echo( self, 'Only operators can refresh()'); return echo(self, 'Only operators can refresh()');
return;
}
} }
if (__plugin.canary){ if (__plugin.canary){
var pluginName = __plugin.name; var pluginName = __plugin.name;
Canary.manager().disablePlugin( pluginName ); Canary.manager().disablePlugin( pluginName );
Canary.manager().enablePlugin( pluginName ); Canary.manager().enablePlugin( pluginName );
} else { } else {
__plugin.pluginLoader.disablePlugin( __plugin ); __plugin.pluginLoader.disablePlugin( __plugin );
org.bukkit.event.HandlerList["unregisterAll(org.bukkit.plugin.Plugin)"]( __plugin );
server.scheduler.cancelTasks( __plugin );
__plugin.pluginLoader.enablePlugin( __plugin ); __plugin.pluginLoader.enablePlugin( __plugin );
} }
} // end _refresh() } // end _refresh()