fix: 修复路径导致的插件加载失败
This commit is contained in:
		
							
								
								
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							@@ -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>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -2,8 +2,11 @@
 | 
				
			|||||||
 * 补丁和方法扩展
 | 
					 * 补丁和方法扩展
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// JSON快捷方法
 | 
					(function(){
 | 
				
			||||||
Object.prototype.toJson = function(){ return JSON.stringify(this); }
 | 
					    // JSON快捷方法
 | 
				
			||||||
 | 
					    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); }
 | 
				
			||||||
 | 
					})();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
    // 可能有更加准确的方案
 | 
					    // 可能有更加准确的方案
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user