diff --git a/class.dict b/class.dict deleted file mode 100644 index 21fec61..0000000 --- a/class.dict +++ /dev/null @@ -1,65 +0,0 @@ -IIIIiI -IIiIiI -iiIIiI -Iiiiii -IIIIIi -IiIiII -iiIIIi -iIIIii -iIiiIi -iiiIiI -IiiIii -iIiiiI -iiiIIi -IIiIII -IIIIii -IIIiii -iiiiII -iIIiII -IIiiII -iiIIii -IiiIII -iIiIII -IiIIii -iiIiiI -iIiiII -IiiIiI -iiiIII -IIiIIi -iIiIiI -iiIiii -IiIiii -IiIIiI -IiiIIi -IiIIIi -IIiiIi -iIIiIi -iIIIII -IIIiIi -iiiiiI -iIiIIi -IIIiiI -iiiiIi -iiIiIi -IIiiiI -IiiiII -iIIiii -iIiIii -IiIiiI -IIiIii -IiIIII -IIIIII -iIIIIi -IIIiII -iiiiii -IiiiiI -IiIiIi -iiiIii -iIIIiI -iIIiiI -iIiiii -iiIiII -IIiiii -iiIIII -IiiiIi -llllll \ No newline at end of file diff --git a/obf.dict b/obf.dict index dcde616..cfd1dec 100644 --- a/obf.dict +++ b/obf.dict @@ -1,24 +1,650 @@ -if -try -for -int -new -true -null -this -else -void -enum -final -false -class -catch -import -double -public -static -boolean -package -finally -private -protected \ No newline at end of file +ʻ +ʼ +ʽ +ʾ +ʿ +ˆ +ˈ +ˉ +ˊ +ˋ +ˎ +ˏ +ˑ +י +ـ +ٴ +ᐧ +ᴵ +ᵎ +ᵔ +ᵢ +ⁱ +ﹳ +ﹶ +゙ +゙゙ +ᐧᐧ +ᴵᴵ +ʻʻ +ʽʽ +ʼʼ +ʿʿ +ʾʾ +ــ +ˆˆ +ˉˉ +ˈˈ +ˋˋ +ˊˊ +ˏˏ +ˎˎ +ˑˑ +ᵔᵔ +יי +ᵎᵎ +ᵢᵢ +ⁱⁱ +ﹳﹳ +ٴٴ +ﹶﹶ +ʻʼ +ʻʽ +ʻʾ +ʻʿ +ʻˆ +ʻˈ +ʻˉ +ʻˊ +ʻˋ +ʻˎ +ʻˏ +ʻˑ +ʻי +ʻـ +ʻٴ +ʻᐧ +ʻᴵ +ʻᵎ +ʻᵔ +ʻᵢ +ʻⁱ +ʻﹳ +ʻﹶ +ʻ゙ +ʼʻ +ʼʽ +ʼʾ +ʼʿ +ʼˆ +ʼˈ +ʼˉ +ʼˊ +ʼˋ +ʼˎ +ʼˏ +ʼˑ +ʼי +ʼـ +ʼٴ +ʼᐧ +ʼᴵ +ʼᵎ +ʼᵔ +ʼᵢ +ʼⁱ +ʼﹳ +ʼﹶ +ʼ゙ +ʽʻ +ʽʼ +ʽʾ +ʽʿ +ʽˆ +ʽˈ +ʽˉ +ʽˊ +ʽˋ +ʽˎ +ʽˏ +ʽˑ +ʽי +ʽـ +ʽٴ +ʽᐧ +ʽᴵ +ʽᵎ +ʽᵔ +ʽᵢ +ʽⁱ +ʽﹳ +ʽﹶ +ʽ゙ +ʾʻ +ʾʼ +ʾʽ +ʾʿ +ʾˆ +ʾˈ +ʾˉ +ʾˊ +ʾˋ +ʾˎ +ʾˏ +ʾˑ +ʾי +ʾـ +ʾٴ +ʾᐧ +ʾᴵ +ʾᵎ +ʾᵔ +ʾᵢ +ʾⁱ +ʾﹳ +ʾﹶ +ʾ゙ +ʿʻ +ʿʼ +ʿʽ +ʿʾ +ʿˆ +ʿˈ +ʿˉ +ʿˊ +ʿˋ +ʿˎ +ʿˏ +ʿˑ +ʿי +ʿـ +ʿٴ +ʿᐧ +ʿᴵ +ʿᵎ +ʿᵔ +ʿᵢ +ʿⁱ +ʿﹳ +ʿﹶ +ʿ゙ +ˆʻ +ˆʼ +ˆʽ +ˆʾ +ˆʿ +ˆˈ +ˆˉ +ˆˊ +ˆˋ +ˆˎ +ˆˏ +ˆˑ +ˆי +ˆـ +ˆٴ +ˆᐧ +ˆᴵ +ˆᵎ +ˆᵔ +ˆᵢ +ˆⁱ +ˆﹳ +ˆﹶ +ˆ゙ +ˈʻ +ˈʼ +ˈʽ +ˈʾ +ˈʿ +ˈˆ +ˈˉ +ˈˊ +ˈˋ +ˈˎ +ˈˏ +ˈˑ +ˈי +ˈـ +ˈٴ +ˈᐧ +ˈᴵ +ˈᵎ +ˈᵔ +ˈᵢ +ˈⁱ +ˈﹳ +ˈﹶ +ˈ゙ +ˉʻ +ˉʼ +ˉʽ +ˉʾ +ˉʿ +ˉˆ +ˉˈ +ˉˊ +ˉˋ +ˉˎ +ˉˏ +ˉˑ +ˉי +ˉـ +ˉٴ +ˉᐧ +ˉᴵ +ˉᵎ +ˉᵔ +ˉᵢ +ˉⁱ +ˉﹳ +ˉﹶ +ˉ゙ +ˊʻ +ˊʼ +ˊʽ +ˊʾ +ˊʿ +ˊˆ +ˊˈ +ˊˉ +ˊˋ +ˊˎ +ˊˏ +ˊˑ +ˊי +ˊـ +ˊٴ +ˊᐧ +ˊᴵ +ˊᵎ +ˊᵔ +ˊᵢ +ˊⁱ +ˊﹳ +ˊﹶ +ˊ゙ +ˋʻ +ˋʼ +ˋʽ +ˋʾ +ˋʿ +ˋˆ +ˋˈ +ˋˉ +ˋˊ +ˋˎ +ˋˏ +ˋˑ +ˋי +ˋـ +ˋٴ +ˋᐧ +ˋᴵ +ˋᵎ +ˋᵔ +ˋᵢ +ˋⁱ +ˋﹳ +ˋﹶ +ˋ゙ +ˎʻ +ˎʼ +ˎʽ +ˎʾ +ˎʿ +ˎˆ +ˎˈ +ˎˉ +ˎˊ +ˎˋ +ˎˏ +ˎˑ +ˎי +ˎـ +ˎٴ +ˎᐧ +ˎᴵ +ˎᵎ +ˎᵔ +ˎᵢ +ˎⁱ +ˎﹳ +ˎﹶ +ˎ゙ +ˏʻ +ˏʼ +ˏʽ +ˏʾ +ˏʿ +ˏˆ +ˏˈ +ˏˉ +ˏˊ +ˏˋ +ˏˎ +ˏˑ +ˏי +ˏـ +ˏٴ +ˏᐧ +ˏᴵ +ˏᵎ +ˏᵔ +ˏᵢ +ˏⁱ +ˏﹳ +ˏﹶ +ˏ゙ +ˑʻ +ˑʼ +ˑʽ +ˑʾ +ˑʿ +ˑˆ +ˑˈ +ˑˉ +ˑˊ +ˑˋ +ˑˎ +ˑˏ +ˑי +ˑـ +ˑٴ +ˑᐧ +ˑᴵ +ˑᵎ +ˑᵔ +ˑᵢ +ˑⁱ +ˑﹳ +ˑﹶ +ˑ゙ +יʻ +יʼ +יʽ +יʾ +יʿ +יˆ +יˈ +יˉ +יˊ +יˋ +יˎ +יˏ +יˑ +יـ +יٴ +יᐧ +יᴵ +יᵎ +יᵔ +יᵢ +יⁱ +יﹳ +יﹶ +י゙ +ـʻ +ـʼ +ـʽ +ـʾ +ـʿ +ـˆ +ـˈ +ـˉ +ـˊ +ـˋ +ـˎ +ـˏ +ـˑ +ـי +ـٴ +ـᐧ +ـᴵ +ـᵎ +ـᵔ +ـᵢ +ـⁱ +ـﹳ +ـﹶ +ـ゙ +ٴʻ +ٴʼ +ٴʽ +ٴʾ +ٴʿ +ٴˆ +ٴˈ +ٴˉ +ٴˊ +ٴˋ +ٴˎ +ٴˏ +ٴˑ +ٴי +ٴـ +ٴᐧ +ٴᴵ +ٴᵎ +ٴᵔ +ٴᵢ +ٴⁱ +ٴﹳ +ٴﹶ +ٴ゙ +ᐧʻ +ᐧʼ +ᐧʽ +ᐧʾ +ᐧʿ +ᐧˆ +ᐧˈ +ᐧˉ +ᐧˊ +ᐧˋ +ᐧˎ +ᐧˏ +ᐧˑ +ᐧי +ᐧـ +ᐧٴ +ᐧᴵ +ᐧᵎ +ᐧᵔ +ᐧᵢ +ᐧⁱ +ᐧﹳ +ᐧﹶ +ᐧ゙ +ᴵʻ +ᴵʼ +ᴵʽ +ᴵʾ +ᴵʿ +ᴵˆ +ᴵˈ +ᴵˉ +ᴵˊ +ᴵˋ +ᴵˎ +ᴵˏ +ᴵˑ +ᴵי +ᴵـ +ᴵٴ +ᴵᐧ +ᴵᵎ +ᴵᵔ +ᴵᵢ +ᴵⁱ +ᴵﹳ +ᴵﹶ +ᴵ゙ +ᵎʻ +ᵎʼ +ᵎʽ +ᵎʾ +ᵎʿ +ᵎˆ +ᵎˈ +ᵎˉ +ᵎˊ +ᵎˋ +ᵎˎ +ᵎˏ +ᵎˑ +ᵎי +ᵎـ +ᵎٴ +ᵎᐧ +ᵎᴵ +ᵎᵔ +ᵎᵢ +ᵎⁱ +ᵎﹳ +ᵎﹶ +ᵎ゙ +ᵔʻ +ᵔʼ +ᵔʽ +ᵔʾ +ᵔʿ +ᵔˆ +ᵔˈ +ᵔˉ +ᵔˊ +ᵔˋ +ᵔˎ +ᵔˏ +ᵔˑ +ᵔי +ᵔـ +ᵔٴ +ᵔᐧ +ᵔᴵ +ᵔᵎ +ᵔᵢ +ᵔⁱ +ᵔﹳ +ᵔﹶ +ᵔ゙ +ᵢʻ +ᵢʼ +ᵢʽ +ᵢʾ +ᵢʿ +ᵢˆ +ᵢˈ +ᵢˉ +ᵢˊ +ᵢˋ +ᵢˎ +ᵢˏ +ᵢˑ +ᵢי +ᵢـ +ᵢٴ +ᵢᐧ +ᵢᴵ +ᵢᵎ +ᵢᵔ +ᵢⁱ +ᵢﹳ +ᵢﹶ +ᵢ゙ +ⁱʻ +ⁱʼ +ⁱʽ +ⁱʾ +ⁱʿ +ⁱˆ +ⁱˈ +ⁱˉ +ⁱˊ +ⁱˋ +ⁱˎ +ⁱˏ +ⁱˑ +ⁱי +ⁱـ +ⁱٴ +ⁱᐧ +ⁱᴵ +ⁱᵎ +ⁱᵔ +ⁱᵢ +ⁱﹳ +ⁱﹶ +ⁱ゙ +ﹳʻ +ﹳʼ +ﹳʽ +ﹳʾ +ﹳʿ +ﹳˆ +ﹳˈ +ﹳˉ +ﹳˊ +ﹳˋ +ﹳˎ +ﹳˏ +ﹳˑ +ﹳי +ﹳـ +ﹳٴ +ﹳᐧ +ﹳᴵ +ﹳᵎ +ﹳᵔ +ﹳᵢ +ﹳⁱ +ﹳﹶ +ﹳ゙ +ﹶʻ +ﹶʼ +ﹶʽ +ﹶʾ +ﹶʿ +ﹶˆ +ﹶˈ +ﹶˉ +ﹶˊ +ﹶˋ +ﹶˎ +ﹶˏ +ﹶˑ +ﹶי +ﹶـ +ﹶٴ +ﹶᐧ +ﹶᴵ +ﹶᵎ +ﹶᵔ +ﹶᵢ +ﹶⁱ +ﹶﹳ +ﹶ゙ +゙ʻ +゙ʼ +゙ʽ +゙ʾ +゙ʿ +゙ˆ +゙ˈ +゙ˉ +゙ˊ +゙ˋ +゙ˎ +゙ˏ +゙ˑ +゙י +゙ـ +゙ٴ +゙ᐧ +゙ᴵ +゙ᵎ +゙ᵔ +゙ᵢ +゙ⁱ +゙ﹳ +゙ﹶ \ No newline at end of file diff --git a/pom.xml b/pom.xml index 3d1a15c..912f471 100644 --- a/pom.xml +++ b/pom.xml @@ -65,7 +65,6 @@ - diff --git a/proguard.conf b/proguard.conf index b6e74b0..ff08c3b 100644 --- a/proguard.conf +++ b/proguard.conf @@ -10,12 +10,15 @@ # -----启用混淆字典----- -obfuscationdictionary obf.dict --classobfuscationdictionary class.dict --packageobfuscationdictionary class.dict +-classobfuscationdictionary obf.dict +-packageobfuscationdictionary obf.dict # -----保留所有属性 -keepattributes ** +# -----替换包名 +-repackageclasses \ʼ.ʽ.ʾ + # -----公共数据不混淆----- -keep class cn.citycraft.CommonData.** {*;} @@ -26,31 +29,26 @@ -keepclassmembers class * implements org.bukkit.event.Listener { @org.bukkit.event.EventHandler ; } + # -----保护枚举方法的完整性----- --keep enum ** {*;} +-keepclassmembers enum * { + public static **[] values(); + public static ** valueOf(java.lang.String); +} + # -----保护配置注入不被清理----- --keepclassmembers class * extends **.config.InjectConfigurationSection { +-keepclassmembers class * extends **.config.Inject** { ; -} --keepclassmembers class * extends **.config.InjectConfig { - ; -} +} + # -----保护注解命令方法不被清理----- -keepclassmembers class **.commands.annotation.** { ; } -keepclassmembers class * implements **.commands.CommandExecutor { ; } --keepclassmembers class **.commands.HandlerCommand { ; } --keepclassmembers class * implements **.commands.HandlerCommands { - @**.commands.HandlerCommand ; - @**.commands.HandlerTabComplete ; -} # -----保护注解NotProguard标记----- -keep class **.NotProguard -keep @**.NotProguard class * {*;} -keepclassmembers class * { @**.NotProguard ; @**.NotProguard ; -} - -# -----保护命令解析正常----- --keepnames class * extends **.commands.BaseCommand \ No newline at end of file +} \ No newline at end of file diff --git a/src/main/java/pw/yumc/MiaoChat/MiaoChat.java b/src/main/java/pw/yumc/MiaoChat/MiaoChat.java index b4cb596..1730a2c 100644 --- a/src/main/java/pw/yumc/MiaoChat/MiaoChat.java +++ b/src/main/java/pw/yumc/MiaoChat/MiaoChat.java @@ -29,14 +29,14 @@ public class MiaoChat extends JavaPlugin implements CommandExecutor { @Cmd(permission = "MiaoChat.toggle") @Help("关闭聊天功能") public void off(final CommandArgument e) { - ChatListener.offList.remove(e.getSender().getName()); + ChatListener.offList.add(e.getSender().getName()); Log.toSender(e.getSender(), "§c聊天功能已关闭!"); } @Cmd(permission = "MiaoChat.toggle") @Help("开启聊天功能") public void on(final CommandArgument e) { - ChatListener.offList.add(e.getSender().getName()); + ChatListener.offList.remove(e.getSender().getName()); Log.toSender(e.getSender(), "§a聊天功能已开启!"); } diff --git a/src/main/java/pw/yumc/MiaoChat/config/CLICKTYPE.java b/src/main/java/pw/yumc/MiaoChat/config/CLICKTYPE.java index d933b3b..4191faf 100644 --- a/src/main/java/pw/yumc/MiaoChat/config/CLICKTYPE.java +++ b/src/main/java/pw/yumc/MiaoChat/config/CLICKTYPE.java @@ -2,5 +2,6 @@ package pw.yumc.MiaoChat.config; public enum CLICKTYPE { COMMAND, - SUGGEST; + SUGGEST, + OPENURL; } diff --git a/src/main/java/pw/yumc/MiaoChat/config/ChatMessagePart.java b/src/main/java/pw/yumc/MiaoChat/config/ChatMessagePart.java index 7f14944..54835d0 100644 --- a/src/main/java/pw/yumc/MiaoChat/config/ChatMessagePart.java +++ b/src/main/java/pw/yumc/MiaoChat/config/ChatMessagePart.java @@ -37,10 +37,19 @@ public class ChatMessagePart extends InjectConfigurationSection { } if (command != null && !command.isEmpty()) { final String tc = f(p, command); - if (type == CLICKTYPE.SUGGEST) { - tr.suggest(tc); - } else if (type == CLICKTYPE.COMMAND) { + switch (type) { + case COMMAND: tr.command(tc); + break; + case OPENURL: + tr.openurl(tc); + break; + case SUGGEST: + tr.suggest(tc); + break; + default: + break; + } } return tr; diff --git a/src/main/java/pw/yumc/MiaoChat/config/ChatRule.java b/src/main/java/pw/yumc/MiaoChat/config/ChatRule.java index beb8d8b..45ea097 100644 --- a/src/main/java/pw/yumc/MiaoChat/config/ChatRule.java +++ b/src/main/java/pw/yumc/MiaoChat/config/ChatRule.java @@ -22,7 +22,7 @@ public class ChatRule extends InjectConfigurationSection { private Integer range; @Default("false") private Boolean item; - @Default("&6[%s&6]&r") + @Default("&6[&b%s&6]&r") private String itemformat; private transient ChatConfig formats; diff --git a/src/main/java/pw/yumc/MiaoChat/listeners/ChatListener.java b/src/main/java/pw/yumc/MiaoChat/listeners/ChatListener.java index 2164455..b067b1c 100644 --- a/src/main/java/pw/yumc/MiaoChat/listeners/ChatListener.java +++ b/src/main/java/pw/yumc/MiaoChat/listeners/ChatListener.java @@ -42,17 +42,26 @@ public class ChatListener implements Listener { new SubscribeTask(true, true); } - @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onChat(final AsyncPlayerChatEvent e) { final Player p = e.getPlayer(); final ChatRule cr = plugin.getConfigExt().getChatRule(e.getPlayer()); if (cr == null) { return; } - final ChatConfig cc = cr.getFormats(); e.setCancelled(true); - final String msg = e.getMessage(); final Tellraw tr = Tellraw.create(); + handleChat(p, tr, cr, e); + } + + private void handleChat(final Player p, final Tellraw tr, final ChatRule cr, final AsyncPlayerChatEvent e) { + handleFormat(p, tr, cr); + handleTellraw(p, tr, cr, e.getMessage()); + handleSend(p, tr, cr); + } + + private void handleFormat(final Player p, final Tellraw tr, final ChatRule cr) { + final ChatConfig cc = cr.getFormats(); for (final ChatMessagePart cmp : cc.getPrefixs()) { cmp.then(tr, p); } @@ -60,29 +69,9 @@ public class ChatListener implements Listener { for (final ChatMessagePart cmp : cc.getSuffixs()) { cmp.then(tr, p); } - final String message = ChatColor.translateAlternateColorCodes('&', msg); - if (!message.isEmpty() && cr.isItem()) { - if (!handlerTellraw(p, tr, message, cr.getItemformat())) { - Log.toSender(p, "§c不允许展示相同的物品!"); - return; - } - } - final int range = cr.getRange(); - Collection plist = Collections.emptyList(); - if (range != 0) { - plist = p.getNearbyEntities(range, range, range); - } else { - plist = C.Player.getOnlinePlayers(); - } - for (final Entity ne : plist) { - if (ne instanceof Player && !offList.contains(ne.getName())) { - tr.send(ne); - } - } - Bukkit.getConsoleSender().sendMessage(tr.toOldMessageFormat()); } - private LinkedList handlerMessage(final LinkedList il, String message) { + private LinkedList handleMessage(final LinkedList il, String message) { final LinkedList mlist = new LinkedList<>(); if (!il.isEmpty()) { for (final String k : il) { @@ -98,7 +87,7 @@ public class ChatListener implements Listener { return mlist; } - private LinkedList handlerPattern(final String message) { + private LinkedList handlePattern(final String message) { final Matcher m = ITEM_PATTERN.matcher(message); final Set temp = new HashSet<>(); final LinkedList ilist = new LinkedList<>(); @@ -115,12 +104,35 @@ public class ChatListener implements Listener { return ilist; } - private boolean handlerTellraw(final Player player, final Tellraw tr, final String message, final String itemformat) { - final LinkedList il = handlerPattern(message); - if (il == null) { - return false; + private void handleSend(final Player p, final Tellraw tr, final ChatRule cr) { + final int range = cr.getRange(); + Collection plist = Collections.emptyList(); + if (range != 0) { + plist = p.getNearbyEntities(range, range, range); + } else { + plist = C.Player.getOnlinePlayers(); } - final LinkedList ml = handlerMessage(il, message); + for (final Entity ne : plist) { + if (ne instanceof Player && !offList.contains(ne.getName())) { + tr.send(ne); + } + } + Bukkit.getConsoleSender().sendMessage(tr.toOldMessageFormat()); + } + + private void handleTellraw(final Player player, final Tellraw tr, final ChatRule cr, String message) { + if (message.isEmpty() || !cr.isItem()) { + return; + } + if (player.hasPermission("MiaoChat.color")) { + message = ChatColor.translateAlternateColorCodes('&', message); + } + final LinkedList il = handlePattern(message); + if (il == null) { + Log.toSender(player, "§c不允许展示相同的物品!"); + return; + } + final LinkedList ml = handleMessage(il, message); while (!ml.isEmpty()) { final String mm = ml.removeFirst(); if (il.contains(mm)) { @@ -132,14 +144,12 @@ public class ChatListener implements Listener { is = player.getInventory().getItem(k - '0' - 1); } if (is != null && is.getType() != Material.AIR) { - tr.then(String.format(ChatColor.translateAlternateColorCodes('&', itemformat), - is.hasItemMeta() && is.getItemMeta().hasDisplayName() ? is.getItemMeta().getDisplayName() : is.getType().name())); + tr.then(String.format(ChatColor.translateAlternateColorCodes('&', cr.getItemformat()), is.hasItemMeta() && is.getItemMeta().hasDisplayName() ? is.getItemMeta().getDisplayName() : is.getType().name())); tr.item(is); } } else { tr.then(mm); } } - return true; } } diff --git a/src/main/resources/admin.yml b/src/main/resources/admin.yml index 781bf21..942d823 100644 --- a/src/main/resources/admin.yml +++ b/src/main/resources/admin.yml @@ -17,11 +17,12 @@ Format: - '&c点击即可TP我!' #点击操作 click: - #操作类型: [COMMAND,SUGGEST] + #操作类型: [COMMAND,SUGGEST,OPENURL] #COMMAND代表执行命令 #SUGGEST代表命令补全 + #OPENURL代表打开网址 type: 'COMMAND' - #命令 支持PAPI + #命令或网址 支持PAPI command: '/tpa %player_name%' # 可以添加多个 # 2: diff --git a/src/main/resources/default.yml b/src/main/resources/default.yml index c1133ef..b26d75e 100644 --- a/src/main/resources/default.yml +++ b/src/main/resources/default.yml @@ -15,11 +15,12 @@ Format: - '&c点击即可TP我!' #点击操作 click: - #操作类型: [COMMAND,SUGGEST] + #操作类型: [COMMAND,SUGGEST,OPENURL] #COMMAND代表执行命令 #SUGGEST代表命令补全 + #OPENURL代表打开网址 type: 'COMMAND' - #命令 支持PAPI + #命令或网址 支持PAPI command: '/tpa %player_name%' # 可以添加多个 # 2: diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index ef156fc..bdcd869 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -13,18 +13,21 @@ commands: - mct - mchat usage: §b使用/${project.artifactId} help 查看帮助! - permission: ${project.artifactId}.reload + permission: ${project.artifactId}.default permission-message: §c你没有 的权限来执行此命令! permissions: ${project.artifactId}.default: description: 默认格式权限! default: true - ${project.artifactId}.admin: - description: 管理员格式权限! - default: op ${project.artifactId}.toggle: description: 开启关闭聊天! default: true + ${project.artifactId}.color: + description: 彩字聊天权限! + default: true + ${project.artifactId}.admin: + description: 管理员格式权限! + default: op ${project.artifactId}.reload: description: 重新载入插件! default: op \ No newline at end of file