feat: 调整Console初始化逻辑
This commit is contained in:
@ -5,109 +5,56 @@
|
|||||||
(function (global) {
|
(function (global) {
|
||||||
var Arrays = Java.type('java.util.Arrays');
|
var Arrays = Java.type('java.util.Arrays');
|
||||||
var Level = Java.type('java.util.logging.Level');
|
var Level = Java.type('java.util.logging.Level');
|
||||||
var Console = {
|
global.ConsoleDefault = function ConsoleDefault(name) {
|
||||||
createNew: function (name) {
|
Object.defineProperty(this, 'name', {
|
||||||
var console = {};
|
get: function () {
|
||||||
Object.defineProperty(console, 'name', {
|
return this._name;
|
||||||
get: function () {
|
}.bind(this),
|
||||||
return this._name;
|
set: function (name) {
|
||||||
}.bind(console),
|
this._name = name ? '[' + name + '] ' : '';
|
||||||
set: function (name) {
|
this.prefix = name ? '§6[§cMS§6][§b' + name + '§6]§r ' : '§6[§bMiaoScript§6]§r ';
|
||||||
this._name = name ? '[' + name + '] ' : '';
|
}.bind(this)
|
||||||
this.prefix = name ? '§6[§cMS§6][§b' + name + '§6]§r ' : '§6[§bMiaoScript§6]§r ';
|
});
|
||||||
}.bind(console)
|
this.name = name;
|
||||||
});
|
this.log = this.info = function () {
|
||||||
console.name = name;
|
log.info(this.name + Array.prototype.join.call(arguments, ' '));
|
||||||
console.log = console.info = function () {
|
};
|
||||||
log.info(this.name + Array.prototype.join.call(arguments, ' '));
|
this.warn = function () {
|
||||||
};
|
log.warning(this.name + Array.prototype.join.call(arguments, ' '));
|
||||||
console.warn = function () {
|
};
|
||||||
log.warning(this.name + Array.prototype.join.call(arguments, ' '));
|
this.error = function () {
|
||||||
};
|
log.log(Level.SEVERE, this.name + Array.prototype.join.call(arguments, ' '));
|
||||||
console.error = function () {
|
};
|
||||||
log.log(Level.SEVERE, this.name + Array.prototype.join.call(arguments, ' '));
|
this.debug = function () {
|
||||||
};
|
log.info(this.name + '[DEBUG] ' + Array.prototype.join.call(arguments, ' '));
|
||||||
console.debug = function () {
|
};
|
||||||
log.info(this.name + '[DEBUG] ' + Array.prototype.join.call(arguments, ' '));
|
this.debug = global.debug ? this.debug : global.noop;
|
||||||
};
|
this.sender = this.info;
|
||||||
console.debug = global.debug ? console.debug : global.noop;
|
this.console = this.info;
|
||||||
console.sender = console.info;
|
this.object = function (obj) {
|
||||||
console.console = console.info;
|
for (var i in obj) {
|
||||||
console.object = function (obj) {
|
this.log(i, '=>', obj[i])
|
||||||
for (var i in obj) {
|
|
||||||
console.log(i, '=>', obj[i])
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
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)
|
|
||||||
}
|
|
||||||
track.forEach(function (stack) {
|
|
||||||
if (stack.className.startsWith('<')) {
|
|
||||||
this.console(' §e位于§c', stack.fileName, '=>§c', stack.methodName, '§4行', stack.lineNumber);
|
|
||||||
} else {// %s.%s(§4%s:%s§c)
|
|
||||||
this.console(' §e位于§c', stack.className + '.' + stack.methodName + '(§4' + stack.fileName + ':' + stack.lineNumber + '§c)');
|
|
||||||
}
|
|
||||||
}.bind(this));
|
|
||||||
};
|
|
||||||
return console;
|
|
||||||
}
|
}
|
||||||
};
|
this.ex = function (message, ex) {
|
||||||
var BukkitConsole = {
|
if (!ex) {
|
||||||
createNew: function () {
|
this.console('§4' + message);
|
||||||
var console = Console.createNew();
|
ex = message;
|
||||||
console.sender = function () {
|
} else {
|
||||||
var sender = arguments[0];
|
this.console('§4' + message + ' ' + ex);
|
||||||
if (!(sender instanceof org.bukkit.command.CommandSender)) {
|
}
|
||||||
this.error("第一个参数未实现 org.bukkit.command.CommandSender 无法发送消息!")
|
var track = ex.getStackTrace();
|
||||||
|
if (track.class) {
|
||||||
|
track = Arrays.asList(track)
|
||||||
|
}
|
||||||
|
track.forEach(function (stack) {
|
||||||
|
if (stack.className.startsWith('<')) {
|
||||||
|
this.console(' §e位于§c', stack.fileName, '=>§c', stack.methodName, '§4行', stack.lineNumber);
|
||||||
|
} else {// %s.%s(§4%s:%s§c)
|
||||||
|
this.console(' §e位于§c', stack.className + '.' + stack.methodName + '(§4' + stack.fileName + ':' + stack.lineNumber + '§c)');
|
||||||
}
|
}
|
||||||
var args = Array.prototype.slice.call(arguments, 1);
|
}.bind(this));
|
||||||
sender.sendMessage(console.prefix + args.join(' '));
|
};
|
||||||
};
|
|
||||||
console.console = function () {
|
|
||||||
this.sender(MServer.consoleSender, Array.prototype.join.call(arguments, ' '));
|
|
||||||
};
|
|
||||||
return console;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
var SpongeConsole = {
|
|
||||||
createNew: function () {
|
|
||||||
var console = Console.createNew();
|
|
||||||
console.sender = function () {
|
|
||||||
var Text = Java.type("org.spongepowered.api.text.Text");
|
|
||||||
var sender = arguments[0];
|
|
||||||
if (!(sender instanceof org.spongepowered.api.command.CommandSource)) {
|
|
||||||
this.error("第一个参数未实现 org.spongepowered.api.command.CommandSource 无法发送消息!")
|
|
||||||
}
|
|
||||||
var args = Array.prototype.slice.call(arguments, 1);
|
|
||||||
sender.sendMessage(Text.of(console.prefix + args.join(' ')));
|
|
||||||
};
|
|
||||||
console.console = function () {
|
|
||||||
this.sender(MServer.server.console, Array.prototype.join.call(arguments, ' '));
|
|
||||||
};
|
|
||||||
console.warn = function () {
|
|
||||||
log.warn(this.name + Array.prototype.join.call(arguments, ' '));
|
|
||||||
};
|
|
||||||
return console;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
switch (DetectServerType) {
|
|
||||||
case ServerType.Bukkit:
|
|
||||||
global.Console = BukkitConsole;
|
|
||||||
break;
|
|
||||||
case ServerType.Sponge:
|
|
||||||
global.Console = SpongeConsole;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
global.Console = Console;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
global.console = global.Console.createNew();
|
global.Console = ConsoleDefault;
|
||||||
})(global);
|
})(global);
|
@ -20,3 +20,12 @@ try {
|
|||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
// IGNORE
|
// IGNORE
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 尝试加载特殊的Console类
|
||||||
|
*/
|
||||||
|
try {
|
||||||
|
load(root + '/internal/' + DetectServerType + '/console.js');
|
||||||
|
} catch (ex) {
|
||||||
|
// IGNORE
|
||||||
|
}
|
||||||
|
global.console = new global.Console();
|
17
src/main/resources/internal/bukkit/console.js
Normal file
17
src/main/resources/internal/bukkit/console.js
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
/*global Java, base, module, exports, require, __FILE__*/
|
||||||
|
(function (global) {
|
||||||
|
global.Console = function BukkitConsole() {
|
||||||
|
ConsoleDefault.call(this);
|
||||||
|
this.sender = function () {
|
||||||
|
var sender = arguments[0];
|
||||||
|
if (!(sender instanceof org.bukkit.command.CommandSender)) {
|
||||||
|
this.error("第一个参数未实现 org.bukkit.command.CommandSender 无法发送消息!")
|
||||||
|
}
|
||||||
|
var args = Array.prototype.slice.call(arguments, 1);
|
||||||
|
sender.sendMessage(console.prefix + args.join(' '));
|
||||||
|
};
|
||||||
|
this.console = function () {
|
||||||
|
this.sender(MServer.consoleSender, Array.prototype.join.call(arguments, ' '));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})(global);
|
21
src/main/resources/internal/sponge/console.js
Normal file
21
src/main/resources/internal/sponge/console.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/*global Java, base, module, exports, require, __FILE__*/
|
||||||
|
(function (global) {
|
||||||
|
global.Console = function SpongeConsole() {
|
||||||
|
ConsoleDefault.call(this);
|
||||||
|
this.sender = function () {
|
||||||
|
var Text = Java.type("org.spongepowered.api.text.Text");
|
||||||
|
var sender = arguments[0];
|
||||||
|
if (!(sender instanceof org.spongepowered.api.command.CommandSource)) {
|
||||||
|
this.error("第一个参数未实现 org.spongepowered.api.command.CommandSource 无法发送消息!")
|
||||||
|
}
|
||||||
|
var args = Array.prototype.slice.call(arguments, 1);
|
||||||
|
sender.sendMessage(Text.of(console.prefix + args.join(' ')));
|
||||||
|
};
|
||||||
|
this.console = function () {
|
||||||
|
this.sender(MServer.server.console, Array.prototype.join.call(arguments, ' '));
|
||||||
|
};
|
||||||
|
this.warn = function () {
|
||||||
|
log.warn(this.name + Array.prototype.join.call(arguments, ' '));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})(global);
|
Reference in New Issue
Block a user