From fe615564ce770fc61b94b894720206c5a31fbf38 Mon Sep 17 00:00:00 2001 From: coding Date: Thu, 28 Dec 2017 08:29:10 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=B0=83=E6=95=B4API=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=E5=B0=81=E8=A3=85=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/api/msp.js | 4 +- src/main/resources/api/plugin.js | 54 +++++++++++++++----------- src/main/resources/api/wrapper.js | 5 +++ src/main/resources/bios.js | 14 +++---- src/main/resources/core/console.js | 9 ++++- src/main/resources/core/fs.js | 62 ++++++++++++++++++------------ 6 files changed, 87 insertions(+), 61 deletions(-) create mode 100644 src/main/resources/api/wrapper.js diff --git a/src/main/resources/api/msp.js b/src/main/resources/api/msp.js index 5038439..842d504 100644 --- a/src/main/resources/api/msp.js +++ b/src/main/resources/api/msp.js @@ -1,9 +1,9 @@ /*global Java, base, module, exports, require*/ function impl(name) { - return require('../internal/' + DetectServerType + '/' + name); + return require('../internal/' + DetectServerType + '/' + name, {warnNotFound: false}); } -module.exports = { +exports = module.exports = { command: impl('command'), event: impl('event'), permission: impl('permission'), diff --git a/src/main/resources/api/plugin.js b/src/main/resources/api/plugin.js index 53393bd..ab02550 100644 --- a/src/main/resources/api/plugin.js +++ b/src/main/resources/api/plugin.js @@ -118,9 +118,7 @@ function afterLoadHook(plugin) { // 给 console 添加插件名称 plugin.console.name = plugin.description.name; // 赋值 self - for (var i in plugin) { - plugin.self[i] = plugin[i]; - } + Object.assign(plugin.self, plugin); } /** @@ -202,16 +200,15 @@ function initPluginConfig(plugin) { } } -function runAndCatch(jsp, exec, ext) { +function runAndCatch(jsp, name, ext) { + var exec = jsp[name]; if (exec) { try { // 绑定方法的this到插件自身 exec.bind(jsp)(); - if (ext) { - ext(); - } + if (ext) ext(); } catch (ex) { - console.console('§6插件 §b%s §6执行 §d%s §6方法时发生错误 §4%s'.format(jsp.description.name, exec.name, ex.message)); + console.console('§6插件 §b%s §6执行 §d%s §6方法时发生错误 §4%s'.format(jsp.description.name, name, ex.message)); console.ex(ex); } } @@ -234,9 +231,7 @@ function checkAndGet(args) { var plugins = []; -exports.$ = server.plugin.self; -exports.plugins = plugins; -exports.init = function (path) { +function init(path) { var plugin = exports.$ if (plugin !== null) { // 如果过plugin不等于null 则代表是正式环境 @@ -244,23 +239,36 @@ exports.init = function (path) { } loadPlugins(path); }; -exports.load = function () { - checkAndGet(arguments).forEach(function (p) runAndCatch(p, p.load)); + +function load() { + checkAndGet(arguments).forEach(function (p) runAndCatch(p, 'init')); }; -exports.enable = function () { - checkAndGet(arguments).forEach(function (p) runAndCatch(p, p.enable)); + +function enable() { + checkAndGet(arguments).forEach(function (p) runAndCatch(p, 'enable')); }; -exports.disable = function () { - checkAndGet(arguments).forEach(function (p) runAndCatch(p, p.disable, function () { + +function disable() { + checkAndGet(arguments).forEach(function (p) runAndCatch(p, 'disable', function () { event.disable(p); - // task.cancel(); })); }; -exports.reload = function () { + +function reload() { checkAndGet(arguments).forEach(function (p) { - exports.disable(p); + disable(p); p = loadPlugin(p.__FILE__); - exports.load(p); - exports.enable(p); + load(p); + enable(p); }); -}; \ No newline at end of file +}; + +exports = module.exports = { + $: server.plugin.self, + plugins: plugins, + init: init, + load: load, + enable: enable, + disable: disable, + reload: reload +} diff --git a/src/main/resources/api/wrapper.js b/src/main/resources/api/wrapper.js new file mode 100644 index 0000000..129f8ac --- /dev/null +++ b/src/main/resources/api/wrapper.js @@ -0,0 +1,5 @@ +/*global Java, base, module, exports, require*/ +var player = require('./player'); +module.exports = { + player: player.$ +} \ No newline at end of file diff --git a/src/main/resources/bios.js b/src/main/resources/bios.js index 8dbafe5..83dad97 100644 --- a/src/main/resources/bios.js +++ b/src/main/resources/bios.js @@ -8,8 +8,6 @@ var global = this; */ (function () { var loader; - var Files = Java.type("java.nio.file.Files"); - var Paths = Java.type("java.nio.file.Paths"); boot = function (root, logger) { log = logger; // 开发环境下初始化 @@ -18,7 +16,7 @@ var global = this; logger.info('载入自定义 BIOS 文件 ' + __FILE__); global.debug = true; } - if (Files.exists(Paths.get(root, "debug"))) { + if (java.nio.file.Files.exists(java.nio.file.Paths.get(root, "debug"))) { logger.info('已开启调试模式!'); global.debug = true; } @@ -49,11 +47,9 @@ var global = this; } function release(root, regex, replace) { - var StandardCopyOption = Java.type("java.nio.file.StandardCopyOption"); - var upath = pluginYml.getFile().substring(pluginYml.getFile().indexOf("/") + 1); var jarPath = java.net.URLDecoder.decode(upath.substring(0, upath.indexOf('!'))); - if (!Files.exists(Paths.get(jarPath))) { + if (!java.nio.file.Files.exists(java.nio.file.Paths.get(jarPath))) { jarPath = "/" + jarPath; } var jar = new java.util.jar.JarFile(jarPath); @@ -62,11 +58,11 @@ var global = this; try { if (!entry.isDirectory()) { if (r.test(entry.name)) { - var path = Paths.get(root, entry.name); + var path = java.nio.file.Paths.get(root, entry.name); var parentFile = path.toFile().parentFile; if (!parentFile.exists()) { parentFile.mkdirs(); } - if (!Files.exists(path) || replace) { - Files.copy(loader.getResourceAsStream(entry.name), path, StandardCopyOption['REPLACE_EXISTING']); + if (!java.nio.file.Files.exists(path) || replace) { + java.nio.file.Files.copy(loader.getResourceAsStream(entry.name), path, java.nio.file.StandardCopyOption['REPLACE_EXISTING']); } } } diff --git a/src/main/resources/core/console.js b/src/main/resources/core/console.js index a49617e..8735882 100644 --- a/src/main/resources/core/console.js +++ b/src/main/resources/core/console.js @@ -38,8 +38,13 @@ console.log(i, '=>', obj[i]) } } - console.ex = function (ex) { - this.console('§4' + ex); + console.ex = function (message, ex) { + if (!ex) { + this.console('§4' + message); + ex = message; + } else { + this.console('§4' + message + ' ' + ex); + } var track = ex.getStackTrace(); if (track.class) { track = Arrays.asList(track) diff --git a/src/main/resources/core/fs.js b/src/main/resources/core/fs.js index 11aa4fb..eea05e4 100644 --- a/src/main/resources/core/fs.js +++ b/src/main/resources/core/fs.js @@ -1,7 +1,6 @@ 'use strict'; /*global Java, base, module, exports, require, __FILE__*/ -var String = Java.type("java.lang.String"); var File = Java.type("java.io.File"); var Files = Java.type("java.nio.file.Files"); var separatorChar = File.separatorChar; @@ -10,7 +9,7 @@ var StandardCopyOption = Java.type("java.nio.file.StandardCopyOption"); /** * 用文件分割符合并路径 */ -exports.concat = function () { +function concat() { return Array.prototype.join.call(arguments, separatorChar); }; /** @@ -19,13 +18,13 @@ exports.concat = function () { * @constructor(dir,file) * @returns {*} */ -exports.file = function () { +function file() { if (!arguments[0]) { console.warn("文件名称不得为 undefined 或者 null !"); } switch (arguments.length) { case 1: - if (exports.canonical(arguments[0])) { + if (path(arguments[0])) { return arguments[0]; } return new File(arguments[0]); @@ -37,7 +36,7 @@ exports.file = function () { * 创建目录 * @param file */ -exports.mkdirs = function (file) { +function mkdirs(file) { // noinspection JSUnresolvedVariable file.parentFile.mkdirs(); }; @@ -45,11 +44,11 @@ exports.mkdirs = function (file) { * 创建文件 * @param file */ -exports.create = function (file) { - file = exports.file(file); - if (!file.exists()) { - exports.mkdirs(file); - file.createNewFile(); +function create(file) { + f = file(file); + if (!f.exists()) { + mkdirs(f); + f.createNewFile(); } }; /** @@ -57,7 +56,7 @@ exports.create = function (file) { * @param file * @returns {*} */ -exports.path = exports.canonical = function (file) { +function path(file) { // noinspection JSUnresolvedVariable return file.canonicalPath; }; @@ -67,21 +66,21 @@ exports.path = exports.canonical = function (file) { * @param target 目标文件 * @param override 是否覆盖 */ -exports.copy = function (inputStream, target, override) { +function copy(inputStream, target, override) { Files.copy(inputStream, target.toPath(), StandardCopyOption[override ? 'REPLACE_EXISTING' : 'ATOMIC_MOVE']); }; /** * 读取文件 * @param file 文件路径 */ -exports.read = function (file) { - file = exports.file(file); - if (!file.exists()) { - console.warn('读取文件', file, '错误 文件不存在!'); +function read(file) { + f = file(file); + if (!f.exists()) { + console.warn('读取文件', f, '错误 文件不存在!'); return; } // noinspection JSPrimitiveTypeWrapperUsage - return new String(Files.readAllBytes(file.toPath()), "UTF-8"); + return new java.lang.String(Files.readAllBytes(f.toPath()), "UTF-8"); }; /** * 保存内容文件 @@ -89,7 +88,7 @@ exports.read = function (file) { * @param content 内容 * @param override 是否覆盖 */ -exports.save = function (path, content, override) { +function save(path, content, override) { Files.write(new File(path).toPath(), content.getBytes("UTF-8"), override ? StandardCopyOption['REPLACE_EXISTING'] : StandardCopyOption['ATOMIC_MOVE']); @@ -98,12 +97,12 @@ exports.save = function (path, content, override) { * 列出目录文件 * @param path */ -exports.list = function (path) { - var dir = exports.file(path); +function list(path) { + var dir = file(path); if (dir.isDirectory()) { return Files.list(dir.toPath()); } - console.warn('路径', path, '不是一个目录 返回空数组!'); + console.debug('路径', path, '不是一个目录 返回空数组!'); return []; }; /** @@ -112,8 +111,21 @@ exports.list = function (path) { * @param des 目标目录 * @param override 是否覆盖 */ -exports.move = function (src, des, override) { - Files.move(exports.file(src).toPath(), - exports.file(des).toPath(), +function move(src, des, override) { + Files.move(file(src).toPath(), file(des).toPath(), override ? StandardCopyOption['REPLACE_EXISTING'] : StandardCopyOption['ATOMIC_MOVE']) -}; \ No newline at end of file +}; + +exports = module.exports = { + canonical: path, + concat: concat, + create: create, + mkdirs: mkdirs, + file: file, + path: path, + copy: copy, + read: read, + save: save, + list: list, + move: move +} \ No newline at end of file