Fixed a bug in plugin code where stores were being trashed at startup
This commit is contained in:
parent
c6b600ae9f
commit
d44a43e598
6 changed files with 35 additions and 46 deletions
|
@ -1 +1,2 @@
|
|||
bukkit-version=1.6.4
|
||||
bukkit-version=1.7.2
|
||||
scriptcraft-version=2.0
|
||||
|
|
|
@ -90,7 +90,7 @@
|
|||
<!-- ensure plugin.yml is always copied -->
|
||||
<delete file="${build}/plugin.yml" />
|
||||
<copy file="src/main/resources/plugin.yml" todir="${build}"/>
|
||||
<replace file="${build}/plugin.yml" value="${bukkit-version}-${DSTAMP}">
|
||||
<replace file="${build}/plugin.yml" value="${scriptcraft-version}-${DSTAMP}">
|
||||
<replacetoken>[[version]]</replacetoken>
|
||||
</replace>
|
||||
|
||||
|
|
|
@ -36,13 +36,14 @@ var _plugin = function(/* String */ moduleName, /* Object */ moduleObject, isPer
|
|||
_plugins[moduleName] = pluginData;
|
||||
|
||||
if (isPersistent){
|
||||
var loadedStore = load(dataDir.canonicalPath + "/" + moduleName + "-store.json");
|
||||
if (loadedStore){
|
||||
moduleObject.store = loadedStore;
|
||||
}else{
|
||||
if (!moduleObject.store){
|
||||
moduleObject.store = {};
|
||||
}
|
||||
var loadedStore = load(dataDir.canonicalPath + "/" + moduleName + "-store.json");
|
||||
if (loadedStore){
|
||||
for (var i in loadedStore){
|
||||
moduleObject.store[i] = loadedStore[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
return moduleObject;
|
||||
|
|
|
@ -54,10 +54,12 @@ module specification, the '.js' suffix is optional.
|
|||
[cjsmodules]: http://wiki.commonjs.org/wiki/Modules/1.1.1.
|
||||
|
||||
***/
|
||||
( function (logger, evaluator, verbose, rootDir) {
|
||||
( function (logger, evaluator, verbose, rootDir, modulePaths) {
|
||||
|
||||
if (verbose)
|
||||
if (verbose){
|
||||
logger.info("Setting up 'require' module system. Root Directory: " + rootDir);
|
||||
logger.info("Module paths: " + JSON.stringify(modulePaths));
|
||||
}
|
||||
|
||||
var File = java.io.File;
|
||||
|
||||
|
@ -84,9 +86,6 @@ module specification, the '.js' suffix is optional.
|
|||
}
|
||||
};
|
||||
|
||||
var LIB_DIR = rootDir + '/lib/';
|
||||
var MODULE_DIR = rootDir + '/modules/';
|
||||
|
||||
var resolveModuleToFile = function(moduleName, parentDir) {
|
||||
/**********************************************************************
|
||||
## When resolving module names to file paths, ScriptCraft uses the following rules...
|
||||
|
@ -120,6 +119,7 @@ module specification, the '.js' suffix is optional.
|
|||
3.2 if no package.json file exists then look for an index.js file in the directory
|
||||
|
||||
***/
|
||||
|
||||
var file = new File(moduleName);
|
||||
|
||||
var fileExists = function(file) {
|
||||
|
@ -137,41 +137,19 @@ module specification, the '.js' suffix is optional.
|
|||
if (moduleName.match(/^[^\.\/]/)){
|
||||
// it's a module named like so ... 'events' , 'net/http'
|
||||
//
|
||||
|
||||
var resolvedFile = new File(LIB_DIR + moduleName);
|
||||
var resolvedFile;
|
||||
for (var i = 0;i < modulePaths.length; i++){
|
||||
resolvedFile = new File(modulePaths[i] + moduleName);
|
||||
if (resolvedFile.exists()){
|
||||
|
||||
return fileExists(resolvedFile);
|
||||
}else{
|
||||
|
||||
// try appending a .js to the end
|
||||
resolvedFile = new File(LIB_DIR + moduleName + '.js');
|
||||
if (resolvedFile.exists()){
|
||||
|
||||
return resolvedFile;
|
||||
}else{
|
||||
|
||||
if (verbose){
|
||||
logger.info("File not found in " + LIB_DIR + ': ' + resolvedFile.canonicalPath);
|
||||
}
|
||||
|
||||
resolvedFile = new File(MODULE_DIR + moduleName);
|
||||
if (resolvedFile.exists()){
|
||||
return fileExists(resolvedFile);
|
||||
}else {
|
||||
if (verbose){
|
||||
logger.info("File not found in " + MODULE_DIR + ': ' + resolvedFile.canonicalPath);
|
||||
}
|
||||
resolvedFile = new File(MODULE_DIR + moduleName + '.js');
|
||||
resolvedFile = new File(modulePaths[i] + moduleName + '.js');
|
||||
if (resolvedFile.exists())
|
||||
return resolvedFile;
|
||||
else{
|
||||
|
||||
}
|
||||
if (verbose){
|
||||
logger.info("File not found in " + MODULE_DIR + ': ' + resolvedFile.canonicalPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
logger.info("Module " + moduleName + " not found in " + modulePaths[i]);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -740,7 +740,16 @@ See [issue #69][issue69] for more information.
|
|||
global.addUnloadHandler = _addUnloadHandler;
|
||||
|
||||
var fnRequire = load(jsPluginsRootDirName + '/lib/require.js',true);
|
||||
global.require = fnRequire(__plugin.logger, __engine, config.verbose, jsPluginsRootDirName);
|
||||
/*
|
||||
setup paths to search for modules
|
||||
*/
|
||||
var modulePaths = [jsPluginsRootDirName + '/lib/',
|
||||
jsPluginsRootDirName + '/modules/'];
|
||||
global.require = fnRequire(__plugin.logger,
|
||||
__engine,
|
||||
config.verbose,
|
||||
jsPluginsRootDirName,
|
||||
modulePaths);
|
||||
|
||||
|
||||
var plugins = require('plugin');
|
||||
|
|
|
@ -75,7 +75,7 @@ exports.classroom = classroom;
|
|||
|
||||
events.on('player.PlayerLoginEvent', function(listener, event) {
|
||||
var player = event.player;
|
||||
if (classroom.store.enableScripting){
|
||||
if (_store.enableScripting){
|
||||
player.addAttachment(__plugin, "scriptcraft.*", true);
|
||||
}
|
||||
}, "HIGHEST");
|
||||
|
|
Reference in a new issue