2014-01-14 23:54:49 +01:00
|
|
|
/*
|
2014-01-29 20:49:15 +01:00
|
|
|
This file is the first and only file executed directly from the Java Plugin.
|
|
|
|
*/
|
2014-01-14 23:54:49 +01:00
|
|
|
var __scboot = null;
|
|
|
|
(function(){
|
2014-01-29 20:49:15 +01:00
|
|
|
var File = java.io.File,
|
|
|
|
FileReader = java.io.FileReader,
|
|
|
|
FileOutputStream = java.io.FileOutputStream,
|
|
|
|
ZipInputStream = java.util.zip.ZipInputStream,
|
2014-09-30 00:42:41 +02:00
|
|
|
//jsPlugins = new File('plugins/scriptcraft'),
|
|
|
|
jsPlugins = new File('scriptcraft'),
|
2014-01-29 20:49:15 +01:00
|
|
|
initScript = 'lib/scriptcraft.js';
|
2014-01-14 23:54:49 +01:00
|
|
|
|
2014-09-30 00:42:41 +02:00
|
|
|
var unzip = function(zis, logger) {
|
|
|
|
var entry,
|
2014-01-29 20:49:15 +01:00
|
|
|
reason = null,
|
|
|
|
unzipFile = false,
|
|
|
|
zTime = 0,
|
|
|
|
fTime = 0,
|
|
|
|
fout = null,
|
|
|
|
c,
|
|
|
|
newFile;
|
2014-01-14 23:54:49 +01:00
|
|
|
|
2014-01-29 20:49:15 +01:00
|
|
|
while ( ( entry = zis.nextEntry ) != null ) {
|
2014-01-14 23:54:49 +01:00
|
|
|
|
2014-01-29 20:49:15 +01:00
|
|
|
newFile = new File(jsPlugins, entry.name);
|
|
|
|
if (entry.isDirectory()){
|
|
|
|
newFile.mkdirs();
|
|
|
|
zis.closeEntry();
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
reason = null;
|
|
|
|
zTime = entry.time;
|
|
|
|
unzipFile = false;
|
|
|
|
if (!newFile.exists()) {
|
|
|
|
reason = 'NE';
|
|
|
|
unzipFile = true;
|
|
|
|
}else{
|
|
|
|
fTime = newFile.lastModified();
|
|
|
|
if (zTime > fTime) {
|
|
|
|
reason = ((zTime - fTime) / 3600000) + "h";
|
|
|
|
unzipFile = true;
|
2014-01-14 23:54:49 +01:00
|
|
|
}
|
2014-01-29 20:49:15 +01:00
|
|
|
}
|
|
|
|
if (unzipFile) {
|
|
|
|
logger.info('Unzipping ' + newFile.canonicalPath + ' (' + reason + ')' );
|
|
|
|
fout = new FileOutputStream(newFile);
|
|
|
|
for (c = zis.read(); c != -1; c = zis.read()) {
|
|
|
|
fout.write(c);
|
2014-01-14 23:54:49 +01:00
|
|
|
}
|
2014-01-29 20:49:15 +01:00
|
|
|
fout.close();
|
|
|
|
}
|
|
|
|
zis.closeEntry();
|
|
|
|
}
|
|
|
|
zis.close();
|
|
|
|
};
|
|
|
|
/*
|
|
|
|
Called from Java plugin
|
|
|
|
*/
|
2014-09-30 00:42:41 +02:00
|
|
|
__scboot = function ( plugin, engine, classLoader )
|
2014-01-29 20:49:15 +01:00
|
|
|
{
|
2014-09-30 00:42:41 +02:00
|
|
|
var logger = plugin.logman,
|
2014-01-29 20:49:15 +01:00
|
|
|
initScriptFile = new File(jsPlugins,initScript),
|
|
|
|
zips = ['lib','plugins','modules'],
|
|
|
|
i = 0,
|
2014-09-30 00:42:41 +02:00
|
|
|
zis,
|
2014-01-29 20:49:15 +01:00
|
|
|
len = zips.length;
|
2014-01-14 23:54:49 +01:00
|
|
|
|
2014-01-29 20:49:15 +01:00
|
|
|
if (!jsPlugins.exists()){
|
|
|
|
logger.info('Directory ' + jsPlugins.canonicalPath + ' does not exist.');
|
|
|
|
logger.info('Initializing ' + jsPlugins.canonicalPath + ' directory with contents from plugin archive.');
|
|
|
|
jsPlugins.mkdirs();
|
|
|
|
}
|
|
|
|
|
|
|
|
for (i = 0; i < len;i++){
|
2014-09-30 00:42:41 +02:00
|
|
|
if ( plugin.canary ) {
|
|
|
|
zis = new ZipInputStream(classLoader.getResourceAsStream(zips[i] + '.zip'));
|
|
|
|
unzip( zis, logger );
|
|
|
|
} else {
|
|
|
|
if ( plugin.config.getBoolean('extract-js.' + zips[i]) ) {
|
|
|
|
zis = new ZipInputStream(plugin.getResource(zips[i] + '.zip'));
|
|
|
|
unzip( zis, logger );
|
|
|
|
}
|
2014-01-29 20:49:15 +01:00
|
|
|
}
|
|
|
|
}
|
2014-09-30 00:42:41 +02:00
|
|
|
if (plugin.bukkit) {
|
|
|
|
plugin.saveDefaultConfig();
|
|
|
|
}
|
|
|
|
try {
|
|
|
|
engine.eval(new FileReader(initScriptFile));
|
|
|
|
__onEnable(engine, plugin, initScriptFile);
|
|
|
|
}catch ( e ){
|
|
|
|
logger.error('Error evaluating ' + initScriptFile + ': ' + e);
|
|
|
|
throw e;
|
|
|
|
}
|
2014-01-29 20:49:15 +01:00
|
|
|
};
|
2014-01-14 23:54:49 +01:00
|
|
|
})();
|