fix: 修复路径导致的插件加载失败

This commit is contained in:
coding 2017-10-23 09:09:24 +00:00
parent 7e2bb0a73a
commit 898872a88f
7 changed files with 48 additions and 27 deletions

View File

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>pw.yumc</groupId> <groupId>pw.yumc</groupId>
<artifactId>MiaoScript</artifactId> <artifactId>MiaoScript</artifactId>
<version>1.1.1</version> <version>1.1.2</version>
<developers> <developers>
<developer> <developer>
<id>502647092</id> <id>502647092</id>

View File

@ -14,7 +14,7 @@ var disable;
} }
load(root + '/core/init.js'); load(root + '/core/init.js');
try { try {
init(root, plugin); init(root);
} catch (ex) { } catch (ex) {
log.w("MiaoScript 初始化失败! %s", ex); log.w("MiaoScript 初始化失败! %s", ex);
throw ex; throw ex;

View File

@ -4,8 +4,15 @@
var String = Java.type("java.lang.String"); var String = Java.type("java.lang.String");
var File = Java.type("java.io.File"); var File = Java.type("java.io.File");
var Files = Java.type("java.nio.file.Files"); var Files = Java.type("java.nio.file.Files");
var separatorChar = File.separatorChar;
var StandardCopyOption = Java.type("java.nio.file.StandardCopyOption"); var StandardCopyOption = Java.type("java.nio.file.StandardCopyOption");
/**
* 用文件分割符合并路径
*/
exports.concat = function () {
return Array.prototype.join.call(arguments, separatorChar);
}
/** /**
* 获得文件 * 获得文件
* @constructor(file) * @constructor(file)

View File

@ -3,12 +3,13 @@ var global = this;
/*global base*/ /*global base*/
// noinspection JSUnusedLocalSymbols // noinspection JSUnusedLocalSymbols
function init(root, plugin) { function init(root) {
global.root = root; global.root = root;
loadCore(); loadCore();
loadRequire(); loadRequire();
loadPatch();
loadLib4Bukkit(); loadLib4Bukkit();
loadPlugins(plugin); loadPlugins();
} }
/** /**
@ -18,8 +19,6 @@ function loadCore() {
// 加载基础模块 // 加载基础模块
load(root + '/core/ext.js'); load(root + '/core/ext.js');
load(root + '/core/console.js'); load(root + '/core/console.js');
// 加载补丁和扩展
load(root + '/core/patch.js');
} }
/** /**
@ -30,6 +29,17 @@ function loadRequire() {
global.require = load(root + '/core/require.js')(root); global.require = load(root + '/core/require.js')(root);
} }
/**
* 加载补丁
*/
function loadPatch() {
// 加载补丁和扩展
load(root + '/core/patch.js');
}
/**
* 加载Bukkit的类库
*/
function loadLib4Bukkit() { function loadLib4Bukkit() {
require('modules/event'); require('modules/event');
var task = require('modules/task'); var task = require('modules/task');
@ -50,14 +60,14 @@ function loadLib4Bukkit() {
/** /**
* 加载JS插件 * 加载JS插件
*/ */
function loadPlugins(plugin) { function loadPlugins() {
// 初始化本体插件 // 初始化本体插件
global.pluginManager = require('modules/plugin'); global.manager = require('modules/plugin');
pluginManager.init(plugin, root + '/plugins'); manager.init(base.plugin, 'plugins');
// 只有当在正式环境运行的时候才加载 // 只有当在正式环境运行的时候才加载
if (pluginManager.$) { if (manager.$) {
pluginManager.load(); manager.load();
pluginManager.enable(); manager.enable();
} }
} }
@ -66,7 +76,7 @@ function loadPlugins(plugin) {
* 关闭插件Hook * 关闭插件Hook
*/ */
function disablePlugins() { function disablePlugins() {
if (pluginManager.$) { if (manager.$) {
pluginManager.disable(); manager.disable();
} }
} }

View File

@ -2,8 +2,11 @@
* 补丁和方法扩展 * 补丁和方法扩展
*/ */
(function(){
// JSON快捷方法 // JSON快捷方法
Object.prototype.toJson = function(){ return JSON.stringify(this); } Object.prototype.toJson = function(){ return JSON.stringify(this); }
// YAML快速生成 // YAML快速生成
Object.prototype.toYaml = function(){ return require('modules/yaml').safeDump(this); } var yaml = require('modules/yaml');
Object.prototype.toYaml = function(){ return yaml.safeDump(this); }
})();

View File

@ -6,7 +6,8 @@
(function (parent) { (function (parent) {
'use strict'; 'use strict';
var File = Java.type("java.io.File"); var File = Java.type("java.io.File");
var paths = [parent, '', parent + '/core', parent + '/modules']; var separatorChar = File.separatorChar;
var paths = [parent, '', parent + separatorChar + 'core', parent + separatorChar + 'modules'];
/** /**
* 解析模块名称为文件 * 解析模块名称为文件
@ -137,7 +138,7 @@
} }
function _cacheFile(file) { function _cacheFile(file) {
return cacheDir + "/" + file.name; return cacheDir + separatorChar + file.name;
} }
/** /**
@ -176,7 +177,7 @@
}; };
} }
var cacheDir = parent + "/runtime"; var cacheDir = parent + separatorChar + "runtime";
// 等于 undefined 说明 parent 是一个字符串 需要转成File // 等于 undefined 说明 parent 是一个字符串 需要转成File
// 可能有更加准确的方案 // 可能有更加准确的方案

View File

@ -15,15 +15,15 @@ var permission = require('./permission');
* 载入插件 * 载入插件
* @param path * @param path
*/ */
function loadPlugins(path) { function loadPlugins(dir) {
var plugin = fs.file(path); var plugin = fs.file(root, dir);
if (!plugin) { if (!plugin) {
log.i("首次加载 创建文件夹 %s ...", path); log.i("首次加载 创建文件夹 %s ...", plugin);
} else { } else {
log.i("开始扫描 %s 下的插件 ...", path); log.i("开始扫描 %s 下的插件 ...", plugin);
createUpdate(path); createUpdate(plugin);
var files = []; var files = [];
fs.list(path).forEach(function (file) { fs.list(plugin).forEach(function (file) {
files.push(file.toFile()); files.push(file.toFile());
}); });
loadZipPlugins(files); loadZipPlugins(files);