feat: 完善MiaoChat的Bukkit版本

This commit is contained in:
coding
2018-05-14 16:42:55 +00:00
parent 423c7cc844
commit 3d3bf20acd

View File

@ -23,6 +23,16 @@ var description = {
description: 'MiaoChat登录命令' description: 'MiaoChat登录命令'
} }
}, },
permissions: {
'MiaoChat.default': {
default: true,
description: '默认权限 赋予玩家'
},
'MiaoChat.admin': {
default: false,
description: '管理权限'
}
},
config: { config: {
"Version":"1.8.5", "Version":"1.8.5",
"BungeeCord":true, "BungeeCord":true,
@ -146,22 +156,39 @@ function mchat(sender, command, args) {
} }
function registerEvent() { function registerEvent() {
// event.on(self, 'AsyncPlayerChatEvent', handlerChat); switch (DetectServerType) {
event.on(self, 'MessageChannelEvent.Chat', handlerChat); case ServerType.Bukkit:
event.on(self, 'AsyncPlayerChatEvent', handlerBukkitChat);
break;
case ServerType.Sponge:
event.on(self, 'MessageChannelEvent.Chat', handlerSpongeChat);
break;
}
} }
var DuplicateChar = '§卐'; var DuplicateChar = '§卐';
function handlerChat(event) { function handlerBukkitChat(event) {
sendChat(event.player, event.message, function() { event.setCancelled(true); });
}
function handlerSpongeChat(event) {
var player = event.getCause().first(org.spongepowered.api.entity.living.player.Player.class).orElse(null); var player = event.getCause().first(org.spongepowered.api.entity.living.player.Player.class).orElse(null);
if (player == null) { return; } if (player == null) { return; }
var plain = event.getRawMessage().toPlain(); var plain = event.getRawMessage().toPlain();
if (plain.startsWith(DuplicateChar)) { if (plain.startsWith(DuplicateChar)) {
return; return;
} }
sendChat(player, plain, function() { event.setMessageCancelled(true) });
}
function sendChat(player, plain, callback) {
var chat_format = getChatFormat(player); var chat_format = getChatFormat(player);
if (!chat_format) { return; } if (!chat_format) {
event.setMessageCancelled(true); console.debug('未获得用户', player.name, '的 ChatRule 跳过执行...')
return;
}
callback();
var tr = new Tellraw().then(DuplicateChar); var tr = new Tellraw().then(DuplicateChar);
chat_format.format_list.forEach(function setStyle(format) { chat_format.format_list.forEach(function setStyle(format) {
var style = style_formats[format]; var style = style_formats[format];