feat: Core Framework Optimization
This commit is contained in:
parent
2013b3b07c
commit
478bff9599
@ -126,7 +126,7 @@ function beforeLoadHook(origin) {
|
||||
function afterLoadHook(plugin) {
|
||||
// plugin.event.on = event.on.bind(plugin);
|
||||
// 给 console 添加插件名称
|
||||
plugin.console.name = plugin.description.name;
|
||||
plugin.console.name = plugin.description.prefix || plugin.description.name;
|
||||
// 赋值 self
|
||||
Object.assign(plugin.self, plugin);
|
||||
}
|
||||
|
@ -43,6 +43,7 @@ var global = this;
|
||||
throw Error("Error class loader: " + classLoader.class.name + " Please contact the author MiaoWoo!");
|
||||
} else {
|
||||
log.info("Class loader compatible: " + classLoader.class.name);
|
||||
log.info("Parent class loader: " + classLoader.parent.class.name);
|
||||
}
|
||||
return classLoader;
|
||||
}
|
||||
|
@ -38,36 +38,32 @@
|
||||
this.log(i, '=>', obj[i])
|
||||
}
|
||||
};
|
||||
this.ex = function(message, ex) {
|
||||
switch (toString.call(message)) {
|
||||
case "[object String]":
|
||||
message = message + ' ' //message = 'xxxx' ex =Error
|
||||
break
|
||||
case "[object Error]":
|
||||
ex = message // message = Error ex=null
|
||||
message = ''
|
||||
break
|
||||
}
|
||||
this.console('§4' + message + ex)
|
||||
this.ex = function(ex) {
|
||||
this.stack(ex).forEach(function(line) {
|
||||
this.console(line)
|
||||
}.bind(this))
|
||||
};
|
||||
this.stack = function(ex) {
|
||||
var track = ex ? ex.getStackTrace() : new Error().getStackTrace();
|
||||
// var exType = toString.call(ex)
|
||||
// if (exType !== "[object Error]") {
|
||||
// console.console('§6[WARN] Unknown Type', exType, ex)
|
||||
// ex.printStackTrace();
|
||||
// return []
|
||||
// }
|
||||
var stack = ex.getStackTrace();
|
||||
var cache = ['§4' + ex];
|
||||
if (track.class) {
|
||||
track = Arrays.asList(track)
|
||||
if (stack.class) {
|
||||
stack = Arrays.asList(stack)
|
||||
}
|
||||
track.forEach(function(stack) {
|
||||
if (stack.className.startsWith('<')) {
|
||||
var fileName = stack.fileName
|
||||
stack.forEach(function(trace) {
|
||||
if (trace.className.startsWith('<')) {
|
||||
var fileName = trace.fileName
|
||||
fileName = fileName.indexOf('runtime') > -1 ? fileName.split('runtime')[1] : fileName;
|
||||
cache.push(' §e->§c %s => §4%s:%s'.format(fileName, stack.methodName, stack.lineNumber))
|
||||
cache.push(' §e->§c %s => §4%s:%s'.format(fileName, trace.methodName, trace.lineNumber))
|
||||
} else {// %s.%s(§4%s:%s§c)
|
||||
var className = stack.className
|
||||
var className = trace.className
|
||||
className = className.startsWith('jdk.nashorn.internal.scripts') ? className.substr(className.lastIndexOf('$') + 1) : className
|
||||
cache.push(' §e->§c %s.%s(§4%s:%s§c)'.format(className, stack.methodName, stack.fileName, stack.lineNumber));
|
||||
cache.push(' §e->§c %s.%s(§4%s:%s§c)'.format(className, trace.methodName, trace.fileName, trace.lineNumber));
|
||||
}
|
||||
});
|
||||
return cache;
|
||||
|
@ -1,14 +1,15 @@
|
||||
/**
|
||||
* 补丁和方法扩展
|
||||
*/
|
||||
(function () {
|
||||
(function() {
|
||||
// noinspection JSUnresolvedVariable
|
||||
if (!Array.prototype.copyPartialMatches) {
|
||||
Object.defineProperty(Array.prototype, "copyPartialMatches", {
|
||||
enumerable: false,
|
||||
value: function (token, array) {
|
||||
this.forEach(function (e) {
|
||||
if (e.toLowerCase().startsWith(token.toLowerCase())) {
|
||||
value: function(token, array) {
|
||||
if (!token) { return this }
|
||||
this.forEach(function(e) {
|
||||
if (typeof e === "string" && e.toLowerCase().startsWith(token.toLowerCase())) {
|
||||
array.push(e)
|
||||
}
|
||||
});
|
||||
|
@ -13,7 +13,7 @@ function init() {
|
||||
nmsChatSerializerClass = bukkit.nmsCls(bukkit.nmsVersion.split("_")[1] > 7 ? "IChatBaseComponent$ChatSerializer" : "ChatSerializer");
|
||||
packetTypeClass = bukkit.nmsCls("PacketPlayOutChat");
|
||||
var packetTypeConstructor;
|
||||
Java.from(packetTypeClass.class.constructors).forEach(function (c) {
|
||||
Java.from(packetTypeClass.class.constructors).forEach(function(c) {
|
||||
if (c.parameterTypes.length === 2) {
|
||||
packetTypeConstructor = c
|
||||
}
|
||||
|
@ -17,11 +17,26 @@ var Material = Java.type('org.bukkit.Material');
|
||||
*/
|
||||
item.create = function() {
|
||||
var idOrType = arguments[0];
|
||||
if (isNaN(Number(idOrType))) {
|
||||
idOrType = Material[idOrType];
|
||||
var argType = toString.call(idOrType)
|
||||
switch (argType) {
|
||||
case "[object Number]":
|
||||
break;
|
||||
case "[object String]":
|
||||
idOrType = Material[idOrType];
|
||||
break;
|
||||
case "[object Array]":
|
||||
idOrType.forEach(function(type) {
|
||||
var temp = Material[idOrType];
|
||||
if (temp) {
|
||||
idOrType = temp;
|
||||
return;
|
||||
}
|
||||
})
|
||||
default:
|
||||
throw Error("Unsupport argument type " + argType + " value " + idOrType)
|
||||
}
|
||||
if (!idOrType) {
|
||||
throw Error('无效的物品ID或枚举!' + arguments[0] + ' => ' + idOrType)
|
||||
throw Error('无效的物品ID或枚举 ' + arguments[0] + ' => ' + idOrType)
|
||||
}
|
||||
switch (arguments.length) {
|
||||
case 1:
|
||||
|
@ -16,7 +16,8 @@ function create(func) {
|
||||
try {
|
||||
func();
|
||||
} catch (ex) {
|
||||
console.ex('§4插件执行任务时发生错误', ex);
|
||||
console.console('§4插件执行任务时发生错误', ex)
|
||||
console.ex(ex);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
@ -13,11 +13,12 @@ var Task = Java.type("org.spongepowered.api.scheduler.Task");
|
||||
*/
|
||||
function create(func) {
|
||||
if (toString.call(func) !== "[object Function]") { throw TypeError('第一个参数 Task 必须为 function !'); };
|
||||
return Task.builder().execute(new Consumer(function () {
|
||||
return Task.builder().execute(new Consumer(function() {
|
||||
try {
|
||||
func();
|
||||
} catch (ex) {
|
||||
console.ex('§4插件执行任务时发生错误', ex);
|
||||
console.console('§4插件执行任务时发生错误', ex)
|
||||
console.ex(ex);
|
||||
}
|
||||
}));
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user