diff --git a/core/AllMusic.java b/core/AllMusic.java index 2296ecd6..fafaa7b2 100644 --- a/core/AllMusic.java +++ b/core/AllMusic.java @@ -10,13 +10,16 @@ import com.coloryr.allmusic.server.core.objs.message.MessageObj; import com.coloryr.allmusic.server.core.objs.music.SearchPageObj; import com.coloryr.allmusic.server.core.objs.music.SongInfoObj; import com.coloryr.allmusic.server.core.side.BaseSide; -import com.coloryr.allmusic.server.core.side.IMyLogger; +import com.coloryr.allmusic.server.core.side.IAllMusicLogger; import com.coloryr.allmusic.server.core.sql.DataSql; import com.coloryr.allmusic.server.core.sql.IEconomy; import com.coloryr.allmusic.server.netapi.NetiApiMain; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.event.ClickEvent; +import net.kyori.adventure.text.minimessage.MiniMessage; import java.io.*; import java.lang.reflect.Type; @@ -25,7 +28,9 @@ import java.nio.file.Files; import java.util.*; public class AllMusic { - public static final Gson gson = new Gson(); + public static final Gson gson = new GsonBuilder() + .disableHtmlEscaping() + .create(); public static final Random random = new Random(); public static final Map MUSIC_APIS = new HashMap<>(); @@ -41,7 +46,7 @@ public class AllMusic { /** * 插件版本号 */ - public static final String version = "3.7.0"; + public static final String version = "3.8.0"; /** * 配置文件版本号 */ @@ -49,7 +54,7 @@ public class AllMusic { /** * 语言文件配置版本号 */ - public static final String messageVersion = "209"; + public static final String messageVersion = "210"; /** * 搜歌结果 * 玩家名 结果 @@ -62,7 +67,7 @@ public class AllMusic { /** * 日志 */ - public static IMyLogger log; + public static IAllMusicLogger log; /** * 服务器端操作 */ @@ -106,7 +111,7 @@ public class AllMusic { public static void configCheck() { if (config == null || config.check()) { config = ConfigObj.make(); - log.warning("§d[AllMusic3]§c配置文件config.json错误,已覆盖"); + log.warning("[AllMusic3]配置文件config.json错误,已覆盖"); saveConfig(); } } @@ -117,7 +122,7 @@ public class AllMusic { private static void messageCheck() { if (message == null || message.check()) { message = MessageObj.make(); - log.warning("§d[AllMusic3]§c配置文件message.json错误,已覆盖"); + log.warning("[AllMusic3]配置文件message.json错误,已覆盖"); saveMessage(); } } @@ -200,7 +205,7 @@ public class AllMusic { */ public static ConfigObj getConfig() { if (config == null) { - log.warning("§d[AllMusic3]§c配置文件config.json错误,已使用默认配置文件"); + log.warning("[AllMusic3]配置文件config.json错误,已使用默认配置文件"); config = ConfigObj.make(); } return config; @@ -213,7 +218,7 @@ public class AllMusic { */ public static MessageObj getMessage() { if (message == null) { - log.warning("§d[AllMusic3]§c配置文件message.json错误,已使用默认配置文件"); + log.warning("[AllMusic3]配置文件message.json错误,已使用默认配置文件"); message = MessageObj.make(); } return message; @@ -291,7 +296,7 @@ public class AllMusic { write.close(); out.close(); } catch (Exception e) { - log.warning("§d[AllMusic3]§c配置文件保存错误"); + log.warning("[AllMusic3]配置文件保存错误"); e.printStackTrace(); } } @@ -306,7 +311,7 @@ public class AllMusic { write.close(); out.close(); } catch (Exception e) { - log.warning("§d[AllMusic3]§c配置文件保存错误"); + log.warning("[AllMusic3]配置文件保存错误"); e.printStackTrace(); } } @@ -323,7 +328,7 @@ public class AllMusic { write.write(data); write.close(); } catch (Exception e) { - log.warning("§d[AllMusic3]§c配置文件保存错误"); + log.warning("[AllMusic3]配置文件保存错误"); e.printStackTrace(); } } @@ -342,7 +347,7 @@ public class AllMusic { MusicSearch.start(); DataSql.start(); - log.info("§d[AllMusic3]§e已启动-" + version); + log.info("[AllMusic3]已启动-" + version); } /** @@ -356,7 +361,7 @@ public class AllMusic { PlayMusic.stop(); PlayRuntime.stop(); DataSql.stop(); - log.info("§d[AllMusic3]§2§e已停止,感谢使用"); + log.info("[AllMusic3]已停止,感谢使用"); } /** @@ -379,11 +384,11 @@ public class AllMusic { reader.close(); messageCheck(); - log.info("§d[AllMusic3]§e当前语言配置文件版本为:" + messageVersion + log.info("[AllMusic3]当前语言配置文件版本为:" + messageVersion + ",你的语言文件版本为:" + message.version); if (!message.version.equalsIgnoreCase(messageVersion)) { - log.warning("§d[AllMusic3]§c语言文件版本号错误,运行可能会发生问题,请删除后重载"); + log.warning("[AllMusic3]语言文件版本号错误,运行可能会发生问题,请删除后重载"); } reader = new InputStreamReader(Files.newInputStream(cookieFile.toPath()), StandardCharsets.UTF_8); @@ -398,14 +403,14 @@ public class AllMusic { saveCookie(); } - log.info("§d[AllMusic3]§e当前插件配置文件版本为:" + configVersion + log.info("[AllMusic3]当前插件配置文件版本为:" + configVersion + ",你的配置文件版本为:" + config.version); if (!AllMusic.configVersion.equalsIgnoreCase(config.version)) { - log.warning("§d[AllMusic3]§c请及时更新配置文件"); + log.warning("[AllMusic3]请及时更新配置文件"); } } catch (Exception e) { - log.warning("§d[AllMusic3]§c读取配置文件错误"); + log.warning("[AllMusic3]读取配置文件错误"); e.printStackTrace(); } } @@ -440,13 +445,28 @@ public class AllMusic { }); } + public static Component miniMessage(String input) { + MiniMessage mm = MiniMessage.miniMessage(); + return mm.deserialize(input); + } + + public static Component miniMessageRun(String input, String command) { + Component component = miniMessage(input); + return component.clickEvent(ClickEvent.clickEvent(ClickEvent.Action.RUN_COMMAND, ClickEvent.Payload.string(command))); + } + + public static Component miniMessageSuggest(String input, String command) { + Component component = miniMessage(input); + return component.clickEvent(ClickEvent.clickEvent(ClickEvent.Action.SUGGEST_COMMAND, ClickEvent.Payload.string(command))); + } + /** * 读取配置文件 * * @param file 配置文件文件夹 */ public void init(File file) { - log.info("§d[AllMusic3]§2§e正在启动,感谢使用,本插件交流群:571239090"); + log.info("[AllMusic3]正在启动,感谢使用,本插件交流群:571239090"); try { if (!file.exists()) file.mkdir(); @@ -471,7 +491,7 @@ public class AllMusic { isRun = true; } catch (IOException e) { isRun = false; - log.warning("§d[AllMusic3]§c启动失败"); + log.warning("[AllMusic3]启动失败"); e.printStackTrace(); } } diff --git a/core/command/CommandEX.java b/core/command/CommandEX.java index dbeb83be..aa8fa011 100644 --- a/core/command/CommandEX.java +++ b/core/command/CommandEX.java @@ -18,23 +18,15 @@ public class CommandEX { public static final Map commandList = new HashMap<>(); public static final Map commandAdminList = new HashMap<>(); - private static final List normal = new ArrayList() {{ - this.addAll(commandList.keySet()); - }}; + private static final List normal = new ArrayList<>(); /** * 管理员的指令 */ - private static final List admin = new ArrayList() {{ - this.addAll(commandAdminList.keySet()); - }}; + private static final List admin = new ArrayList<>(); /** * 搜歌的指令 */ - private static final List search = new ArrayList() {{ - this.add("select"); - this.add("nextpage"); - this.add("lastpage"); - }}; + private static final List search = new ArrayList<>(); static { commandList.put("stop", new CommandStop()); @@ -63,6 +55,13 @@ public class CommandEX { commandAdminList.put("clearban", new CommandClearBanList()); commandAdminList.put("clearbanplayer", new CommandClearBanPlayerList()); commandAdminList.put("test", new CommandTest()); + + normal.addAll(commandList.keySet()); + admin.addAll(commandAdminList.keySet()); + + search.add("select"); + search.add("nextpage"); + search.add("lastpage"); } /** diff --git a/core/command/sub/CommandAddList.java b/core/command/sub/CommandAddList.java index d5baeb30..d21bd3d0 100644 --- a/core/command/sub/CommandAddList.java +++ b/core/command/sub/CommandAddList.java @@ -22,7 +22,7 @@ public class CommandAddList extends ACommand { api = AllMusic.MUSIC_APIS.get(args[1]); musicID = args[2]; } else { - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2错误的指令"); + AllMusic.side.sendMessage(sender, "[AllMusic3]错误的指令"); } if (api == null) { @@ -34,9 +34,9 @@ public class CommandAddList extends ACommand { if (api.checkId(musicID)) { api.setList(musicID, sender); - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2添加空闲音乐列表" + musicID); + AllMusic.side.sendMessage(sender, "[AllMusic3]添加空闲音乐列表" + musicID); } else { - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2请输入有效的音乐列表ID"); + AllMusic.side.sendMessage(sender, "[AllMusic3]请输入有效的音乐列表ID"); } } } diff --git a/core/command/sub/CommandBan.java b/core/command/sub/CommandBan.java index fa60d61b..afd84f28 100644 --- a/core/command/sub/CommandBan.java +++ b/core/command/sub/CommandBan.java @@ -29,7 +29,7 @@ public class CommandBan extends ACommand { api = AllMusic.MUSIC_APIS.get(args[1]); musicID = args[2]; } else { - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2错误的指令"); + AllMusic.side.sendMessage(sender, "[AllMusic3]错误的指令"); } if (api == null) { @@ -39,9 +39,9 @@ public class CommandBan extends ACommand { if (api.checkId(musicID)) { DataSql.addBanMusic(musicID, api.getId()); - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2音乐API " + api.getId() + " 已禁止点歌" + musicID); + AllMusic.side.sendMessage(sender, "[AllMusic3]音乐API " + api.getId() + " 已禁止点歌" + musicID); } else { - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2请输入有效的ID"); + AllMusic.side.sendMessage(sender, "[AllMusic3]请输入有效的ID"); } } diff --git a/core/command/sub/CommandBanPlayer.java b/core/command/sub/CommandBanPlayer.java index c4ab2915..6e4b9432 100644 --- a/core/command/sub/CommandBanPlayer.java +++ b/core/command/sub/CommandBanPlayer.java @@ -17,7 +17,7 @@ public class CommandBanPlayer implements ICommand { return; } DataSql.addBanPlayer(args[1]); - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2已禁止玩家" + args[1] + "点歌"); + AllMusic.side.sendMessage(sender, "[AllMusic3]已禁止玩家" + args[1] + "点歌"); } @Override diff --git a/core/command/sub/CommandClearBanList.java b/core/command/sub/CommandClearBanList.java index c91cb893..c19c8e32 100644 --- a/core/command/sub/CommandClearBanList.java +++ b/core/command/sub/CommandClearBanList.java @@ -8,6 +8,6 @@ public class CommandClearBanList extends ACommand { @Override public void execute(Object sender, String name, String[] args) { DataSql.clearBan(); - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2禁止点歌列表已清空"); + AllMusic.side.sendMessage(sender, "[AllMusic3]禁止点歌列表已清空"); } } diff --git a/core/command/sub/CommandClearBanPlayerList.java b/core/command/sub/CommandClearBanPlayerList.java index f2fc8762..89d9bb4c 100644 --- a/core/command/sub/CommandClearBanPlayerList.java +++ b/core/command/sub/CommandClearBanPlayerList.java @@ -8,6 +8,6 @@ public class CommandClearBanPlayerList extends ACommand { @Override public void execute(Object sender, String name, String[] args) { DataSql.clearBanPlayer(); - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2禁止玩家点歌列表已清空"); + AllMusic.side.sendMessage(sender, "[AllMusic3]禁止玩家点歌列表已清空"); } } diff --git a/core/command/sub/CommandClearList.java b/core/command/sub/CommandClearList.java index da96b668..b8dfcac3 100644 --- a/core/command/sub/CommandClearList.java +++ b/core/command/sub/CommandClearList.java @@ -8,6 +8,6 @@ public class CommandClearList extends ACommand { @Override public void execute(Object sender, String name, String[] args) { PlayMusic.clearIdleList(); - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2空闲音乐列表已清空"); + AllMusic.side.sendMessage(sender, "[AllMusic3]空闲音乐列表已清空"); } } diff --git a/core/command/sub/CommandDelete.java b/core/command/sub/CommandDelete.java index 291b8038..9b690d18 100644 --- a/core/command/sub/CommandDelete.java +++ b/core/command/sub/CommandDelete.java @@ -19,17 +19,17 @@ public class CommandDelete extends ACommand { if (!args[1].isEmpty() && Function.isInteger(args[1])) { int music = Integer.parseInt(args[1]); if (music == 0) { - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2请输入有效的序列ID"); + AllMusic.side.sendMessage(sender, "[AllMusic3]请输入有效的序列ID"); return; } if (music > PlayMusic.getListSize()) { - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2序列号过大"); + AllMusic.side.sendMessage(sender, "[AllMusic3]序列号过大"); return; } PlayMusic.remove(music - 1); - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2已删除序列" + music); + AllMusic.side.sendMessage(sender, "[AllMusic3]已删除序列" + music); } else { - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2请输入有效的序列ID"); + AllMusic.side.sendMessage(sender, "[AllMusic3]请输入有效的序列ID"); } } diff --git a/core/command/sub/CommandHelp.java b/core/command/sub/CommandHelp.java index 02c72200..cc72b24d 100644 --- a/core/command/sub/CommandHelp.java +++ b/core/command/sub/CommandHelp.java @@ -8,87 +8,85 @@ public class CommandHelp extends ACommand { @Override public void execute(Object sender, String name, String[] args) { AllMusic.side.sendMessage(sender, AllMusic.getMessage().help.normal.head); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.normal.base, - AllMusic.getMessage().click.clickCheck, "/music "); - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.normal.stop, - AllMusic.getMessage().click.clickRun, "/music stop"); - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.normal.list, - AllMusic.getMessage().click.clickRun, "/music list"); - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.normal.cancel, - AllMusic.getMessage().click.clickRun, "/music cancel"); - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.normal.vote, - AllMusic.getMessage().click.clickRun, "/music vote"); - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.normal.vote1, - AllMusic.getMessage().click.clickRun, "/music vote cancel"); - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.normal.push, - AllMusic.getMessage().click.clickRun, "/music push"); - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.normal.push1, - AllMusic.getMessage().click.clickRun, "/music push cancel"); - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.normal.mute, - AllMusic.getMessage().click.clickRun, "/music mute"); - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.normal.mutelist, - AllMusic.getMessage().click.clickRun, "/music mute list"); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.normal.search, - AllMusic.getMessage().click.clickCheck, "/music search "); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.normal.select, - AllMusic.getMessage().click.clickCheck, "/music select "); - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.normal.nextpage, - AllMusic.getMessage().click.clickRun, "/music nextpage"); - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.normal.lastpage, - AllMusic.getMessage().click.clickRun, "/music lastpage"); - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.normal.hud9, - AllMusic.getMessage().click.clickRun, "/music hud enable"); - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.normal.hud10, - AllMusic.getMessage().click.clickRun, "/music hud reset"); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.normal.hud1, - AllMusic.getMessage().click.clickCheck, "/music hud "); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.normal.hud2, - AllMusic.getMessage().click.clickCheck, "/music hud "); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.normal.hud6, - AllMusic.getMessage().click.clickCheck, "/music hud "); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.normal.hud7, - AllMusic.getMessage().click.clickCheck, "/music hud "); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.normal.hud8, - AllMusic.getMessage().click.clickCheck, "/music hud "); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.normal.hud3, - AllMusic.getMessage().click.clickCheck, "/music hud pic size "); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.normal.hud4, - AllMusic.getMessage().click.clickCheck, "/music hud pic rotate "); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.normal.hud5, - AllMusic.getMessage().click.clickCheck, "/music hud pic speed "); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.base) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.stop) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music stop"))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.list) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music list"))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.cancel) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music cancel"))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.vote) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music vote"))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.vote1) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music vote cancel"))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.push) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickRun, "/music push "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.push1) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music push cancel"))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.mute) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music mute"))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.mutelist) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music mute list"))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.search) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music search "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.select) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music select "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.nextpage) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music nextpage"))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.lastpage) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music lastpage"))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.hud9) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music hud enable"))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.hud10) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music hud reset"))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.hud1) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music hud "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.hud2) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music hud "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.hud6) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music hud "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.hud7) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music hud "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.hud8) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music hud "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.hud3) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music hud pic size "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.hud4) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music hud pic rotate "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.normal.hud5) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music hud pic speed "))); if (AllMusic.side.checkPermission(sender)) { - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.admin.reload, - AllMusic.getMessage().click.clickRun, "/music reload"); - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.admin.next, - AllMusic.getMessage().click.clickRun, "/music next"); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.admin.ban, - AllMusic.getMessage().click.clickCheck, "/music ban "); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.admin.ban1, - AllMusic.getMessage().click.clickCheck, "/music ban "); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.admin.banPlayer, - AllMusic.getMessage().click.clickCheck, "/music banplayer "); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.admin.unban, - AllMusic.getMessage().click.clickCheck, "/music unban "); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.admin.unbanPlayer, - AllMusic.getMessage().click.clickCheck, "/music unbanplayer "); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.admin.delete, - AllMusic.getMessage().click.clickCheck, "/music delete "); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.admin.addList, - AllMusic.getMessage().click.clickCheck, "/music addlist "); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.admin.addList1, - AllMusic.getMessage().click.clickCheck, "/music addlist "); - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.admin.clearList, - AllMusic.getMessage().click.clickRun, "/music clearlist"); - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.admin.clearBanList, - AllMusic.getMessage().click.clickRun, "/music clearban"); - AllMusic.side.sendMessageRun(sender, AllMusic.getMessage().help.admin.clearBanPlayerList, - AllMusic.getMessage().click.clickRun, "/music clearbanplayer"); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.admin.cookie, - AllMusic.getMessage().click.clickCheck, "/music cookie "); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.admin.test, - AllMusic.getMessage().click.clickCheck, "/music test "); - AllMusic.side.sendMessageSuggest(sender, AllMusic.getMessage().help.admin.test1, - AllMusic.getMessage().click.clickCheck, "/music test "); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.admin.reload) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music reload"))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.admin.next) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music next"))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.admin.ban) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music ban "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.admin.ban1) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music ban "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.admin.banPlayer) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music banplayer "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.admin.unban) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music unban "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.admin.unbanPlayer) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music unbanplayer "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.admin.delete) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music delete "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.admin.addList) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music addlist "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.admin.addList1) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music addlist "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.admin.clearList) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music clearlist"))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.admin.clearBanList) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music clearban"))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.admin.clearBanPlayerList) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music clearbanplayer"))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.admin.test) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music test "))); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().help.admin.test1) + .append(AllMusic.miniMessageSuggest(AllMusic.getMessage().click.clickCheck, "/music test "))); } } } diff --git a/core/command/sub/CommandNext.java b/core/command/sub/CommandNext.java index d1e495ad..ea2e7b02 100644 --- a/core/command/sub/CommandNext.java +++ b/core/command/sub/CommandNext.java @@ -10,7 +10,7 @@ public class CommandNext extends ACommand { @Override public void execute(Object sender, String name, String[] args) { PlayMusic.musicLessTime = 1; - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2已强制切歌"); + AllMusic.side.sendMessage(sender, "[AllMusic3]已强制切歌"); DataSql.removeMutePlayer(name); } } diff --git a/core/command/sub/CommandPush.java b/core/command/sub/CommandPush.java index 76dc2d3d..4a07a647 100644 --- a/core/command/sub/CommandPush.java +++ b/core/command/sub/CommandPush.java @@ -17,11 +17,11 @@ public class CommandPush extends ACommand { public void execute(Object sender, String name, String[] args) { if (AllMusic.getConfig().needPermission && !AllMusic.side.checkPermission(sender, PermissionList.PERMISSION_PUSH)) { - AllMusic.side.sendMessage(sender, AllMusic.getMessage().push.noPermission); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().push.noPermission)); return; } if (PlayMusic.getListSize() == 0 && PlayMusic.getIdleListSize() == 0) { - AllMusic.side.sendMessage(sender, AllMusic.getMessage().musicPlay.emptyPlay); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().musicPlay.emptyPlay)); } SongInfoObj music = null; if (args.length == 1) { @@ -77,7 +77,8 @@ public class CommandPush extends ACommand { .replace(ARG.time, String.valueOf(AllMusic.getConfig().voteTime)) .replace(ARG.musicName, music.getName()) .replace(ARG.musicAuthor, music.getAuthor())); - AllMusic.side.broadcastWithRun(AllMusic.getMessage().push.bq1, AllMusic.getMessage().push.bq2, "/music push"); + AllMusic.side.broadcast(AllMusic.miniMessage(AllMusic.getMessage().push.bq1) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().push.bq2, "/music push"))); } else { if (music != null) { AllMusic.side.sendMessage(sender, AllMusic.getMessage().push.err3); diff --git a/core/command/sub/CommandReload.java b/core/command/sub/CommandReload.java index 372616c3..861ddf9e 100644 --- a/core/command/sub/CommandReload.java +++ b/core/command/sub/CommandReload.java @@ -7,6 +7,6 @@ public class CommandReload extends ACommand { @Override public void execute(Object sender, String name, String[] args) { AllMusic.side.reload(); - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2已重读配置文件"); + AllMusic.side.sendMessage(sender, "[AllMusic3]已重读配置文件"); } } diff --git a/core/command/sub/CommandTest.java b/core/command/sub/CommandTest.java index 168cb930..0869c03c 100644 --- a/core/command/sub/CommandTest.java +++ b/core/command/sub/CommandTest.java @@ -23,7 +23,7 @@ public class CommandTest extends ACommand { api = AllMusic.MUSIC_APIS.get(args[1]); musicID = args[2]; } else { - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2错误的指令"); + AllMusic.side.sendMessage(sender, "[AllMusic3]错误的指令"); } if (api == null) { @@ -32,19 +32,19 @@ public class CommandTest extends ACommand { } if (api.checkId(musicID)) { - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2正在测试解析" + args[1]); + AllMusic.side.sendMessage(sender, "[AllMusic3]正在测试解析" + args[1]); try { SongInfoObj info = api.getMusic(args[1], "test", false); if (info == null) { - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2测试解析失败"); + AllMusic.side.sendMessage(sender, "[AllMusic3]测试解析失败"); return; } - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2音乐名称 " + info.getName()); - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2音乐作者 " + info.getAuthor()); + AllMusic.side.sendMessage(sender, "[AllMusic3]音乐名称 " + info.getName()); + AllMusic.side.sendMessage(sender, "[AllMusic3]音乐作者 " + info.getAuthor()); String url = api.getPlayUrl(args[1]); - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2播放地址 " + url); + AllMusic.side.sendMessage(sender, "[AllMusic3]播放地址 " + url); } catch (Exception e) { - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2测试解析错误"); + AllMusic.side.sendMessage(sender, "[AllMusic3]测试解析错误"); e.printStackTrace(); } } diff --git a/core/command/sub/CommandUnban.java b/core/command/sub/CommandUnban.java index b52be9b8..de0c1271 100644 --- a/core/command/sub/CommandUnban.java +++ b/core/command/sub/CommandUnban.java @@ -28,7 +28,7 @@ public class CommandUnban extends ACommand { api = AllMusic.MUSIC_APIS.get(args[1]); musicID = args[2]; } else { - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2错误的指令"); + AllMusic.side.sendMessage(sender, "[AllMusic3]错误的指令"); } if (api == null) { @@ -41,9 +41,9 @@ public class CommandUnban extends ACommand { if (api.checkId(musicID)) { api.setList(musicID, sender); DataSql.removeBanMusic(args[1]); - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2音乐API " + api.getId() + "已解封点歌" + musicID); + AllMusic.side.sendMessage(sender, "[AllMusic3]音乐API " + api.getId() + "已解封点歌" + musicID); } else { - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2请输入有效的ID"); + AllMusic.side.sendMessage(sender, "[AllMusic3]请输入有效的ID"); } } diff --git a/core/command/sub/CommandUnbanPlayer.java b/core/command/sub/CommandUnbanPlayer.java index a427c669..7ef71796 100644 --- a/core/command/sub/CommandUnbanPlayer.java +++ b/core/command/sub/CommandUnbanPlayer.java @@ -17,7 +17,7 @@ public class CommandUnbanPlayer implements ICommand { return; } DataSql.removeBanPlayer(args[1]); - AllMusic.side.sendMessage(sender, "§d[AllMusic3]§2已解封玩家" + args[1] + "点歌"); + AllMusic.side.sendMessage(sender, "[AllMusic3]已解封玩家" + args[1] + "点歌"); } @Override diff --git a/core/command/sub/CommandVote.java b/core/command/sub/CommandVote.java index 753ab57a..4552c1f1 100644 --- a/core/command/sub/CommandVote.java +++ b/core/command/sub/CommandVote.java @@ -42,7 +42,8 @@ public class CommandVote extends ACommand { String data = AllMusic.getMessage().vote.bq; AllMusic.side.broadcast(data.replace(ARG.player, name) .replace(ARG.time, String.valueOf(AllMusic.getConfig().voteTime))); - AllMusic.side.broadcastWithRun(AllMusic.getMessage().vote.bq1, AllMusic.getMessage().vote.bq2, "/music vote"); + AllMusic.side.broadcast(AllMusic.miniMessage(AllMusic.getMessage().vote.bq1) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().vote.bq2, "/music vote"))); } else { if (!PlayMusic.containVote(name)) { PlayMusic.addVote(name); diff --git a/core/music/MusicHttpClient.java b/core/music/MusicHttpClient.java index 4e88335c..df007bfb 100644 --- a/core/music/MusicHttpClient.java +++ b/core/music/MusicHttpClient.java @@ -21,9 +21,9 @@ import java.time.Instant; import java.util.List; public class MusicHttpClient { + public static final String UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36 Edg/145.0.0.0"; private static final int CONNECT_TIMEOUT = 5; private static final int READ_TIMEOUT = 7; - public static final String UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36 Edg/145.0.0.0"; public static CloseableHttpClient client; public static void init() { @@ -80,7 +80,7 @@ public class MusicHttpClient { int httpCode = response.getCode(); HttpEntity entity = response.getEntity(); if (entity == null) { - AllMusic.log.warning("§d[AllMusic3]§c获取网页错误"); + AllMusic.log.warning("[AllMusic3]获取网页错误"); return null; } InputStream inputStream = entity.getContent(); @@ -96,7 +96,7 @@ public class MusicHttpClient { // 注意:需要调用者关闭 InputStream return inputStream; } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic3]§c获取网页错误"); + AllMusic.log.warning("[AllMusic3]获取网页错误"); e.printStackTrace(); } return null; diff --git a/core/music/MusicSearch.java b/core/music/MusicSearch.java index fefc0642..ba702bc4 100644 --- a/core/music/MusicSearch.java +++ b/core/music/MusicSearch.java @@ -68,22 +68,22 @@ public class MusicSearch { String info; AllMusic.side.sendMessage(sender, ""); if (search.haveLastPage()) { - AllMusic.side.sendMessageRun(sender, "§d[AllMusic3]§2输入/music lastpage上一页", - AllMusic.getMessage().page.last, "/music lastpage"); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().search.lastPage) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().page.last, "/music lastpage"))); } for (int a = 0; a < index; a++) { item = search.getRes(a + search.getPage() * 10); info = AllMusic.getMessage().page.choice; info = info.replace(ARG.index, "" + (a + 1)) - .replace(ARG.musicName, item.name) - .replace(ARG.musicAuthor, item.author) - .replace(ARG.musicAl, item.al); - AllMusic.side.sendMessageRun(sender, info, - AllMusic.getMessage().click.clickRun, "/music select " + (a + 1)); + .replace(ARG.musicName, item.name()) + .replace(ARG.musicAuthor, item.author()) + .replace(ARG.musicAl, item.al()); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(info) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().click.clickRun, "/music select " + (a + 1)))); } if (search.haveNextPage()) { - AllMusic.side.sendMessageRun(sender, "§d[AllMusic3]§2输入/music nextpage下一页", - AllMusic.getMessage().page.next, "/music nextpage"); + AllMusic.side.sendMessage(sender, AllMusic.miniMessage(AllMusic.getMessage().search.nextPage) + .append(AllMusic.miniMessageRun(AllMusic.getMessage().page.next, "/music nextpage"))); } AllMusic.side.sendMessage(sender, ""); } diff --git a/core/music/PlayMusic.java b/core/music/PlayMusic.java index 92c5c7c9..d9c26a96 100644 --- a/core/music/PlayMusic.java +++ b/core/music/PlayMusic.java @@ -277,7 +277,7 @@ public class PlayMusic { .replace(ARG.musicAl, HudUtils.messageLimit(info.getAl())) .replace(ARG.musicAlia, HudUtils.messageLimit(info.getAlia())) .replace(ARG.player, info.getCall()); - AllMusic.side.sendBar(data); + AllMusic.side.sendBarInTask(data); } else { String data = AllMusic.getMessage().musicPlay.addMusic .replace(ARG.musicName, info.getName()) @@ -300,7 +300,7 @@ public class PlayMusic { if (isList) { error++; } - AllMusic.log.warning("§d[AllMusic3]§c歌曲信息解析错误"); + AllMusic.log.warning("[AllMusic3]歌曲信息解析错误"); e.printStackTrace(); } } diff --git a/core/music/PlayRuntime.java b/core/music/PlayRuntime.java index 1c99e559..f3d4df6c 100644 --- a/core/music/PlayRuntime.java +++ b/core/music/PlayRuntime.java @@ -40,7 +40,7 @@ public class PlayRuntime { * 启动歌曲工作 */ public static void start() { - Thread taskT = new Thread(PlayRuntime::task, "AllMusicPlay"); + Thread taskT = new Thread(PlayRuntime::musicPlayTask, "AllMusicPlay"); isRun = true; taskT.start(); @@ -212,7 +212,7 @@ public class PlayRuntime { } } - private static void task() { + private static void musicPlayTask() { while (isRun) { try { if (PlayMusic.getListSize() == 0) { @@ -269,7 +269,7 @@ public class PlayRuntime { .replace(ARG.musicAl, HudUtils.messageLimit(music.getAl())) .replace(ARG.musicAlia, HudUtils.messageLimit(music.getAlia())) .replace(ARG.player, music.getCall()); - AllMusic.side.sendBar(info); + AllMusic.side.sendBarInTask(info); } else { String info = AllMusic.getMessage().musicPlay.nowPlay .replace(ARG.musicName, music.getName()) @@ -307,7 +307,7 @@ public class PlayRuntime { clear(); } } catch (Exception e) { - AllMusic.log.warning("§c歌曲播放出现错误"); + AllMusic.log.warning("歌曲播放出现错误"); e.printStackTrace(); } } diff --git a/core/objs/HttpResObj.java b/core/objs/HttpResObj.java index 161fc281..8ede54bf 100644 --- a/core/objs/HttpResObj.java +++ b/core/objs/HttpResObj.java @@ -1,11 +1,4 @@ package com.coloryr.allmusic.server.core.objs; -public class HttpResObj { - public final String data; - public final boolean ok; - - public HttpResObj(String data, boolean ok) { - this.data = data; - this.ok = ok; - } +public record HttpResObj(String data, boolean ok) { } diff --git a/core/objs/SearchMusicObj.java b/core/objs/SearchMusicObj.java index bae70f41..41ad4e7a 100644 --- a/core/objs/SearchMusicObj.java +++ b/core/objs/SearchMusicObj.java @@ -1,15 +1,4 @@ package com.coloryr.allmusic.server.core.objs; -public class SearchMusicObj { - public final String id; - public final String name; - public final String author; - public final String al; - - public SearchMusicObj(String ID, String Name, String Author, String Al) { - this.id = ID; - this.name = Name; - this.author = Author; - this.al = Al; - } +public record SearchMusicObj(String id, String name, String author, String al) { } diff --git a/core/objs/message/AddMusicObj.java b/core/objs/message/AddMusicObj.java index d0b7bfa4..883d3186 100644 --- a/core/objs/message/AddMusicObj.java +++ b/core/objs/message/AddMusicObj.java @@ -43,24 +43,24 @@ public class AddMusicObj { public void init() { if (listFull == null) - listFull = "§d[AllMusic3]§c错误,队列已满"; + listFull = "[AllMusic3]错误,队列已满"; if (playerToMany == null) - playerToMany = "§d[AllMusic3]§c错误,你点了太多的歌"; + playerToMany = "[AllMusic3]错误,你点了太多的歌"; if (playerBan == null) - playerBan = "§d[AllMusic3]§c错误,你已被禁止点歌"; + playerBan = "[AllMusic3]错误,你已被禁止点歌"; if (banMusic == null) - banMusic = "§d[AllMusic3]§c错误,这首歌被禁点了"; + banMusic = "[AllMusic3]错误,这首歌被禁点了"; if (existMusic == null) - existMusic = "§d[AllMusic3]§c错误,这首歌已经存在了"; + existMusic = "[AllMusic3]错误,这首歌已经存在了"; if (success == null) - success = "§d[AllMusic3]§2点歌成功"; + success = "[AllMusic3]点歌成功"; if (noPlayer == null) - noPlayer = "§d[AllMusic3]§c没有播放的玩家"; + noPlayer = "[AllMusic3]没有播放的玩家"; if (noID == null) - noID = "§d[AllMusic3]§c错误,请输入歌曲数字ID"; + noID = "[AllMusic3]错误,请输入歌曲数字ID"; if (cancel == null) - cancel = "§d[AllMusic3]§e点歌被取消"; + cancel = "[AllMusic3]点歌被取消"; if (timeOut == null) - timeOut = "§d[AllMusic3]§e点歌被取消,音乐长度过长"; + timeOut = "[AllMusic3]点歌被取消,音乐长度过长"; } } diff --git a/core/objs/message/CancelObj.java b/core/objs/message/CancelObj.java index c0972388..80a3e18e 100644 --- a/core/objs/message/CancelObj.java +++ b/core/objs/message/CancelObj.java @@ -28,14 +28,14 @@ public class CancelObj { public void init() { if (err1 == null) - err1 = "§d[AllMusic3]§c你没有点歌"; + err1 = "[AllMusic3]你没有点歌"; if (err2 == null) - err2 = "§d[AllMusic3]§c歌曲" + ARG.musicName + "-" + ARG.musicAuthor + "不是你的点歌"; + err2 = "[AllMusic3]歌曲" + ARG.musicName + "-" + ARG.musicAuthor + "不是你的点歌"; if (err3 == null) - err3 = "§d[AllMusic3]§c没有找到序号为" + ARG.index + "的点歌"; + err3 = "[AllMusic3]没有找到序号为" + ARG.index + "的点歌"; if (err4 == null) - err4 = "§d[AllMusic3]§c输入的序号错误"; + err4 = "[AllMusic3]输入的序号错误"; if (done == null) - done = "§d[AllMusic3]§e已取消你的点歌"; + done = "[AllMusic3]已取消你的点歌"; } } diff --git a/core/objs/message/ClickObj.java b/core/objs/message/ClickObj.java index 12950d10..58b17465 100644 --- a/core/objs/message/ClickObj.java +++ b/core/objs/message/ClickObj.java @@ -19,8 +19,8 @@ public class ClickObj { public void init() { if (clickRun == null) - clickRun = "§b[§n点我选择§r§b]"; + clickRun = "[点我选择]"; if (clickCheck == null) - clickCheck = "§b[§n点我查看§r§b]"; + clickCheck = "[点我查看]"; } } diff --git a/core/objs/message/CommandObj.java b/core/objs/message/CommandObj.java index e81f2230..2c5d5c0b 100644 --- a/core/objs/message/CommandObj.java +++ b/core/objs/message/CommandObj.java @@ -19,8 +19,8 @@ public class CommandObj { public void init() { if (error == null) - error = "§d[AllMusic3]§c参数错误,请输入/music help获取帮助"; + error = "[AllMusic3]参数错误,请输入/music help获取帮助"; if (noPer == null) - noPer = "§d[AllMusic3]§c你没有权限执行这个操作"; + noPer = "[AllMusic3]你没有权限执行这个操作"; } } diff --git a/core/objs/message/CostObj.java b/core/objs/message/CostObj.java index 24f62dca..af9e8ed5 100644 --- a/core/objs/message/CostObj.java +++ b/core/objs/message/CostObj.java @@ -25,12 +25,12 @@ public class CostObj { public void init() { if (search == null) - search = "§d[AllMusic3]§e你搜歌花费了" + ARG.cost; + search = "[AllMusic3]你搜歌花费了" + ARG.cost; if (addMusic == null) - addMusic = "§d[AllMusic3]§e你点歌花费了" + ARG.cost; + addMusic = "[AllMusic3]你点歌花费了" + ARG.cost; if (noMoney == null) - noMoney = "§d[AllMusic3]§c你没有足够的钱"; + noMoney = "[AllMusic3]你没有足够的钱"; if (costFail == null) - costFail = "§d[AllMusic3]§c扣钱过程中错误"; + costFail = "[AllMusic3]扣钱过程中错误"; } } diff --git a/core/objs/message/FunObj.java b/core/objs/message/FunObj.java index 66c05d36..22ea777e 100644 --- a/core/objs/message/FunObj.java +++ b/core/objs/message/FunObj.java @@ -18,6 +18,6 @@ public class FunObj { public void init() { if (rain == null) - rain = "§d[AllMusic3]§e天空开始变得湿润"; + rain = "[AllMusic3]天空开始变得湿润"; } } diff --git a/core/objs/message/HelpAdminObj.java b/core/objs/message/HelpAdminObj.java index 5ea56352..a04030d0 100644 --- a/core/objs/message/HelpAdminObj.java +++ b/core/objs/message/HelpAdminObj.java @@ -10,7 +10,6 @@ public class HelpAdminObj { public String addList; public String addList1; public String clearList; - public String cookie; public String test; public String test1; public String unbanPlayer; @@ -55,45 +54,41 @@ public class HelpAdminObj { return true; if (clearBanList == null) return true; - if (clearBanPlayerList == null) - return true; - return cookie == null; + return clearBanPlayerList == null; } public void init() { if (reload == null) - reload = "§d[AllMusic3]§e使用/music reload 重读配置文件"; + reload = "[AllMusic3]使用/music reload 重读配置文件"; if (next == null) - next = "§d[AllMusic3]§e使用/music next 强制切歌"; + next = "[AllMusic3]使用/music next 强制切歌"; if (ban == null) - ban = "§d[AllMusic3]§e使用/music ban [ID] 禁止点这首歌"; + ban = "[AllMusic3]使用/music ban [ID] 禁止点这首歌"; if (ban1 == null) - ban1 = "§d[AllMusic3]§e使用/music ban [音乐API] [ID] 禁止点这首歌"; + ban1 = "[AllMusic3]使用/music ban [音乐API] [ID] 禁止点这首歌"; if (banPlayer == null) - banPlayer = "§d[AllMusic3]§e使用/music banplayer [ID] 禁止某位玩家点歌"; + banPlayer = "[AllMusic3]使用/music banplayer [ID] 禁止某位玩家点歌"; if (unban == null) - unban = "§d[AllMusic3]§e使用/music unban [ID] 解禁点这首歌"; + unban = "[AllMusic3]使用/music unban [ID] 解禁点这首歌"; if (unban1 == null) - unban1 = "§d[AllMusic3]§e使用/music unban [音乐API] [ID] 解禁点这首歌"; + unban1 = "[AllMusic3]使用/music unban [音乐API] [ID] 解禁点这首歌"; if (unbanPlayer == null) - unbanPlayer = "§d[AllMusic3]§e使用/music unbanplayer [ID] 解禁某位玩家点歌"; + unbanPlayer = "[AllMusic3]使用/music unbanplayer [ID] 解禁某位玩家点歌"; if (delete == null) - delete = "§d[AllMusic3]§e使用/music delete [序号] 删除队列中的歌曲"; + delete = "[AllMusic3]使用/music delete [序号] 删除队列中的歌曲"; if (addList == null) - addList = "§d[AllMusic3]§e使用/music addlist [歌单ID] 添加歌单到空闲列表"; + addList = "[AllMusic3]使用/music addlist [歌单ID] 添加歌单到空闲列表"; if (addList1 == null) - addList1 = "§d[AllMusic3]§e使用/music addlist [音乐API] [歌单ID] 添加歌单到空闲列表"; + addList1 = "[AllMusic3]使用/music addlist [音乐API] [歌单ID] 添加歌单到空闲列表"; if (clearList == null) - clearList = "§d[AllMusic3]§e使用/music clearlist 清空空闲歌单"; + clearList = "[AllMusic3]使用/music clearlist 清空空闲歌单"; if (clearBanList == null) - clearBanList = "§d[AllMusic3]§e使用/music clearban 清空禁止点歌列表"; + clearBanList = "[AllMusic3]使用/music clearban 清空禁止点歌列表"; if (clearBanPlayerList == null) - clearBanPlayerList = "§d[AllMusic3]§e使用/music clearbanplayer 清空禁止玩家点歌列表"; - if (cookie == null) - cookie = "§d[AllMusic3]§e使用/music cookie [cookie] 填写cookie"; + clearBanPlayerList = "[AllMusic3]使用/music clearbanplayer 清空禁止玩家点歌列表"; if (test == null) - test = "§d[AllMusic3]§e使用/music test [ID] 测试解析音乐"; + test = "[AllMusic3]使用/music test [ID] 测试解析音乐"; if (test1 == null) - test1 = "§d[AllMusic3]§e使用/music test [音乐API] [ID] 测试解析音乐"; + test1 = "[AllMusic3]使用/music test [音乐API] [ID] 测试解析音乐"; } } diff --git a/core/objs/message/HelpNormalObj.java b/core/objs/message/HelpNormalObj.java index 92e9738b..90c5157b 100644 --- a/core/objs/message/HelpNormalObj.java +++ b/core/objs/message/HelpNormalObj.java @@ -88,54 +88,54 @@ public class HelpNormalObj { public void init() { if (head == null) - head = "§d[AllMusic3]§e帮助手册"; + head = "[AllMusic3]帮助手册"; if (base == null) - base = "§d[AllMusic3]§e/music [音乐ID] 来点歌"; + base = "[AllMusic3]/music [音乐ID] 来点歌"; if (stop == null) - stop = "§d[AllMusic3]§e/music stop 停止播放歌曲"; + stop = "[AllMusic3]/music stop 停止播放歌曲"; if (list == null) - list = "§d[AllMusic3]§e/music list 查看歌曲队列"; + list = "[AllMusic3]/music list 查看歌曲队列"; if (cancel == null) - cancel = "§d[AllMusic3]§e/music cancel (序号) 取消你的点歌"; + cancel = "[AllMusic3]/music cancel (序号) 取消你的点歌"; if (vote == null) - vote = "§d[AllMusic3]§e/music vote 投票切歌"; + vote = "[AllMusic3]/music vote 投票切歌"; if (vote1 == null) - vote1 = "§d[AllMusic3]§e/music vote cancel 取消发起的切歌"; + vote1 = "[AllMusic3]/music vote cancel 取消发起的切歌"; if (push == null) - push = "§d[AllMusic3]§e/music push (序号) 投票将歌曲插入到队列头"; + push = "[AllMusic3]/music push (序号) 投票将歌曲插入到队列头"; if (push1 == null) - push1 = "§d[AllMusic3]§e/music push cancel 取消发起的插歌"; + push1 = "[AllMusic3]/music push cancel 取消发起的插歌"; if (mute == null) - mute = "§d[AllMusic3]§e/music mute 不再参与点歌"; + mute = "[AllMusic3]/music mute 不再参与点歌"; if (mutelist == null) - mutelist = "§d[AllMusic3]§e/music mute list 不再接收空闲列表点歌"; + mutelist = "[AllMusic3]/music mute list 不再接收空闲列表点歌"; if (search == null) - search = "§d[AllMusic3]§e/music search [歌名] 搜索歌曲"; + search = "[AllMusic3]/music search [歌名] 搜索歌曲"; if (select == null) - select = "§d[AllMusic3]§e/music select [序列] 选择歌曲"; + select = "[AllMusic3]/music select [序列] 选择歌曲"; if (nextpage == null) - nextpage = "§d[AllMusic3]§e/music nextpage 切换下一页歌曲搜索结果"; + nextpage = "[AllMusic3]/music nextpage 切换下一页歌曲搜索结果"; if (lastpage == null) - lastpage = "§d[AllMusic3]§e/music lastpage 切换上一页歌曲搜索结果"; + lastpage = "[AllMusic3]/music lastpage 切换上一页歌曲搜索结果"; if (hud9 == null) - hud9 = "§d[AllMusic3]§e/music hud enable 启用/关闭全部界面"; + hud9 = "[AllMusic3]/music hud enable 启用/关闭全部界面"; if (hud10 == null) - hud10 = "§d[AllMusic3]§e/music hud reset 重置全部界面"; + hud10 = "[AllMusic3]/music hud reset 重置全部界面"; if (hud1 == null) - hud1 = "§d[AllMusic3]§e/music hud [位置] enable 启用关闭单一界面"; + hud1 = "[AllMusic3]/music hud [位置] enable 启用关闭单一界面"; if (hud2 == null) - hud2 = "§d[AllMusic3]§e/music hud [位置] pos [x] [y] 设置某个界面的位置"; + hud2 = "[AllMusic3]/music hud [位置] pos [x] [y] 设置某个界面的位置"; if (hud6 == null) - hud6 = "§d[AllMusic3]§e/music hud [位置] dir [对齐方式] 设置某个界面的对齐方式"; + hud6 = "[AllMusic3]/music hud [位置] dir [对齐方式] 设置某个界面的对齐方式"; if (hud7 == null) - hud7 = "§d[AllMusic3]§e/music hud [位置] color [颜色HEX] 设置某个界面的颜色"; + hud7 = "[AllMusic3]/music hud [位置] color [颜色HEX] 设置某个界面的颜色"; if (hud8 == null) - hud8 = "§d[AllMusic3]§e/music hud [位置] reset 重置单一界面"; + hud8 = "[AllMusic3]/music hud [位置] reset 重置单一界面"; if (hud3 == null) - hud3 = "§d[AllMusic3]§e/music hud pic size [尺寸] 设置图片尺寸"; + hud3 = "[AllMusic3]/music hud pic size [尺寸] 设置图片尺寸"; if (hud4 == null) - hud4 = "§d[AllMusic3]§e/music hud pic rotate [开关] 设置图片旋转模式"; + hud4 = "[AllMusic3]/music hud pic rotate [开关] 设置图片旋转模式"; if (hud5 == null) - hud5 = "§d[AllMusic3]§e/music hud pic speed [数值] 设置图片旋转速度"; + hud5 = "[AllMusic3]/music hud pic speed [数值] 设置图片旋转速度"; } } diff --git a/core/objs/message/HudObj.java b/core/objs/message/HudObj.java index bd169203..50105c2b 100644 --- a/core/objs/message/HudObj.java +++ b/core/objs/message/HudObj.java @@ -61,17 +61,17 @@ public class HudObj { public void init() { if (state == null) - state = "§d[AllMusic3]§e设置信息位置:" + ARG.hud + ",状态:" + ARG.state; + state = "[AllMusic3]设置信息位置:" + ARG.hud + ",状态:" + ARG.state; if (set == null) - set = "§d[AllMusic3]§e已设置[" + ARG.hud + "]的坐标为[" + ARG.x + ", " + ARG.y + "]"; + set = "[AllMusic3]已设置[" + ARG.hud + "]的坐标为[" + ARG.x + ", " + ARG.y + "]"; if (set1 == null) - set1 = "§d[AllMusic3]§e已设置[" + ARG.hud + "]的对齐方式为[" + ARG.dir + "]"; + set1 = "[AllMusic3]已设置[" + ARG.hud + "]的对齐方式为[" + ARG.dir + "]"; if (set2 == null) - set2 = "§d[AllMusic3]§e已设置[" + ARG.hud + "]的颜色为[" + ARG.color + "]"; + set2 = "[AllMusic3]已设置[" + ARG.hud + "]的颜色为[" + ARG.color + "]"; if (set3 == null) - set3 = "§d[AllMusic3]§e已设置[" + ARG.hud + "]的阴影为[" + ARG.state + "]"; + set3 = "[AllMusic3]已设置[" + ARG.hud + "]的阴影为[" + ARG.state + "]"; if (reset == null) - reset = "§d[AllMusic3]§e界面[" + ARG.hud + "]恢复至默认位置"; + reset = "[AllMusic3]界面[" + ARG.hud + "]恢复至默认位置"; if (emptyMusic == null) emptyMusic = "没有播放的音乐"; if (emptyList == null) @@ -79,11 +79,11 @@ public class HudObj { if (emptyLyric == null) emptyLyric = "无歌词"; if (picSize == null) - picSize = "§d[AllMusic3]§e设置图片尺寸为[" + ARG.size + "]"; + picSize = "[AllMusic3]设置图片尺寸为[" + ARG.size + "]"; if (picRotate == null) - picRotate = "§d[AllMusic3]§e设置图片旋转为[" + ARG.state + "]"; + picRotate = "[AllMusic3]设置图片旋转为[" + ARG.state + "]"; if (picSpeed == null) - picSpeed = "§d[AllMusic3]§e设置图片旋转速度为[" + ARG.size + "]"; + picSpeed = "[AllMusic3]设置图片旋转速度为[" + ARG.size + "]"; if (music == null) music = ARG.name + " " + ARG.allTime + "/" + ARG.nowTime + "\n" + ARG.musicAuthor + "\n" + ARG.musicAlia + "\n" + ARG.musicAl diff --git a/core/objs/message/ListMusicObj.java b/core/objs/message/ListMusicObj.java index 71ed7c0c..bf62efde 100644 --- a/core/objs/message/ListMusicObj.java +++ b/core/objs/message/ListMusicObj.java @@ -24,11 +24,11 @@ public class ListMusicObj { public void init() { if (head == null) - head = "§d[AllMusic3]§e队列中有歌曲数:" + ARG.count; + head = "[AllMusic3]队列中有歌曲数:" + ARG.count; if (item == null) - item = "§e" + ARG.index + "->" + ARG.musicName + " | " + ARG.musicAuthor + item = "" + ARG.index + "->" + ARG.musicName + " | " + ARG.musicAuthor + " | " + ARG.musicAl + " | " + ARG.musicAlia + " | by: " + ARG.player; if (get == null) - get = "§d[AllMusic3]§e歌曲列表" + ARG.name + "获取成功"; + get = "[AllMusic3]歌曲列表" + ARG.name + "获取成功"; } } diff --git a/core/objs/message/MusicPlayObj.java b/core/objs/message/MusicPlayObj.java index a87094f6..b21004e4 100644 --- a/core/objs/message/MusicPlayObj.java +++ b/core/objs/message/MusicPlayObj.java @@ -69,43 +69,43 @@ public class MusicPlayObj { public void init() { if (stopPlaying == null) - stopPlaying = "§d[AllMusic3]§e已停止你的音乐播放"; + stopPlaying = "[AllMusic3]已停止你的音乐播放"; if (emptyPlayingMusic == null) - emptyPlayingMusic = "§d[AllMusic3]§e无正在播放的歌曲"; + emptyPlayingMusic = "[AllMusic3]无正在播放的歌曲"; if (nowPlay == null) - nowPlay = "§d[AllMusic3]§e正在播放:" + ARG.musicName + " | " + ARG.musicAuthor + nowPlay = "[AllMusic3]正在播放:" + ARG.musicName + " | " + ARG.musicAuthor + " by: " + ARG.player; if (emptyPlay == null) - emptyPlay = "§d[AllMusic3]§e队列中无歌曲"; + emptyPlay = "[AllMusic3]队列中无歌曲"; if (listMusic == null) listMusic = ListMusicObj.make(); if (emptyCanPlay == null) - emptyCanPlay = "§d[AllMusic3]§c无法播放歌曲" + ARG.musicId + "可能该歌曲为VIP歌曲"; + emptyCanPlay = "[AllMusic3]无法播放歌曲" + ARG.musicId + "可能该歌曲为VIP歌曲"; if (mute == null) - mute = "§d[AllMusic3]§e你不会再收到点歌了!想要再次参与点歌就点一首歌吧!或者再输入一次指令恢复"; + mute = "[AllMusic3]你不会再收到点歌了!想要再次参与点歌就点一首歌吧!或者再输入一次指令恢复"; if (mute1 == null) - mute1 = "§d[AllMusic3]§e你不会再收到空闲歌单点歌了,再输入一次指令恢复"; + mute1 = "[AllMusic3]你不会再收到空闲歌单点歌了,再输入一次指令恢复"; if (mute2 == null) - mute2 = "§d[AllMusic3]§e你将开始收到空闲歌单点歌"; + mute2 = "[AllMusic3]你将开始收到空闲歌单点歌"; if (mute3 == null) - mute3 = "§d[AllMusic3]§e你将开始收到点歌"; + mute3 = "[AllMusic3]你将开始收到点歌"; if (switchMusic == null) - switchMusic = "§d[AllMusic3]§e切换到玩家歌曲"; + switchMusic = "[AllMusic3]切换到玩家歌曲"; if (addMusic == null) - addMusic = "§d[AllMusic3]§e音乐列表添加" + ARG.musicName + " | " + ARG.musicAuthor + addMusic = "[AllMusic3]音乐列表添加" + ARG.musicName + " | " + ARG.musicAuthor + " | " + ARG.musicAl + " | " + ARG.musicAlia + " | by: " + ARG.player; if (checkMusic == null) - checkMusic = "§d[AllMusic3]§e正在解析歌曲" + ARG.musicId; + checkMusic = "[AllMusic3]正在解析歌曲" + ARG.musicId; if (musicInfo == null) musicInfo = ARG.musicName + " | " + ARG.musicAuthor + " | " + ARG.musicAl + " | " + ARG.musicAlia + " | by: " + ARG.player; if (trail == null) - trail = "§d[AllMusic3]§e该音乐为试听音乐"; + trail = "[AllMusic3]该音乐为试听音乐"; if (cancel == null) - cancel = "§d[AllMusic3]§e播放被取消"; + cancel = "[AllMusic3]播放被取消"; if (error1 == null) - error1 = "§d[AllMusic3]§c未知音乐类型"; + error1 = "[AllMusic3]未知音乐类型"; if (error2 == null) - error2 = "§d[AllMusic3]§c未知音乐API"; + error2 = "[AllMusic3]未知音乐API"; } } diff --git a/core/objs/message/PageObj.java b/core/objs/message/PageObj.java index 63983840..c9d4c882 100644 --- a/core/objs/message/PageObj.java +++ b/core/objs/message/PageObj.java @@ -24,10 +24,10 @@ public class PageObj { public void init() { if (choice == null) - choice = "§e" + ARG.index + "->" + ARG.musicName + " | " + ARG.musicAuthor + " | " + ARG.musicAl; + choice = "" + ARG.index + "->" + ARG.musicName + " | " + ARG.musicAuthor + " | " + ARG.musicAl; if (next == null) - next = "§e[§n点我下一页§r§e]"; + next = "[点我下一页]"; if (last == null) - last = "§e[§n点我上一页§r§e]"; + last = "[点我上一页]"; } } diff --git a/core/objs/message/PushObj.java b/core/objs/message/PushObj.java index e118d6be..864b4b44 100644 --- a/core/objs/message/PushObj.java +++ b/core/objs/message/PushObj.java @@ -67,40 +67,40 @@ public class PushObj { public void init() { if (noPermission == null) - noPermission = "§d[AllMusic3]§c你没有权限插歌"; + noPermission = "[AllMusic3]你没有权限插歌"; if (doVote == null) - doVote = "§d[AllMusic3]§e已发起插歌投票"; + doVote = "[AllMusic3]已发起插歌投票"; if (bq == null) - bq = "§d[AllMusic3]§e" + ARG.player + "发起了插歌投票,将曲目" + ARG.musicName + "-" + ARG.musicAuthor + "调整到下一首播放," + ARG.time + "秒后结束,输入/music push 同意插歌。"; + bq = "[AllMusic3]" + ARG.player + "发起了插歌投票,将曲目" + ARG.musicName + "-" + ARG.musicAuthor + "调整到下一首播放," + ARG.time + "秒后结束,输入/music push 同意插歌。"; if (bq1 == null) - bq1 = "§d[AllMusic3]§e或者点击 "; + bq1 = "[AllMusic3]或者点击 "; if (bq2 == null) - bq2 = "§a同意插歌"; + bq2 = "同意插歌"; if (agree == null) - agree = "§d[AllMusic3]§e你同意插歌"; + agree = "[AllMusic3]你同意插歌"; if (bqAgree == null) - bqAgree = "§d[AllMusic3]§e" + ARG.player + "同意插歌,共有" + ARG.count + "名玩家同意插歌。"; + bqAgree = "[AllMusic3]" + ARG.player + "同意插歌,共有" + ARG.count + "名玩家同意插歌。"; if (arAgree == null) - arAgree = "§d[AllMusic3]§e你已申请插歌"; + arAgree = "[AllMusic3]你已申请插歌"; if (timeOut == null) - timeOut = "§d[AllMusic3]§e插歌时间结束"; + timeOut = "[AllMusic3]插歌时间结束"; if (doPush == null) - doPush = "§d[AllMusic3]§e播放顺序已调整"; + doPush = "[AllMusic3]播放顺序已调整"; if (noId == null) - noId = "§d[AllMusic3]§c没有找到你的点歌"; + noId = "[AllMusic3]没有找到你的点歌"; if (noId1 == null) - noId1 = "§d[AllMusic3]§c没有找到序号为" + ARG.index + "的点歌"; + noId1 = "[AllMusic3]没有找到序号为" + ARG.index + "的点歌"; if (idErr == null) - idErr = "§d[AllMusic3]§c错误的歌曲序号"; + idErr = "[AllMusic3]错误的歌曲序号"; if (pushErr == null) - pushErr = "§d[AllMusic3]§c这首歌已经是下一首播放了"; + pushErr = "[AllMusic3]这首歌已经是下一首播放了"; if (err1 == null) - err1 = "§d[AllMusic3]§c你没有发起插歌"; + err1 = "[AllMusic3]你没有发起插歌"; if (err2 == null) - err2 = "§d[AllMusic3]§c你发起的插歌已超时"; + err2 = "[AllMusic3]你发起的插歌已超时"; if (err3 == null) - err3 = "§d[AllMusic3]§c发起失败,已经有人发起了插歌投票"; + err3 = "[AllMusic3]发起失败,已经有人发起了插歌投票"; if (cancel == null) - cancel = "§d[AllMusic3]§e插歌投票已被发起者取消"; + cancel = "[AllMusic3]插歌投票已被发起者取消"; } } diff --git a/core/objs/message/SearchObj.java b/core/objs/message/SearchObj.java index 76de0ffb..48f67b3f 100644 --- a/core/objs/message/SearchObj.java +++ b/core/objs/message/SearchObj.java @@ -10,7 +10,8 @@ public class SearchObj { public String cantNext; public String cantLast; public String startSearch; - public String error1; + public String lastPage; + public String nextPage; public static SearchObj make() { SearchObj obj = new SearchObj(); @@ -36,28 +37,36 @@ public class SearchObj { return true; if (cantLast == null) return true; + if (lastPage == null) + return true; + if (nextPage == null) + return true; return startSearch == null; } public void init() { if (startSearch == null) - startSearch = "§d[AllMusic3]§e正在排队搜歌"; + startSearch = "[AllMusic3]正在排队搜歌"; if (noPer == null) - noPer = "§d[AllMusic3]§c你没有权限搜歌"; + noPer = "[AllMusic3]你没有权限搜歌"; if (cantSearch == null) - cantSearch = "§d[AllMusic3]§c无法搜索歌曲:" + ARG.name; + cantSearch = "[AllMusic3]无法搜索歌曲:" + ARG.name; if (res == null) - res = "§d[AllMusic3]§e搜索结果"; + res = "[AllMusic3]搜索结果"; if (emptySearch == null) - emptySearch = "§d[AllMusic3]§c你没有搜索音乐"; + emptySearch = "[AllMusic3]你没有搜索音乐"; if (errorNum == null) - errorNum = "§d[AllMusic3]§c请输入正确的序号"; + errorNum = "[AllMusic3]请输入正确的序号"; if (choice == null) - choice = "§d[AllMusic3]§e你选择了序号:" + ARG.index; + choice = "[AllMusic3]你选择了序号:" + ARG.index; if (cantNext == null) - cantNext = "§d[AllMusic3]§c无法下一页"; + cantNext = "[AllMusic3]无法下一页"; if (cantLast == null) - cantLast = "§d[AllMusic3]§c无法上一页"; + cantLast = "[AllMusic3]无法上一页"; + if (lastPage == null) + lastPage = "[AllMusic3]输入/music lastpage上一页"; + if (nextPage == null) + nextPage = "[AllMusic3]输入/music nextpage下一页"; } } diff --git a/core/objs/message/VoteObj.java b/core/objs/message/VoteObj.java index eb6de1f5..c8c91e2e 100644 --- a/core/objs/message/VoteObj.java +++ b/core/objs/message/VoteObj.java @@ -55,32 +55,32 @@ public class VoteObj { public void init() { if (noPermission == null) - noPermission = "§d[AllMusic3]§c你没有权限切歌"; + noPermission = "[AllMusic3]你没有权限切歌"; if (doVote == null) - doVote = "§d[AllMusic3]§e已发起切歌投票"; + doVote = "[AllMusic3]已发起切歌投票"; if (bq == null) - bq = "§d[AllMusic3]§e" + ARG.player + "发起了切歌投票," + ARG.time + "秒后结束,输入/music vote 同意切歌。"; + bq = "[AllMusic3]" + ARG.player + "发起了切歌投票," + ARG.time + "秒后结束,输入/music vote 同意切歌。"; if (bq1 == null) - bq1 = "§d[AllMusic3]§e或者点击 "; + bq1 = "[AllMusic3]或者点击 "; if (bq2 == null) - bq2 = "§a同意切歌"; + bq2 = "同意切歌"; if (agree == null) - agree = "§d[AllMusic3]§e你同意切歌"; + agree = "[AllMusic3]你同意切歌"; if (bqAgree == null) - bqAgree = "§d[AllMusic3]§e" + ARG.player + "同意切歌,共有" + ARG.count + "名玩家同意切歌。"; + bqAgree = "[AllMusic3]" + ARG.player + "同意切歌,共有" + ARG.count + "名玩家同意切歌。"; if (arAgree == null) - arAgree = "§d[AllMusic3]§e你已申请切歌"; + arAgree = "[AllMusic3]你已申请切歌"; if (timeOut == null) - timeOut = "§d[AllMusic3]§e切歌时间结束"; + timeOut = "[AllMusic3]切歌时间结束"; if (err1 == null) - err1 = "§d[AllMusic3]§c你没有发起切歌"; + err1 = "[AllMusic3]你没有发起切歌"; if (err2 == null) - err2 = "§d[AllMusic3]§c你发起的切歌已超时"; + err2 = "[AllMusic3]你发起的切歌已超时"; if (err3 == null) - err3 = "§d[AllMusic3]§c已经有人发起了切歌"; + err3 = "[AllMusic3]已经有人发起了切歌"; if (voteDone == null) - voteDone = "§d[AllMusic3]§e已切歌"; + voteDone = "[AllMusic3]已切歌"; if (cancel == null) - cancel = "§d[AllMusic3]§e切歌投票已被发起者取消"; + cancel = "[AllMusic3]切歌投票已被发起者取消"; } } diff --git a/core/objs/music/SearchPageObj.java b/core/objs/music/SearchPageObj.java index 54ddd059..2c8fb1ea 100644 --- a/core/objs/music/SearchPageObj.java +++ b/core/objs/music/SearchPageObj.java @@ -7,8 +7,8 @@ import java.util.List; public class SearchPageObj { private final List resData; private final int maxpage; - private int page = 0; private final String api; + private int page = 0; public SearchPageObj(List resData, int maxpage, String api) { this.resData = resData; @@ -17,7 +17,7 @@ public class SearchPageObj { } public String getSong(int index) { - return resData.get(index).id; + return resData.get(index).id(); } public SearchMusicObj getRes(int a) { diff --git a/core/side/BaseSide.java b/core/side/BaseSide.java index 48160502..947394dd 100644 --- a/core/side/BaseSide.java +++ b/core/side/BaseSide.java @@ -7,6 +7,7 @@ import com.coloryr.allmusic.server.core.AllMusic; import com.coloryr.allmusic.server.core.objs.music.PlayerAddMusicObj; import com.coloryr.allmusic.server.core.objs.music.SongInfoObj; import com.coloryr.allmusic.server.core.utils.HudUtils; +import net.kyori.adventure.text.Component; import java.io.File; import java.util.Collection; @@ -107,7 +108,7 @@ public abstract class BaseSide { * @param player 玩家 * @param data 消息 */ - public abstract void sendBar(Object player, String data); + public abstract void sendBar(Object player, Component data); /** * 获取插件配置文件夹 @@ -122,27 +123,7 @@ public abstract class BaseSide { * @param obj 接受对象 * @param message 消息 */ - public abstract void sendMessage(Object obj, String message); - - /** - * 发送执行指令 - * - * @param obj 接受对象 - * @param message 消息 - * @param end 结尾 - * @param command 指令 - */ - public abstract void sendMessageRun(Object obj, String message, String end, String command); - - /** - * 发送推荐指令 - * - * @param obj 接受对象 - * @param message 消息 - * @param end 结尾 - * @param command 指令 - */ - public abstract void sendMessageSuggest(Object obj, String message, String end, String command); + public abstract void sendMessage(Object obj, Component message); /** * 当歌曲添加时触发的事件 @@ -166,16 +147,7 @@ public abstract class BaseSide { * * @param data 消息 */ - public abstract void broadcast(String data); - - /** - * 广播点击消息 - * - * @param message 消息 - * @param end 结尾 - * @param command 指令 - */ - public abstract void broadcastWithRun(String message, String end, String command); + public abstract void broadcast(Component data); /** * 重载 @@ -199,7 +171,7 @@ public abstract class BaseSide { try { send(player1, CommandType.POS, null, pos); } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic]§c清空Hud发生出错"); + AllMusic.log.warning("[AllMusic]清空Hud发生出错"); e.printStackTrace(); } } @@ -217,7 +189,7 @@ public abstract class BaseSide { try { send(player, CommandType.STOP, null, 0); } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic]§c停止指令发送出错"); + AllMusic.log.warning("[AllMusic]停止指令发送出错"); e.printStackTrace(); } } @@ -232,7 +204,7 @@ public abstract class BaseSide { send(player, CommandType.STOP, null, 0); } } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic]§c停止指令发送出错"); + AllMusic.log.warning("[AllMusic]停止指令发送出错"); e.printStackTrace(); } } @@ -253,7 +225,7 @@ public abstract class BaseSide { return; send(player1, CommandType.PLAY, url, 0); } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic]§c歌曲指令发送出错"); + AllMusic.log.warning("[AllMusic]歌曲指令发送出错"); e.printStackTrace(); } } @@ -277,7 +249,7 @@ public abstract class BaseSide { continue; send(player, CommandType.LYRIC, data, 0); } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic]§c歌词发送出错"); + AllMusic.log.warning("[AllMusic]歌词发送出错"); e.printStackTrace(); } } @@ -302,7 +274,7 @@ public abstract class BaseSide { continue; send(player, CommandType.INFO, data, 0); } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic]§c歌词信息发送出错"); + AllMusic.log.warning("[AllMusic]歌词信息发送出错"); e.printStackTrace(); } } @@ -324,7 +296,7 @@ public abstract class BaseSide { String data = AllMusic.gson.toJson(obj); send(player, CommandType.HUD_DATA, data, 0); } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic]§c界面位置发送出错"); + AllMusic.log.warning("[AllMusic]界面位置发送出错"); e.printStackTrace(); } } @@ -358,7 +330,7 @@ public abstract class BaseSide { break; } } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic]§c停止指令发送出错"); + AllMusic.log.warning("[AllMusic]停止指令发送出错"); e.printStackTrace(); } } @@ -382,7 +354,7 @@ public abstract class BaseSide { continue; send(player, CommandType.LIST, data, 0); } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic]§c歌曲列表发送出错"); + AllMusic.log.warning("[AllMusic]歌曲列表发送出错"); e.printStackTrace(); } } @@ -402,7 +374,7 @@ public abstract class BaseSide { String data = AllMusic.gson.toJson(obj); send(player, CommandType.HUD_DATA, data, 0); } catch (Exception e1) { - AllMusic.log.warning("§d[AllMusic]§c数据发送发生错误"); + AllMusic.log.warning("[AllMusic]数据发送发生错误"); e1.printStackTrace(); } } @@ -413,7 +385,7 @@ public abstract class BaseSide { * * @param data 数据 */ - public final void sendBar(String data) { + public final void sendBar(Component data) { for (Object player : getPlayers()) { String name = getPlayerName(player); if (name == null) @@ -424,7 +396,7 @@ public abstract class BaseSide { continue; sendBar(player, data); } catch (Exception e1) { - AllMusic.log.warning("§d[AllMusic]§c数据发送发生错误"); + AllMusic.log.warning("[AllMusic]数据发送发生错误"); e1.printStackTrace(); } } @@ -447,7 +419,7 @@ public abstract class BaseSide { send(player, CommandType.PLAY, url, 0); AllMusic.addNowPlayPlayer(name); } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic]§c歌曲指令发送出错"); + AllMusic.log.warning("[AllMusic]歌曲指令发送出错"); e.printStackTrace(); } } @@ -472,7 +444,7 @@ public abstract class BaseSide { try { send(player, CommandType.IMG, url, 0); } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic]§c图片指令发送出错"); + AllMusic.log.warning("[AllMusic]图片指令发送出错"); e.printStackTrace(); } } @@ -493,7 +465,7 @@ public abstract class BaseSide { try { send(player1, CommandType.IMG, url, 0); } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic]§c图片指令发送出错"); + AllMusic.log.warning("[AllMusic]图片指令发送出错"); e.printStackTrace(); } } @@ -510,7 +482,7 @@ public abstract class BaseSide { try { send(player, CommandType.CLEAR, null, 0); } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic]§c清空Hud发生出错"); + AllMusic.log.warning("[AllMusic]清空Hud发生出错"); e.printStackTrace(); } } @@ -523,7 +495,7 @@ public abstract class BaseSide { try { send(player, CommandType.CLEAR, null, 0); } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic]§c清空Hud发生出错"); + AllMusic.log.warning("[AllMusic]清空Hud发生出错"); e.printStackTrace(); } } @@ -534,10 +506,19 @@ public abstract class BaseSide { * * @param data 消息 */ - public final void broadcastInTask(String data) { + public final void broadcastInTask(Component data) { runTask(() -> broadcast(data)); } + /** + * 在主线程中广播消息 + * + * @param data 消息 + */ + public final void broadcastInTask(String data) { + broadcastInTask(AllMusic.miniMessage(data)); + } + /** * 在主线程发送消息 * @@ -545,7 +526,26 @@ public abstract class BaseSide { * @param message 消息 */ public final void sendMessageTask(Object obj, String message) { - runTask(() -> sendMessage(obj, message)); + runTask(() -> sendMessage(obj, AllMusic.miniMessage(message))); + } + + /** + * 广播消息 + * + * @param data 消息 + */ + public final void broadcast(String data) { + broadcast(AllMusic.miniMessage(data)); + } + + /** + * 发送消息 + * + * @param obj 接受对象 + * @param message 消息 + */ + public final void sendMessage(Object obj, String message) { + sendMessage(obj, AllMusic.miniMessage(message)); } /** @@ -568,4 +568,20 @@ public abstract class BaseSide { public void ping() { } + + /*** + * 在主线程中广播 + * @param data 数据 + */ + public void sendBarInTask(Component data) { + runTask(() -> sendBar(data)); + } + + /*** + * 在主线程中广播 + * @param data 数据 + */ + public void sendBarInTask(String data) { + sendBarInTask(AllMusic.miniMessage(data)); + } } diff --git a/core/side/IMyLogger.java b/core/side/IAllMusicLogger.java similarity index 75% rename from core/side/IMyLogger.java rename to core/side/IAllMusicLogger.java index ed347d04..5541e244 100644 --- a/core/side/IMyLogger.java +++ b/core/side/IAllMusicLogger.java @@ -1,6 +1,6 @@ package com.coloryr.allmusic.server.core.side; -public interface IMyLogger { +public interface IAllMusicLogger { void warning(String data); void info(String data); diff --git a/core/sql/DataSql.java b/core/sql/DataSql.java index 99293ca8..478eae88 100644 --- a/core/sql/DataSql.java +++ b/core/sql/DataSql.java @@ -92,7 +92,7 @@ public class DataSql { */ public static void init() { try { - AllMusic.log.info("正在初始化数据库"); + AllMusic.log.info("[AllMusic3]正在初始化数据库"); if (connection != null) connection.close(); Class.forName("org.sqlite.JDBC"); @@ -107,6 +107,7 @@ public class DataSql { stat.close(); Cache.updateData(); + AllMusic.log.info("[AllMusic3]数据库初始化完成"); } catch (Exception e) { e.printStackTrace(); } diff --git a/core/utils/HudUtils.java b/core/utils/HudUtils.java index de159966..b3a8b92e 100644 --- a/core/utils/HudUtils.java +++ b/core/utils/HudUtils.java @@ -271,7 +271,7 @@ public class HudUtils { } AllMusic.side.sendHudPos(player); } catch (Exception e1) { - AllMusic.log.warning("§d[AllMusic3]§c数据发送发生错误"); + AllMusic.log.warning("[AllMusic3]数据发送发生错误"); e1.printStackTrace(); } }); diff --git a/fabric_1_16_5/build.gradle b/fabric_1_16_5/build.gradle index e1f6e807..febcbdb8 100644 --- a/fabric_1_16_5/build.gradle +++ b/fabric_1_16_5/build.gradle @@ -27,6 +27,12 @@ repositories { // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. // See https://docs.gradle.org/current/userguide/declaring_repositories.html // for more information about repositories. + + maven { + name = 'sonatype-oss-snapshots1' + url = 'https://s01.oss.sonatype.org/content/repositories/snapshots/' + mavenContent { snapshotsOnly() } + } } dependencies { @@ -38,7 +44,9 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" modImplementation "net.fabricmc:fabric-language-kotlin:${project.fabric_kotlin_version}" + modImplementation include('net.kyori:adventure-platform-fabric:4.0.0') // for Minecraft 1.21.11 + include modImplementation('net.kyori:adventure-text-minimessage:4.26.1') include modImplementation('org.apache.httpcomponents.client5:httpclient5:5.6') include modImplementation('org.apache.httpcomponents.core5:httpcore5:5.4') include modImplementation('org.apache.httpcomponents.core5:httpcore5-h2:5.4') diff --git a/fabric_1_16_5/src/main/java/com/coloryr/allmusic/server/AllMusicServer.java b/fabric_1_16_5/src/main/java/com/coloryr/allmusic/server/AllMusicServer.java index 9f4c37f8..5098faca 100644 --- a/fabric_1_16_5/src/main/java/com/coloryr/allmusic/server/AllMusicServer.java +++ b/fabric_1_16_5/src/main/java/com/coloryr/allmusic/server/AllMusicServer.java @@ -4,6 +4,7 @@ import com.coloryr.allmusic.server.core.AllMusic; import net.fabricmc.api.DedicatedServerModInitializer; import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; +import net.kyori.adventure.platform.fabric.FabricServerAudiences; import net.minecraft.server.MinecraftServer; import net.minecraft.util.Identifier; import org.apache.logging.log4j.LogManager; @@ -15,6 +16,7 @@ public class AllMusicServer implements DedicatedServerModInitializer { public static final Logger LOGGER = LogManager.getLogger("AllMusic Server"); public static final Identifier ID = new Identifier("allmusic", "channel"); public static MinecraftServer server; + public static FabricServerAudiences adventure; public static final String dir = "allmusic_server/"; @@ -24,17 +26,18 @@ public class AllMusicServer implements DedicatedServerModInitializer { AllMusic.log = new LogFabric(); AllMusic.side = new SideFabric(); - new AllMusic().init(new File(dir)); - CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> CommandFabric.instance.register(dispatcher)); ServerLifecycleEvents.SERVER_STARTED.register((a) -> { + adventure = FabricServerAudiences.of(a); + new AllMusic().init(new File(dir)); server = a; AllMusic.start(); Tasks.init(); }); ServerLifecycleEvents.SERVER_STOPPING.register((a) -> { + adventure = null; AllMusic.stop(); }); } diff --git a/fabric_1_16_5/src/main/java/com/coloryr/allmusic/server/FabricApi.java b/fabric_1_16_5/src/main/java/com/coloryr/allmusic/server/FabricApi.java deleted file mode 100644 index a8ae3577..00000000 --- a/fabric_1_16_5/src/main/java/com/coloryr/allmusic/server/FabricApi.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.coloryr.allmusic.server; - -import com.coloryr.allmusic.server.mixin.IGetCommandOutput; -import net.minecraft.network.packet.s2c.play.TitleS2CPacket; -import net.minecraft.server.command.ServerCommandSource; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.text.ClickEvent; -import net.minecraft.text.LiteralText; -import net.minecraft.util.Util; - -public class FabricApi { - - public static void sendMessageRun(ServerCommandSource obj, String message, String end, String command) { - IGetCommandOutput output = (IGetCommandOutput) obj; - if (output.getSilent()) { - return; - } - LiteralText send = new LiteralText(message); - LiteralText endText = new LiteralText(end); - endText.setStyle(endText.getStyle().withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, command))); - send.append(endText); - output.getOutput().sendSystemMessage(send, Util.NIL_UUID); - } - - public static void sendMessageSuggest(ServerCommandSource obj, String message, String end, String command) { - IGetCommandOutput output = (IGetCommandOutput) obj; - if (output.getSilent()) { - return; - } - LiteralText send = new LiteralText(message); - LiteralText endText = new LiteralText(end); - endText.setStyle(endText.getStyle().withClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, command))); - send.append(endText); - output.getOutput().sendSystemMessage(send, Util.NIL_UUID); - } - - public static void sendBar(ServerPlayerEntity player, String message) { - TitleS2CPacket pack = new TitleS2CPacket(TitleS2CPacket.Action.ACTIONBAR, new LiteralText(message)); - player.networkHandler.sendPacket(pack); - } - - public static void sendMessageBqRun(String message, String end, String command) { - LiteralText send = new LiteralText(message); - LiteralText endText = new LiteralText(end); - endText.setStyle(endText.getStyle().withClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, command))); - send.append(endText); - for (ServerPlayerEntity player : AllMusicServer.server.getPlayerManager().getPlayerList()) { - player.sendMessage(send, false); - } - } -} diff --git a/fabric_1_16_5/src/main/java/com/coloryr/allmusic/server/LogFabric.java b/fabric_1_16_5/src/main/java/com/coloryr/allmusic/server/LogFabric.java index df6c69ed..500971ca 100644 --- a/fabric_1_16_5/src/main/java/com/coloryr/allmusic/server/LogFabric.java +++ b/fabric_1_16_5/src/main/java/com/coloryr/allmusic/server/LogFabric.java @@ -1,8 +1,8 @@ package com.coloryr.allmusic.server; -import com.coloryr.allmusic.server.core.side.IMyLogger; +import com.coloryr.allmusic.server.core.side.IAllMusicLogger; -public class LogFabric implements IMyLogger { +public class LogFabric implements IAllMusicLogger { @Override public void warning(String data) { AllMusicServer.LOGGER.warn(data); diff --git a/fabric_1_16_5/src/main/java/com/coloryr/allmusic/server/SideFabric.java b/fabric_1_16_5/src/main/java/com/coloryr/allmusic/server/SideFabric.java index 0078e606..2c55ecea 100644 --- a/fabric_1_16_5/src/main/java/com/coloryr/allmusic/server/SideFabric.java +++ b/fabric_1_16_5/src/main/java/com/coloryr/allmusic/server/SideFabric.java @@ -8,15 +8,13 @@ import com.coloryr.allmusic.server.core.objs.music.SongInfoObj; import com.coloryr.allmusic.server.core.side.BaseSide; import com.coloryr.allmusic.server.event.MusicAddEvent; import com.coloryr.allmusic.server.event.MusicPlayEvent; -import com.coloryr.allmusic.server.mixin.IGetCommandOutput; import io.netty.buffer.ByteBuf; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; +import net.kyori.adventure.text.Component; import net.minecraft.network.PacketByteBuf; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.text.Text; import net.minecraft.util.ActionResult; -import net.minecraft.util.Util; import java.io.File; import java.util.Collection; @@ -90,7 +88,9 @@ public class SideFabric extends BaseSide { public void sendBar(Object player, String data) { if (player instanceof ServerPlayerEntity) { ServerPlayerEntity player1 = (ServerPlayerEntity) player; - FabricApi.sendBar(player1, data); + + Component data1 = AllMusic.miniMessage(data); + AllMusicServer.adventure.audience(player1).sendActionBar(data1); } } @@ -114,8 +114,11 @@ public class SideFabric extends BaseSide { if (message == null || message.isEmpty()) { return; } + + Component data1 = AllMusic.miniMessage(message); + for (ServerPlayerEntity player : AllMusicServer.server.getPlayerManager().getPlayerList()) { - player.sendMessage(Text.of(message), false); + AllMusicServer.adventure.audience(player).sendMessage(data1); } } @@ -124,7 +127,11 @@ public class SideFabric extends BaseSide { if (message == null || message.isEmpty()) { return; } - FabricApi.sendMessageBqRun(message, end, command); + + Component data1 = AllMusic.miniMessage(message).append(AllMusic.miniMessageRun(end, message)); + for (ServerPlayerEntity player : AllMusicServer.server.getPlayerManager().getPlayerList()) { + AllMusicServer.adventure.audience(player).sendActionBar(data1); + } } @Override @@ -132,9 +139,10 @@ public class SideFabric extends BaseSide { if (message == null || message.isEmpty()) { return; } - IGetCommandOutput output = (IGetCommandOutput) obj; - if (!output.getSilent()) { - output.getOutput().sendSystemMessage(Text.of(message), Util.NIL_UUID); + if (obj instanceof ServerCommandSource) { + ServerCommandSource sender = (ServerCommandSource) obj; + Component data1 = AllMusic.miniMessage(message); + AllMusicServer.adventure.audience(sender).sendMessage(data1); } } @@ -143,7 +151,12 @@ public class SideFabric extends BaseSide { if (message == null || message.isEmpty()) { return; } - FabricApi.sendMessageRun((ServerCommandSource) obj, message, end, command); + + if (obj instanceof ServerCommandSource) { + ServerCommandSource sender = (ServerCommandSource) obj; + Component data1 = AllMusic.miniMessage(message).append(AllMusic.miniMessageRun(end, message)); + AllMusicServer.adventure.audience(sender).sendMessage(data1); + } } @Override @@ -151,7 +164,12 @@ public class SideFabric extends BaseSide { if (message == null || message.isEmpty()) { return; } - FabricApi.sendMessageSuggest((ServerCommandSource) obj, message, end, command); + + if (obj instanceof ServerCommandSource) { + ServerCommandSource sender = (ServerCommandSource) obj; + Component data1 = AllMusic.miniMessage(message).append(AllMusic.miniMessageSuggest(end, message)); + AllMusicServer.adventure.audience(sender).sendMessage(data1); + } } @Override diff --git a/link.cmd b/link.cmd index ffa94fcd..faaeb3c3 100644 --- a/link.cmd +++ b/link.cmd @@ -4,7 +4,7 @@ mkdir "build\libs" setlocal enabledelayedexpansion -set array=folia server_top server ^ +set array=folia server_top paper spigot ^ fabric_1_16_5 fabric_1_20_1 fabric_1_21 fabric_1_21_6 fabric_1_21_11 fabric_26_1 ^ forge_1_7_10 forge_1_12_2 forge_1_16_5 forge_1_20_1 ^ neoforge_1_21 neoforge_1_21_6 neoforge_1_21_11 diff --git a/netapi/NetApiHttpClient.java b/netapi/NetApiHttpClient.java index fab73eb8..5b2bbbcb 100644 --- a/netapi/NetApiHttpClient.java +++ b/netapi/NetApiHttpClient.java @@ -32,7 +32,7 @@ public class NetApiHttpClient { public static HttpResObj get(String path, String data) { try { - data = URLEncoder.encode(data, StandardCharsets.UTF_8.toString()); + data = URLEncoder.encode(data, StandardCharsets.UTF_8); HttpGet request = new HttpGet(path + data); request.setHeader("referer", "https://music.163.com"); request.setHeader("content-type", "application/json;charset=UTF-8"); @@ -44,7 +44,7 @@ public class NetApiHttpClient { int httpCode = response.getCode(); HttpEntity entity = response.getEntity(); if (entity == null) { - AllMusic.log.warning("§d[AllMusic3]§c获取网页错误"); + AllMusic.log.warning("[AllMusic3]获取网页错误"); return null; } InputStream inputStream = entity.getContent(); @@ -57,16 +57,16 @@ public class NetApiHttpClient { } inputStream.close(); EntityUtils.consume(entity); - String data1 = result.toString(StandardCharsets.UTF_8.toString()); + String data1 = result.toString(StandardCharsets.UTF_8); if (!ok) { - AllMusic.log.warning("§d[AllMusic3]§c服务器返回错误:" + data1); + AllMusic.log.warning("[AllMusic3]服务器返回错误:" + data1); } // 保存 cookies MusicHttpClient.saveCookies(cookieStore); return new HttpResObj(data1, ok); } } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic3]§c获取网页错误"); + AllMusic.log.warning("[AllMusic3]获取网页错误"); e.printStackTrace(); } return null; @@ -143,7 +143,7 @@ public class NetApiHttpClient { int httpCode = response.getCode(); HttpEntity entity = response.getEntity(); if (entity == null) { - AllMusic.log.warning("§d[AllMusic3]§c获取网页错误"); + AllMusic.log.warning("[AllMusic3]获取网页错误"); return null; } InputStream inputStream = entity.getContent(); @@ -154,17 +154,17 @@ public class NetApiHttpClient { while ((length = inputStream.read(buffer)) != -1) { result.write(buffer, 0, length); } - String data1 = result.toString(StandardCharsets.UTF_8.toString()); + String data1 = result.toString(StandardCharsets.UTF_8); EntityUtils.consume(entity); if (!ok) { - AllMusic.log.warning("§d[AllMusic3]§c服务器返回错误:" + data1); + AllMusic.log.warning("[AllMusic3]服务器返回错误:" + data1); } // 保存 cookies MusicHttpClient.saveCookies(cookieStore); return new HttpResObj(data1, ok); } } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic3]§c获取网页错误"); + AllMusic.log.warning("[AllMusic3]获取网页错误"); e.printStackTrace(); } return null; diff --git a/netapi/NetiApiMain.java b/netapi/NetiApiMain.java index ca90cebd..c34f3de7 100644 --- a/netapi/NetiApiMain.java +++ b/netapi/NetiApiMain.java @@ -27,11 +27,11 @@ public class NetiApiMain implements IMusicApi { private boolean isUpdate; public NetiApiMain() { - AllMusic.log.info("§d[AllMusic3]§e正在初始化网络爬虫"); + AllMusic.log.info("[AllMusic3]正在初始化网络爬虫"); HttpResObj res = NetApiHttpClient.get("https://music.163.com", ""); - if (res == null || !res.ok) { - AllMusic.log.info("§d[AllMusic3]§c初始化net api失败"); + if (res == null || !res.ok()) { + AllMusic.log.info("[AllMusic3]初始化net api失败"); } } @@ -76,18 +76,18 @@ public class NetiApiMain implements IMusicApi { params.addProperty("c", "[{\"id\":" + id + "}]"); HttpResObj res = NetApiHttpClient.post("https://music.163.com/api/v3/song/detail", params, EncryptType.WEAPI, null); - if (res != null && res.ok) { - InfoObj temp = AllMusic.gson.fromJson(res.data, InfoObj.class); + if (res != null && res.ok()) { + InfoObj temp = AllMusic.gson.fromJson(res.data(), InfoObj.class); if (temp.isOk()) { params = new JsonObject(); params.addProperty("ids", "[" + id + "]"); params.addProperty("br", "320000"); res = NetApiHttpClient.post("https://music.163.com/weapi/song/enhance/player/url", params, EncryptType.WEAPI, null); - if (res == null || !res.ok) { - AllMusic.log.warning("§d[AllMusic3]§c版权检索失败"); + if (res == null || !res.ok()) { + AllMusic.log.warning("[AllMusic3]版权检索失败"); return null; } - TrialInfoObj obj = AllMusic.gson.fromJson(res.data, TrialInfoObj.class); + TrialInfoObj obj = AllMusic.gson.fromJson(res.data(), TrialInfoObj.class); return new SongInfoObj(temp.getAuthor(), temp.getName(), id, temp.getAlia(), player, temp.getAl(), isList, temp.getLength(), temp.getPicUrl(), obj.isTrial(), obj.getFreeTrialInfo(), @@ -117,14 +117,14 @@ public class NetiApiMain implements IMusicApi { JsonObject params = new JsonObject(); params.addProperty("id", id); HttpResObj res = NetApiHttpClient.post("https://music.163.com/api/dj/program/detail", params, EncryptType.WEAPI, null); - if (res != null && res.ok) { - PrInfoObj temp = AllMusic.gson.fromJson(res.data, PrInfoObj.class); + if (res != null && res.ok()) { + PrInfoObj temp = AllMusic.gson.fromJson(res.data(), PrInfoObj.class); if (temp.isOk()) { return new SongInfoObj(temp.getAuthor(), temp.getName(), temp.getId(), temp.getAlia(), player, "电台", isList, temp.getLength(), null, false, null, getId()); } else { - AllMusic.log.warning("§d[AllMusic3]§c歌曲信息获取为空"); + AllMusic.log.warning("[AllMusic3]歌曲信息获取为空"); } } return info; @@ -142,12 +142,12 @@ public class NetiApiMain implements IMusicApi { params.addProperty("level", "lossless"); params.addProperty("encodeType", "aac"); HttpResObj res = NetApiHttpClient.post("https://music.163.com/weapi/song/enhance/player/url/v1", params, EncryptType.WEAPI, null); - if (res != null && res.ok) { + if (res != null && res.ok()) { try { - TrialInfoObj obj = AllMusic.gson.fromJson(res.data, TrialInfoObj.class); + TrialInfoObj obj = AllMusic.gson.fromJson(res.data(), TrialInfoObj.class); return obj.getUrl(); } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic3]§c播放连接解析错误:" + res.data); + AllMusic.log.warning("[AllMusic3]播放连接解析错误:" + res.data()); e.printStackTrace(); } } @@ -167,14 +167,14 @@ public class NetiApiMain implements IMusicApi { params.addProperty("n", 100000); params.addProperty("s", 8); HttpResObj res = NetApiHttpClient.post("https://music.163.com/api/v6/playlist/detail", params, EncryptType.API, null); - if (res != null && res.ok) + if (res != null && res.ok()) try { isUpdate = true; - DataObj obj = AllMusic.gson.fromJson(res.data, DataObj.class); + DataObj obj = AllMusic.gson.fromJson(res.data(), DataObj.class); DataSql.addIdleList(obj.getPlaylist(), getId()); AllMusic.side.sendMessageTask(sender, AllMusic.getMessage().musicPlay.listMusic.get.replace(ARG.name, obj.getName())); } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic3]§c歌曲列表获取错误"); + AllMusic.log.warning("[AllMusic3]歌曲列表获取错误"); e.printStackTrace(); } isUpdate = false; @@ -202,13 +202,13 @@ public class NetiApiMain implements IMusicApi { params.addProperty("rtv", 0); HttpResObj res = NetApiHttpClient.post("https://interface3.music.163.com/eapi/song/lyric/v1", params, EncryptType.EAPI, "/api/song/lyric/v1"); - if (res != null && res.ok) { + if (res != null && res.ok()) { try { - WLyricObj obj = AllMusic.gson.fromJson(res.data, WLyricObj.class); + WLyricObj obj = AllMusic.gson.fromJson(res.data(), WLyricObj.class); LyricDecoder temp = new LyricDecoder(); for (int times = 0; times < 3; times++) { if (temp.check(obj)) { - AllMusic.log.warning("§d[AllMusic3]§c歌词解析错误,正在进行第" + times + "重试"); + AllMusic.log.warning("[AllMusic3]歌词解析错误,正在进行第" + times + "重试"); } else { if (temp.isHave) { lyric.setHaveLyric(AllMusic.getConfig().sendLyric); @@ -221,9 +221,9 @@ public class NetiApiMain implements IMusicApi { } Thread.sleep(1000); } - AllMusic.log.warning("§d[AllMusic3]§c歌词解析失败"); + AllMusic.log.warning("[AllMusic3]歌词解析失败"); } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic3]§c歌词解析错误"); + AllMusic.log.warning("[AllMusic3]歌词解析错误"); e.printStackTrace(); } } @@ -255,8 +255,8 @@ public class NetiApiMain implements IMusicApi { params.addProperty("offset", 0); HttpResObj res = NetApiHttpClient.post("https://music.163.com/weapi/search/get", params, EncryptType.WEAPI, null); - if (res != null && res.ok) { - SearchDataObj obj = AllMusic.gson.fromJson(res.data, SearchDataObj.class); + if (res != null && res.ok()) { + SearchDataObj obj = AllMusic.gson.fromJson(res.data(), SearchDataObj.class); if (obj != null && obj.isOk()) { List res1 = obj.getResult(); SearchMusicObj item; @@ -268,7 +268,7 @@ public class NetiApiMain implements IMusicApi { maxpage = res1.size() / 10; return new SearchPageObj(resData, maxpage, getId()); } else { - AllMusic.log.warning("§d[AllMusic3]§c歌曲搜索出现错误"); + AllMusic.log.warning("[AllMusic3]歌曲搜索出现错误"); } } diff --git a/server/.gitattributes b/paper/.gitattributes similarity index 100% rename from server/.gitattributes rename to paper/.gitattributes diff --git a/server/.gitignore b/paper/.gitignore similarity index 100% rename from server/.gitignore rename to paper/.gitignore diff --git a/paper/build.gradle b/paper/build.gradle new file mode 100644 index 00000000..678b1e71 --- /dev/null +++ b/paper/build.gradle @@ -0,0 +1,62 @@ +plugins { + id 'java' + id 'maven-publish' + id 'com.github.johnrengelman.shadow' version '7.1.0' +} + +def getVersionFromFile() { + def versionFile = file('../version') + if (versionFile.exists()) { + return versionFile.text.trim() + } else { + throw new GradleException("Version file not found: ${versionFile.absolutePath}") + } +} + +version = getVersionFromFile() + +archivesBaseName = "[paper]AllMusic_Server" + +repositories { + mavenCentral() + + maven { + name = 'papermc' + url = 'https://repo.papermc.io/repository/maven-public/' + } + maven { + url = 'https://repo.helpch.at/releases/' + } + maven { + url 'https://jitpack.io' + } +} + +dependencies { + compileOnly "com.github.MilkBowl:VaultAPI:1.7.1" + compileOnly 'me.clip:placeholderapi:2.11.6' + compileOnly 'io.papermc.paper:paper-api:1.17.1-R0.1-SNAPSHOT' + compileOnly 'net.kyori:adventure-text-minimessage:4.26.1' + + implementation 'org.apache.httpcomponents.client5:httpclient5:5.6' + implementation 'com.google.code.gson:gson:2.10.1' + +} + +shadowJar { + relocate 'org.apache.hc.core5', 'com.coloryr.allmusic.server.lib.org.apache.hc.core5' + relocate 'org.apache.hc.client5', 'com.coloryr.allmusic.server.lib.org.apache.hc.client5' + relocate 'com.google.gson', 'com.coloryr.allmusic.server.lib.com.google.gson' +} + +tasks.withType(JavaCompile) { + options.encoding = "UTF-8" +} + +processResources { + inputs.property "version", project.version + + filesMatching("plugin.yml") { + expand "version": project.version + } +} \ No newline at end of file diff --git a/server/gradle/wrapper/gradle-wrapper.jar b/paper/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from server/gradle/wrapper/gradle-wrapper.jar rename to paper/gradle/wrapper/gradle-wrapper.jar diff --git a/paper/gradle/wrapper/gradle-wrapper.properties b/paper/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..ffed3a25 --- /dev/null +++ b/paper/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/server/gradlew b/paper/gradlew old mode 100755 new mode 100644 similarity index 100% rename from server/gradlew rename to paper/gradlew diff --git a/server/gradlew.bat b/paper/gradlew.bat similarity index 100% rename from server/gradlew.bat rename to paper/gradlew.bat diff --git a/paper/settings.gradle b/paper/settings.gradle new file mode 100644 index 00000000..c42f1d2b --- /dev/null +++ b/paper/settings.gradle @@ -0,0 +1,18 @@ +/* + * This settings file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * In a single project build this file can be empty or even removed. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user guide at https://docs.gradle.org/3.5/userguide/multi_project_builds.html + */ + +/* +// To declare projects as part of a multi-project build use the 'include' method +include 'shared' +include 'api' +include 'services:webservice' +*/ + +rootProject.name = 'AllMusic_Server_Paper' diff --git a/server/src/main/java/com/coloryr/allmusic/server/AllMusicBukkit.java b/paper/src/main/java/com/coloryr/allmusic/server/AllMusicBukkit.java similarity index 76% rename from server/src/main/java/com/coloryr/allmusic/server/AllMusicBukkit.java rename to paper/src/main/java/com/coloryr/allmusic/server/AllMusicBukkit.java index 88b7d2f2..19e491e0 100644 --- a/server/src/main/java/com/coloryr/allmusic/server/AllMusicBukkit.java +++ b/paper/src/main/java/com/coloryr/allmusic/server/AllMusicBukkit.java @@ -15,25 +15,14 @@ import org.bukkit.plugin.java.JavaPlugin; public class AllMusicBukkit extends JavaPlugin { public static Plugin plugin; public static AllMusicPAPI PAPI; - public static boolean spigotSet; private static PluginMessage pluginMessage; @Override public void onEnable() { plugin = this; - AllMusic.log = new LogBukkit(getLogger()); + AllMusic.log = new LogBukkit(); AllMusic.side = new SideBukkit(); - try { - Class.forName("net.md_5.bungee.api.chat.BaseComponent"); - Class test = Class.forName("org.bukkit.command.CommandSender"); - test.getMethod("spigot"); - AllMusic.log.info("§2Spigot已支持"); - spigotSet = true; - } catch (Exception e) { - AllMusic.log.info("§2Spigot不支持"); - } - new AllMusic().init(plugin.getDataFolder()); if (!AllMusic.isRun) { Bukkit.getPluginManager().disablePlugin(this); @@ -46,27 +35,27 @@ public class AllMusicBukkit extends JavaPlugin { VaultHook vault = new VaultHook(); AllMusic.economy = vault; if (vault.setupEconomy()) { - AllMusic.log.info("§2Vault支持已启动"); + AllMusic.log.info("[AllMusic3]Vault支持已启动"); } else { - AllMusic.log.info("§2Vault未挂钩"); + AllMusic.log.info("[AllMusic3]Vault未挂钩"); AllMusic.economy = null; } } catch (Exception e) { - AllMusic.log.info("§2Vault未挂钩"); + AllMusic.log.info("[AllMusic3]Vault未挂钩"); AllMusic.economy = null; } } else { - AllMusic.log.info("§2Vault未挂钩"); + AllMusic.log.info("[AllMusic3]Vault未挂钩"); AllMusic.economy = null; } if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) { PAPI = new AllMusicPAPI(this); if (!PAPI.register()) { - AllMusic.log.info("§2PAPI支持已启动"); + AllMusic.log.info("[AllMusic3]PAPI支持已启动"); } } else { - AllMusic.log.info("§2PAPI未挂钩"); + AllMusic.log.info("[AllMusic3]PAPI未挂钩"); } if (AllMusic.getConfig().topPAPI) { @@ -75,7 +64,7 @@ public class AllMusicBukkit extends JavaPlugin { pluginMessage = new PluginMessage(); getServer().getMessenger().registerOutgoingPluginChannel(this, AllMusic.channelBC); getServer().getMessenger().registerIncomingPluginChannel(this, AllMusic.channelBC, pluginMessage); - AllMusic.log.info("§2设置为顶层模式"); + AllMusic.log.info("[AllMusic3]设置为顶层模式"); } else { CommandBukkit command = new CommandBukkit(); getServer().getMessenger().registerOutgoingPluginChannel(this, AllMusic.channel); diff --git a/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/CommandBukkit.java b/paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/CommandBukkit.java similarity index 100% rename from server/src/main/java/com/coloryr/allmusic/server/side/bukkit/CommandBukkit.java rename to paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/CommandBukkit.java diff --git a/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/FunCore.java b/paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/FunCore.java similarity index 100% rename from server/src/main/java/com/coloryr/allmusic/server/side/bukkit/FunCore.java rename to paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/FunCore.java diff --git a/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/ListenerBukkit.java b/paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/ListenerBukkit.java similarity index 100% rename from server/src/main/java/com/coloryr/allmusic/server/side/bukkit/ListenerBukkit.java rename to paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/ListenerBukkit.java diff --git a/paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/LogBukkit.java b/paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/LogBukkit.java new file mode 100644 index 00000000..c398a7f4 --- /dev/null +++ b/paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/LogBukkit.java @@ -0,0 +1,20 @@ +package com.coloryr.allmusic.server.side.bukkit; + +import com.coloryr.allmusic.server.core.AllMusic; +import com.coloryr.allmusic.server.core.side.IAllMusicLogger; +import net.kyori.adventure.text.Component; +import org.bukkit.Bukkit; + +public class LogBukkit implements IAllMusicLogger { + @Override + public void warning(String data) { + Component data1 = AllMusic.miniMessage(data); + Bukkit.getConsoleSender().sendMessage(data1); + } + + @Override + public void info(String data) { + Component data1 = AllMusic.miniMessage(data); + Bukkit.getConsoleSender().sendMessage(data1); + } +} diff --git a/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/PluginMessage.java b/paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/PluginMessage.java similarity index 100% rename from server/src/main/java/com/coloryr/allmusic/server/side/bukkit/PluginMessage.java rename to paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/PluginMessage.java diff --git a/paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/SideBukkit.java b/paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/SideBukkit.java new file mode 100644 index 00000000..4ed87fa1 --- /dev/null +++ b/paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/SideBukkit.java @@ -0,0 +1,248 @@ +package com.coloryr.allmusic.server.side.bukkit; + +import com.coloryr.allmusic.codec.CommandType; +import com.coloryr.allmusic.server.AllMusicBukkit; +import com.coloryr.allmusic.server.core.AllMusic; +import com.coloryr.allmusic.server.core.objs.music.PlayerAddMusicObj; +import com.coloryr.allmusic.server.core.objs.music.SongInfoObj; +import com.coloryr.allmusic.server.core.side.BaseSide; +import com.coloryr.allmusic.server.side.bukkit.event.MusicAddEvent; +import com.coloryr.allmusic.server.side.bukkit.event.MusicPlayEvent; +import com.coloryr.allmusic.server.side.bukkit.hooks.CitizensNPC; +import net.kyori.adventure.text.Component; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.entity.Player; +import org.bukkit.permissions.Permissible; +import org.bukkit.permissions.ServerOperator; + +import java.io.File; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.nio.charset.StandardCharsets; +import java.util.Collection; + +public class SideBukkit extends BaseSide { + private static Class ByteBufC; + private static Class UnpooledC; + private static Method bufferM; + private static Method writeByteM; + private static Method writeIntM; + private static Method writeBytesM; + private static Method arrayM; + + static { + try { + ByteBufC = Class.forName("net.minecraft.util.io.netty.buffer.ByteBuf"); + } catch (Exception e) { + try { + ByteBufC = Class.forName("io.netty.buffer.ByteBuf"); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + if (ByteBufC != null) { + try { + arrayM = ByteBufC.getMethod("array"); + writeByteM = ByteBufC.getMethod("writeByte", int.class); + writeIntM = ByteBufC.getMethod("writeInt", int.class); + writeBytesM = ByteBufC.getMethod("writeBytes", byte[].class); + } catch (NoSuchMethodException e1) { + e1.printStackTrace(); + } + } + try { + UnpooledC = Class.forName("net.minecraft.util.io.netty.buffer.Unpooled"); + } catch (Exception e) { + try { + UnpooledC = Class.forName("io.netty.buffer.Unpooled"); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + if (UnpooledC != null) { + try { + bufferM = UnpooledC.getMethod("buffer", int.class); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + } + + @Override + public void broadcast(Component message) { + for (Player player : Bukkit.getOnlinePlayers()) { + if (!AllMusic.isSkip(player.getName(), null, false)) { + player.sendMessage(message); + } + } + } + + @Override + public boolean needPlay(boolean islist) { + int online = Bukkit.getOnlinePlayers().size(); + for (Player player : Bukkit.getOnlinePlayers()) { + if (CitizensNPC.isNPC(player)) + online--; + else if (AllMusic.isSkip(player.getName(), null, false, islist)) { + online--; + } + } + return online > 0; + } + + @Override + public Collection getPlayers() { + return Bukkit.getOnlinePlayers(); + } + + @Override + public String getPlayerName(Object player) { + if (player instanceof Player player1) { + return player1.getName(); + } + + return null; + } + + @Override + public String getPlayerServer(Object player) { + return null; + } + + @Override + public void send(Object player, CommandType type, String data, int data1) { + if (player instanceof Player player1) { + try { + Object obj1 = pack(type, data, data1); + byte[] temp = (byte[]) arrayM.invoke(obj1); + send(player1, temp); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + @Override + public Object getPlayer(String player) { + return Bukkit.getPlayer(player); + } + + @Override + public void sendBar(Object player, Component message) { + if (player instanceof Player player1) { + player1.sendActionBar(message); + } + } + + @Override + public File getFolder() { + return AllMusicBukkit.plugin.getDataFolder(); + } + + @Override + public void sendMessage(Object obj, Component message) { + if (obj instanceof Player sender) { + sender.sendMessage(message); + } else if (obj instanceof CommandSender sender) { + sender.sendMessage(message); + } + } + + @Override + public void runTask(Runnable run) { + Bukkit.getScheduler().runTask(AllMusicBukkit.plugin, run); + } + + @Override + public boolean checkPermission(Object player, String permission) { + if (checkPermission(player)) { + return true; + } + if (player instanceof Permissible player1) { + return player1.hasPermission(permission); + } + + return false; + } + + @Override + public boolean checkPermission(Object player) { + if (player instanceof ConsoleCommandSender) { + return true; + } + if (player instanceof ServerOperator sender) { + return sender.isOp(); + } + + return false; + } + + @Override + public boolean isPlayer(Object source) { + return source instanceof Player; + } + + @Override + public void runTask(Runnable run, int delay) { + Bukkit.getScheduler().runTaskLater(AllMusicBukkit.plugin, run, delay); + } + + @Override + public boolean onMusicPlay(SongInfoObj obj) { + MusicPlayEvent event = new MusicPlayEvent(obj); + Bukkit.getScheduler().callSyncMethod(AllMusicBukkit.plugin, () -> { + Bukkit.getPluginManager().callEvent(event); + if (!event.isCancel()) { + FunCore.addMusic(); + } + return event; + }); + return event.isCancel(); + } + + @Override + public boolean onMusicAdd(Object obj, PlayerAddMusicObj music) { + MusicAddEvent event = new MusicAddEvent(music, (CommandSender) obj); + Bukkit.getScheduler().callSyncMethod(AllMusicBukkit.plugin, () -> { + Bukkit.getPluginManager().callEvent(event); + return event; + }); + return event.isCancel(); + } + + private void send(Player players, byte[] data) { + if (players == null) + return; + + if (AllMusic.isRun) { + runTask(() -> players.sendPluginMessage(AllMusicBukkit.plugin, AllMusic.channel, data)); + } + } + + private void writeString(Object buf, String data) throws InvocationTargetException, IllegalAccessException { + byte[] temp = data.getBytes(StandardCharsets.UTF_8); + writeIntM.invoke(buf, temp.length); + writeBytesM.invoke(buf, temp); + } + + private Object pack(CommandType type, String data, int data1) throws InvocationTargetException, IllegalAccessException { + Object buf = bufferM.invoke(null, 0); + writeByteM.invoke(buf, type.ordinal()); + switch (type) { + case PLAY: + case IMG: + case INFO: + case LIST: + case LYRIC: + case HUD_DATA: + writeString(buf, data); + break; + case POS: + writeIntM.invoke(buf, data1); + break; + } + return buf; + } +} diff --git a/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/event/MusicAddEvent.java b/paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/event/MusicAddEvent.java similarity index 100% rename from server/src/main/java/com/coloryr/allmusic/server/side/bukkit/event/MusicAddEvent.java rename to paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/event/MusicAddEvent.java diff --git a/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/event/MusicPlayEvent.java b/paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/event/MusicPlayEvent.java similarity index 100% rename from server/src/main/java/com/coloryr/allmusic/server/side/bukkit/event/MusicPlayEvent.java rename to paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/event/MusicPlayEvent.java diff --git a/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/AllMusicPAPI.java b/paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/AllMusicPAPI.java similarity index 98% rename from server/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/AllMusicPAPI.java rename to paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/AllMusicPAPI.java index c494370e..b55ccfef 100644 --- a/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/AllMusicPAPI.java +++ b/paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/AllMusicPAPI.java @@ -29,7 +29,7 @@ public class AllMusicPAPI extends PlaceholderExpansion { @Override public boolean register() { - AllMusic.log.info("§e正在挂钩PlaceholderAPI"); + AllMusic.log.info("正在挂钩PlaceholderAPI"); return super.register(); } diff --git a/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/CitizensNPC.java b/paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/CitizensNPC.java similarity index 100% rename from server/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/CitizensNPC.java rename to paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/CitizensNPC.java diff --git a/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/VaultHook.java b/paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/VaultHook.java similarity index 100% rename from server/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/VaultHook.java rename to paper/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/VaultHook.java diff --git a/server/src/main/resources/plugin.yml b/paper/src/main/resources/plugin.yml similarity index 100% rename from server/src/main/resources/plugin.yml rename to paper/src/main/resources/plugin.yml diff --git a/remove.cmd b/remove.cmd index 9bb920e1..7ae8a8a7 100644 --- a/remove.cmd +++ b/remove.cmd @@ -2,7 +2,7 @@ setlocal enabledelayedexpansion -set array=folia server_top server ^ +set array=folia server_top paper spigot ^ fabric_1_16_5 fabric_1_20_1 fabric_1_21 fabric_1_21_6 fabric_1_21_11 fabric_26_1 ^ forge_1_7_10 forge_1_12_2 forge_1_16_5 forge_1_20_1 ^ neoforge_1_21 neoforge_1_21_6 neoforge_1_21_11 diff --git a/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/LogBukkit.java b/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/LogBukkit.java deleted file mode 100644 index 129b6de5..00000000 --- a/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/LogBukkit.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.coloryr.allmusic.server.side.bukkit; - -import com.coloryr.allmusic.server.core.side.IMyLogger; - -import java.util.logging.Logger; - -public class LogBukkit implements IMyLogger { - private final Logger Logger; - - public LogBukkit(Logger Logger) { - this.Logger = Logger; - } - - @Override - public void warning(String data) { - Logger.warning(data); - } - - @Override - public void info(String data) { - Logger.info(data); - } -} diff --git a/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/SpigotApi.java b/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/SpigotApi.java deleted file mode 100644 index cf73ddd1..00000000 --- a/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/SpigotApi.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.coloryr.allmusic.server.side.bukkit.hooks; - -import net.md_5.bungee.api.ChatMessageType; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.TextComponent; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class SpigotApi { - public static void sendMessageRun(Object obj, String message, String end, String command) { - CommandSender sender = (CommandSender) obj; - TextComponent send = new TextComponent(message); - TextComponent endtext = new TextComponent(end); - endtext.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, command)); - send.addExtra(endtext); - sender.spigot().sendMessage(send); - } - - public static void sendMessageSuggest(Object obj, String message, String end, String command) { - CommandSender sender = (CommandSender) obj; - TextComponent send = new TextComponent(message); - TextComponent endtext = new TextComponent(end); - endtext.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, command)); - send.addExtra(endtext); - sender.spigot().sendMessage(send); - } - - public static void sendBar(Player player, String message) { - player.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(message)); - } - - public static void sendMessageBqRun(Player player, String message, String end, String command) { - TextComponent send = new TextComponent(message); - TextComponent endtext = new TextComponent(end); - endtext.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, command)); - send.addExtra(endtext); - player.spigot().sendMessage(send); - } -} diff --git a/spigot/.gitattributes b/spigot/.gitattributes new file mode 100644 index 00000000..dfe07704 --- /dev/null +++ b/spigot/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/spigot/.gitignore b/spigot/.gitignore new file mode 100644 index 00000000..5dc2c82c --- /dev/null +++ b/spigot/.gitignore @@ -0,0 +1,27 @@ +# eclipse +bin +*.launch +.settings +.metadata +.classpath +.project + +# idea +out +*.ipr +*.iws +*.iml +.idea + +# gradle +build +.gradle + +# other +eclipse +run + +# Files from Forge MDK +forge*changelog.txt + +lib diff --git a/server/build.gradle b/spigot/build.gradle similarity index 85% rename from server/build.gradle rename to spigot/build.gradle index 95f6810c..972c8ca0 100644 --- a/server/build.gradle +++ b/spigot/build.gradle @@ -15,7 +15,7 @@ def getVersionFromFile() { version = getVersionFromFile() -archivesBaseName = "[bukkit_spigot_paper]AllMusic_Server" +archivesBaseName = "[bukkit_spigot]AllMusic_Server" repositories { mavenCentral() @@ -39,12 +39,15 @@ dependencies { compile 'org.apache.httpcomponents.client5:httpclient5:5.6' compile 'com.google.code.gson:gson:2.10.1' + compile 'net.kyori:adventure-text-minimessage:4.26.1' + compile "net.kyori:adventure-platform-bukkit:4.4.1" } shadowJar { relocate 'org.apache.hc.core5', 'com.coloryr.allmusic.server.lib.org.apache.hc.core5' relocate 'org.apache.hc.client5', 'com.coloryr.allmusic.server.lib.org.apache.hc.client5' relocate 'com.google.gson', 'com.coloryr.allmusic.server.lib.com.google.gson' + relocate 'net.kyori', 'com.coloryr.allmusic.server.lib.net.kyori' } tasks.withType(JavaCompile) { diff --git a/spigot/gradle/wrapper/gradle-wrapper.jar b/spigot/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..87b738cb Binary files /dev/null and b/spigot/gradle/wrapper/gradle-wrapper.jar differ diff --git a/server/gradle/wrapper/gradle-wrapper.properties b/spigot/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from server/gradle/wrapper/gradle-wrapper.properties rename to spigot/gradle/wrapper/gradle-wrapper.properties diff --git a/spigot/gradlew b/spigot/gradlew new file mode 100644 index 00000000..4453ccea --- /dev/null +++ b/spigot/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save ( ) { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/spigot/gradlew.bat b/spigot/gradlew.bat new file mode 100644 index 00000000..f9553162 --- /dev/null +++ b/spigot/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/server/settings.gradle b/spigot/settings.gradle similarity index 100% rename from server/settings.gradle rename to spigot/settings.gradle diff --git a/spigot/src/main/java/com/coloryr/allmusic/server/AllMusicBukkit.java b/spigot/src/main/java/com/coloryr/allmusic/server/AllMusicBukkit.java new file mode 100644 index 00000000..acc1ac73 --- /dev/null +++ b/spigot/src/main/java/com/coloryr/allmusic/server/AllMusicBukkit.java @@ -0,0 +1,94 @@ +package com.coloryr.allmusic.server; + +import com.coloryr.allmusic.server.core.AllMusic; +import com.coloryr.allmusic.server.core.music.PlayMusic; +import com.coloryr.allmusic.server.core.music.TopLyricSave; +import com.coloryr.allmusic.server.core.objs.music.TopSongInfoObj; +import com.coloryr.allmusic.server.side.bukkit.*; +import com.coloryr.allmusic.server.side.bukkit.hooks.AllMusicPAPI; +import com.coloryr.allmusic.server.side.bukkit.hooks.VaultHook; +import net.kyori.adventure.platform.bukkit.BukkitAudiences; +import org.bukkit.Bukkit; +import org.bukkit.command.PluginCommand; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.java.JavaPlugin; + +public class AllMusicBukkit extends JavaPlugin { + public static Plugin plugin; + public static AllMusicPAPI PAPI; + private static PluginMessage pluginMessage; + public static BukkitAudiences adventure; + + @Override + public void onEnable() { + plugin = this; + adventure = BukkitAudiences.create(this); + AllMusic.log = new LogBukkit(); + AllMusic.side = new SideBukkit(); + + new AllMusic().init(plugin.getDataFolder()); + if (!AllMusic.isRun) { + Bukkit.getPluginManager().disablePlugin(this); + return; + } + + if (Bukkit.getPluginManager().getPlugin("Vault") != null + && AllMusic.getConfig().economy.vault) { + try { + VaultHook vault = new VaultHook(); + AllMusic.economy = vault; + if (vault.setupEconomy()) { + AllMusic.log.info("[AllMusic3]Vault支持已启动"); + } else { + AllMusic.log.info("[AllMusic3]Vault未挂钩"); + AllMusic.economy = null; + } + } catch (Exception e) { + AllMusic.log.info("[AllMusic3]Vault未挂钩"); + AllMusic.economy = null; + } + } else { + AllMusic.log.info("[AllMusic3]Vault未挂钩"); + AllMusic.economy = null; + } + + if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) { + PAPI = new AllMusicPAPI(this); + if (!PAPI.register()) { + AllMusic.log.info("[AllMusic3]PAPI支持已启动"); + } + } else { + AllMusic.log.info("[AllMusic3]PAPI未挂钩"); + } + + if (AllMusic.getConfig().topPAPI) { + PlayMusic.nowPlayMusic = new TopSongInfoObj(); + PlayMusic.lyric = new TopLyricSave(); + pluginMessage = new PluginMessage(); + getServer().getMessenger().registerOutgoingPluginChannel(this, AllMusic.channelBC); + getServer().getMessenger().registerIncomingPluginChannel(this, AllMusic.channelBC, pluginMessage); + AllMusic.log.info("[AllMusic3]设置为顶层模式"); + } else { + CommandBukkit command = new CommandBukkit(); + getServer().getMessenger().registerOutgoingPluginChannel(this, AllMusic.channel); + PluginCommand command1 = Bukkit.getPluginCommand("music"); + command1.setExecutor(command); + command1.setTabCompleter(command); + Bukkit.getPluginManager().registerEvents(new ListenerBukkit(), this); + AllMusic.start(); + } + } + + @Override + public void onDisable() { + AllMusic.isRun = false; + if (AllMusic.getConfig().topPAPI) + pluginMessage.stop(); + else + AllMusic.stop(); + if (adventure != null) { + adventure.close(); + adventure = null; + } + } +} diff --git a/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/CommandBukkit.java b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/CommandBukkit.java new file mode 100644 index 00000000..a831a6ee --- /dev/null +++ b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/CommandBukkit.java @@ -0,0 +1,31 @@ +package com.coloryr.allmusic.server.side.bukkit; + +import com.coloryr.allmusic.server.core.command.CommandEX; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabExecutor; +import org.jetbrains.annotations.NotNull; + +import java.util.List; +import java.util.Locale; + +public class CommandBukkit implements CommandExecutor, TabExecutor { + + @Override + public boolean onCommand(@NotNull CommandSender sender, Command command, @NotNull String label, @NotNull String[] args) { + if (command.getName().equalsIgnoreCase("music")) { + CommandEX.execute(sender, sender.getName().toLowerCase(Locale.ROOT), args); + return true; + } + return false; + } + + @Override + public List onTabComplete(@NotNull CommandSender sender, Command command, @NotNull String alias, @NotNull String[] args) { + if (command.getName().equalsIgnoreCase("music")) { + return CommandEX.getTabList(sender, sender.getName().toLowerCase(Locale.ROOT), args); + } + return null; + } +} diff --git a/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/FunCore.java b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/FunCore.java new file mode 100644 index 00000000..61c73dbb --- /dev/null +++ b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/FunCore.java @@ -0,0 +1,25 @@ +package com.coloryr.allmusic.server.side.bukkit; + +import com.coloryr.allmusic.server.core.AllMusic; +import org.bukkit.Bukkit; +import org.bukkit.World; + +public class FunCore { + public static void addMusic() { + if (AllMusic.getConfig().funConfig.rain) { + int rate = AllMusic.getConfig().funConfig.rainRate; + boolean rain; + if (rate <= 1) { + rain = true; + } else { + rain = AllMusic.random.nextInt(rate) == (rate / 2); + } + if (rain) { + for (World item : Bukkit.getWorlds()) { + item.setStorm(true); + } + AllMusic.side.broadcast(AllMusic.getMessage().fun.rain); + } + } + } +} diff --git a/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/ListenerBukkit.java b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/ListenerBukkit.java new file mode 100644 index 00000000..4329b782 --- /dev/null +++ b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/ListenerBukkit.java @@ -0,0 +1,19 @@ +package com.coloryr.allmusic.server.side.bukkit; + +import com.coloryr.allmusic.server.core.AllMusic; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +public class ListenerBukkit implements Listener { + @EventHandler + public void onPlayerQuitEvent(final PlayerQuitEvent e) { + AllMusic.removeNowPlayPlayer(e.getPlayer().getName()); + } + + @EventHandler + public void onPlayerJoinEvent(PlayerJoinEvent event) { + AllMusic.joinPlay(event.getPlayer().getName()); + } +} diff --git a/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/LogBukkit.java b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/LogBukkit.java new file mode 100644 index 00000000..72e36c41 --- /dev/null +++ b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/LogBukkit.java @@ -0,0 +1,20 @@ +package com.coloryr.allmusic.server.side.bukkit; + +import com.coloryr.allmusic.server.AllMusicBukkit; +import com.coloryr.allmusic.server.core.AllMusic; +import com.coloryr.allmusic.server.core.side.IAllMusicLogger; +import net.kyori.adventure.text.Component; + +public class LogBukkit implements IAllMusicLogger { + @Override + public void warning(String data) { + Component data1 = AllMusic.miniMessage(data); + AllMusicBukkit.adventure.console().sendMessage(data1); + } + + @Override + public void info(String data) { + Component data1 = AllMusic.miniMessage(data); + AllMusicBukkit.adventure.console().sendMessage(data1); + } +} diff --git a/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/PluginMessage.java b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/PluginMessage.java new file mode 100644 index 00000000..9d22e355 --- /dev/null +++ b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/PluginMessage.java @@ -0,0 +1,146 @@ +package com.coloryr.allmusic.server.side.bukkit; + +import com.coloryr.allmusic.server.AllMusicBukkit; +import com.coloryr.allmusic.server.core.AllMusic; +import com.coloryr.allmusic.server.core.music.PlayMusic; +import com.coloryr.allmusic.server.core.music.TopLyricSave; +import com.coloryr.allmusic.server.core.objs.music.TopSongInfoObj; +import com.google.common.collect.Iterables; +import com.google.common.io.ByteArrayDataInput; +import com.google.common.io.ByteArrayDataOutput; +import com.google.common.io.ByteStreams; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.plugin.messaging.PluginMessageListener; +import org.jetbrains.annotations.NotNull; + +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +public class PluginMessage implements PluginMessageListener { + public static int size; + public static String allList; + public static boolean update = false; + private static ScheduledExecutorService service; + private final TopSongInfoObj info; + private final TopLyricSave lyric; + + public PluginMessage() { + info = (TopSongInfoObj) PlayMusic.nowPlayMusic; + lyric = (TopLyricSave) PlayMusic.lyric; + + service = Executors.newSingleThreadScheduledExecutor(); + service.scheduleAtFixedRate(PluginMessage::clear, 0, 30, TimeUnit.SECONDS); + } + + private static void clear() { + update = false; + } + + private static void sendPack(ByteArrayDataOutput out) { + Player player = Iterables.getFirst(Bukkit.getOnlinePlayers(), null); + if (player == null) + return; + player.sendPluginMessage(AllMusicBukkit.plugin, AllMusic.channelBC, out.toByteArray()); + } + + public static void startUpdate() { + ByteArrayDataOutput out = ByteStreams.newDataOutput(); + out.writeInt(255); + out.writeUTF("allmusic"); + sendPack(out); + } + + public void stop() { + service.shutdownNow(); + } + + @Override + public void onPluginMessageReceived(String channel, @NotNull Player player, byte[] message) { + if (!channel.equals(AllMusic.channelBC)) { + return; + } + ByteArrayDataInput in = ByteStreams.newDataInput(message); + int type = in.readInt(); + update = true; + switch (type) { + case 0: + info.setName(in.readUTF()); + break; + case 1: + info.setAl(in.readUTF()); + break; + case 2: + info.setAlia(in.readUTF()); + break; + case 3: + info.setAuthor(in.readUTF()); + break; + case 4: + info.setCall(in.readUTF()); + break; + case 5: + size = in.readInt(); + break; + case 6: + allList = in.readUTF(); + break; + case 7: + lyric.setLyric(in.readUTF()); + break; + case 8: + lyric.setTlyric(in.readUTF()); + break; + case 9: + lyric.setHaveT(in.readBoolean()); + break; + case 10: + lyric.setKly(in.readUTF()); + break; + case 11: + lyric.setHaveK(in.readBoolean()); + break; + case 12: { + String uuid = in.readUTF(); + int cost = in.readInt(); + String name = in.readUTF(); + + ByteArrayDataOutput out = ByteStreams.newDataOutput(); + out.write(12); + out.writeUTF(uuid); + if (AllMusic.economy == null) { + out.write(0); + sendPack(out); + } else if (!AllMusic.economy.check(name, cost)) { + out.write(1); + sendPack(out); + } else { + out.write(2); + sendPack(out); + } + break; + } + case 13: { + String uuid = in.readUTF(); + int cost = in.readInt(); + String name = in.readUTF(); + + ByteArrayDataOutput out = ByteStreams.newDataOutput(); + out.write(13); + out.writeUTF(uuid); + if (AllMusic.economy == null) { + out.write(0); + sendPack(out); + } else if (!AllMusic.economy.cost(name, cost)) { + out.write(1); + sendPack(out); + } else { + out.write(2); + sendPack(out); + } + break; + } + } + } +} diff --git a/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/SideBukkit.java b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/SideBukkit.java similarity index 84% rename from server/src/main/java/com/coloryr/allmusic/server/side/bukkit/SideBukkit.java rename to spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/SideBukkit.java index c669c086..227fb2e5 100644 --- a/server/src/main/java/com/coloryr/allmusic/server/side/bukkit/SideBukkit.java +++ b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/SideBukkit.java @@ -9,7 +9,7 @@ import com.coloryr.allmusic.server.core.side.BaseSide; import com.coloryr.allmusic.server.side.bukkit.event.MusicAddEvent; import com.coloryr.allmusic.server.side.bukkit.event.MusicPlayEvent; import com.coloryr.allmusic.server.side.bukkit.hooks.CitizensNPC; -import com.coloryr.allmusic.server.side.bukkit.hooks.SpigotApi; +import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.command.ConsoleCommandSender; @@ -74,9 +74,10 @@ public class SideBukkit extends BaseSide { public void broadcast(String data) { if (data == null || data.isEmpty()) return; + Component message = AllMusic.miniMessage(data); for (Player player : Bukkit.getOnlinePlayers()) { if (!AllMusic.isSkip(player.getName(), null, false)) { - player.sendMessage(data); + AllMusicBukkit.adventure.player(player).sendMessage(message); } } } @@ -85,10 +86,13 @@ public class SideBukkit extends BaseSide { public void broadcastWithRun(String message, String end, String command) { if (message == null || message.isEmpty()) return; + Component data1 = AllMusic.miniMessageRun(end, command); + Component data2 = AllMusic.miniMessage(message); + data2 = data2.append(data1); for (Player player : Bukkit.getOnlinePlayers()) { if (AllMusic.isSkip(player.getName(), null, true)) continue; - SpigotApi.sendMessageBqRun(player, message, end, command); + AllMusicBukkit.adventure.player(player).sendMessage(data2); } } @@ -149,13 +153,12 @@ public class SideBukkit extends BaseSide { if (message == null || message.isEmpty()) { return; } + + Component data1 = AllMusic.miniMessage(message); + if (player instanceof Player) { Player player1 = (Player) player; - if (AllMusicBukkit.spigotSet) { - SpigotApi.sendBar(player1, message); - } else { - player1.sendMessage(message); - } + AllMusicBukkit.adventure.player(player1).sendActionBar(data1); } } @@ -168,18 +171,31 @@ public class SideBukkit extends BaseSide { public void sendMessage(Object obj, String message) { if (message == null || message.isEmpty()) return; - CommandSender sender = (CommandSender) obj; - sender.sendMessage(message); + + Component data2 = AllMusic.miniMessage(message); + + if (obj instanceof Player) { + Player sender = (Player) obj; + AllMusicBukkit.adventure.player(sender).sendMessage(data2); + } + else if (obj instanceof CommandSender) { + CommandSender sender = (CommandSender) obj; + AllMusicBukkit.adventure.sender(sender).sendMessage(data2); + } } @Override public void sendMessageRun(Object obj, String message, String end, String command) { if (message == null || message.isEmpty()) return; - if (AllMusicBukkit.spigotSet) { - SpigotApi.sendMessageRun(obj, message, end, command); - } else { - sendMessage(obj, message); + + Component data1 = AllMusic.miniMessageRun(end, command); + Component data2 = AllMusic.miniMessage(message); + data2 = data2.append(data1); + + if (obj instanceof Player) { + Player player = (Player) obj; + AllMusicBukkit.adventure.player(player).sendMessage(data2); } } @@ -187,10 +203,14 @@ public class SideBukkit extends BaseSide { public void sendMessageSuggest(Object obj, String message, String end, String command) { if (message == null || message.isEmpty()) return; - if (AllMusicBukkit.spigotSet) { - SpigotApi.sendMessageSuggest(obj, message, end, command); - } else { - sendMessage(obj, message); + + Component data1 = AllMusic.miniMessageSuggest(end, command); + Component data2 = AllMusic.miniMessage(message); + data2 = data2.append(data1); + + if (obj instanceof Player) { + Player player = (Player) obj; + AllMusicBukkit.adventure.player(player).sendMessage(data2); } } diff --git a/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/event/MusicAddEvent.java b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/event/MusicAddEvent.java new file mode 100644 index 00000000..cf1ec7ba --- /dev/null +++ b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/event/MusicAddEvent.java @@ -0,0 +1,57 @@ +package com.coloryr.allmusic.server.side.bukkit.event; + +import com.coloryr.allmusic.server.core.objs.music.PlayerAddMusicObj; +import org.bukkit.command.CommandSender; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; +import org.jetbrains.annotations.NotNull; + +/** + * 音乐添加事件 + */ +public class MusicAddEvent extends Event { + private static final HandlerList handlers = new HandlerList(); + /** + * 添加的音乐 + */ + private final PlayerAddMusicObj music; + /** + * 添加者 + */ + private final CommandSender player; + /** + * 是否取消添加 + */ + private boolean cancel = false; + + public MusicAddEvent(PlayerAddMusicObj id, CommandSender player) { + this.music = id; + this.player = player; + } + + public static HandlerList getHandlerList() { + return handlers; + } + + public boolean isCancel() { + return cancel; + } + + public void setCancel(boolean cancel) { + this.cancel = cancel; + } + + public CommandSender getPlayer() { + return player; + } + + public PlayerAddMusicObj getMusic() { + return music; + } + + @NotNull + @Override + public HandlerList getHandlers() { + return handlers; + } +} diff --git a/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/event/MusicPlayEvent.java b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/event/MusicPlayEvent.java new file mode 100644 index 00000000..5f65d0a5 --- /dev/null +++ b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/event/MusicPlayEvent.java @@ -0,0 +1,47 @@ +package com.coloryr.allmusic.server.side.bukkit.event; + +import com.coloryr.allmusic.server.core.objs.music.SongInfoObj; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; +import org.jetbrains.annotations.NotNull; + +/** + * 音乐播发事件 + */ +public class MusicPlayEvent extends Event { + private static final HandlerList handlers = new HandlerList(); + /** + * 音乐内容 + */ + private final SongInfoObj music; + /** + * 是否取消 + */ + private boolean cancel = false; + + public MusicPlayEvent(SongInfoObj music) { + this.music = music; + } + + public static HandlerList getHandlerList() { + return handlers; + } + + public SongInfoObj getMusic() { + return music; + } + + public boolean isCancel() { + return cancel; + } + + public void setCancel(boolean cancel) { + this.cancel = cancel; + } + + @NotNull + @Override + public HandlerList getHandlers() { + return handlers; + } +} diff --git a/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/AllMusicPAPI.java b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/AllMusicPAPI.java new file mode 100644 index 00000000..b55ccfef --- /dev/null +++ b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/AllMusicPAPI.java @@ -0,0 +1,164 @@ +package com.coloryr.allmusic.server.side.bukkit.hooks; + +import com.coloryr.allmusic.server.core.AllMusic; +import com.coloryr.allmusic.server.core.music.PlayMusic; +import com.coloryr.allmusic.server.side.bukkit.PluginMessage; +import me.clip.placeholderapi.expansion.PlaceholderExpansion; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; +import org.jetbrains.annotations.NotNull; + +public class AllMusicPAPI extends PlaceholderExpansion { + + private final Plugin plugin; + + public AllMusicPAPI(Plugin plugin) { + this.plugin = plugin; + } + + @Override + public boolean persist() { + return true; + } + + @Override + public boolean canRegister() { + return true; + } + + @Override + public boolean register() { + AllMusic.log.info("正在挂钩PlaceholderAPI"); + return super.register(); + } + + @Override + public @NotNull String getAuthor() { + return "Color_yr"; + } + + @Override + public @NotNull String getIdentifier() { + return "allmusic"; + } + + @Override + public @NotNull String getVersion() { + return plugin.getDescription().getVersion(); + } + + @Override + public String onPlaceholderRequest(Player player, @NotNull String identifier) { + return onRequest(player, identifier); + } + + @Override + public String onRequest(OfflinePlayer player, @NotNull String identifier) { + if (AllMusic.getConfig().topPAPI) { + if (!PluginMessage.update) { + PluginMessage.startUpdate(); + return ""; + } + switch (identifier) { + case "now_music_name": { + return PlayMusic.nowPlayMusic.getName(); + } + case "now_music_al": { + return PlayMusic.nowPlayMusic.getAl(); + } + case "now_music_alia": { + return PlayMusic.nowPlayMusic.getAlia(); + } + case "now_music_author": { + return PlayMusic.nowPlayMusic.getAuthor(); + } + case "now_music_call": { + return PlayMusic.nowPlayMusic.getCall(); + } + case "now_music_info": { + return PlayMusic.nowPlayMusic.getInfo(); + } + case "list_size": { + return "" + PluginMessage.size; + } + case "music_list": { + return PluginMessage.allList; + } + case "lyric": { + if (PlayMusic.lyric == null || PlayMusic.lyric.getLyric() == null) { + return AllMusic.getMessage().lyric.empty1; + } + return PlayMusic.lyric.getLyric(); + } + case "tlyric": { + if (PlayMusic.lyric == null || PlayMusic.lyric.getTlyric() == null) { + return AllMusic.getMessage().lyric.empty2; + } + return PlayMusic.lyric.getTlyric(); + } + case "klyric": { + if (PlayMusic.lyric == null || PlayMusic.lyric.getKly() == null) { + return AllMusic.getMessage().lyric.empty3; + } + return PlayMusic.lyric.getKly(); + } + } + } else { + switch (identifier) { + case "now_music_name": { + if (PlayMusic.nowPlayMusic == null) + return AllMusic.getMessage().papi.emptyMusic; + return PlayMusic.nowPlayMusic.getName(); + } + case "now_music_al": { + if (PlayMusic.nowPlayMusic == null) + return ""; + return PlayMusic.nowPlayMusic.getAl(); + } + case "now_music_alia": { + if (PlayMusic.nowPlayMusic == null) + return ""; + return PlayMusic.nowPlayMusic.getAlia(); + } + case "now_music_author": { + if (PlayMusic.nowPlayMusic == null) + return ""; + return PlayMusic.nowPlayMusic.getAuthor(); + } + case "now_music_call": { + if (PlayMusic.nowPlayMusic == null) + return ""; + return PlayMusic.nowPlayMusic.getCall(); + } + case "now_music_info": { + if (PlayMusic.nowPlayMusic == null) + return ""; + return PlayMusic.nowPlayMusic.getInfo(); + } + case "list_size": { + return "" + PlayMusic.getListSize(); + } + case "music_list": { + return PlayMusic.getAllList(); + } + case "lyric": { + if (PlayMusic.lyric == null) + return ""; + return PlayMusic.lyric.getLyric(); + } + case "tlyric": { + if (PlayMusic.lyric == null) + return ""; + return PlayMusic.lyric.getTlyric(); + } + case "klyric": { + if (PlayMusic.lyric == null) + return ""; + return PlayMusic.lyric.getKly(); + } + } + } + return null; + } +} diff --git a/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/CitizensNPC.java b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/CitizensNPC.java new file mode 100644 index 00000000..5fdc8137 --- /dev/null +++ b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/CitizensNPC.java @@ -0,0 +1,9 @@ +package com.coloryr.allmusic.server.side.bukkit.hooks; + +import org.bukkit.entity.Entity; + +public class CitizensNPC { + public static boolean isNPC(Entity entity) { + return entity.hasMetadata("NPC"); + } +} diff --git a/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/VaultHook.java b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/VaultHook.java new file mode 100644 index 00000000..f4cbc6e8 --- /dev/null +++ b/spigot/src/main/java/com/coloryr/allmusic/server/side/bukkit/hooks/VaultHook.java @@ -0,0 +1,40 @@ +package com.coloryr.allmusic.server.side.bukkit.hooks; + +import com.coloryr.allmusic.server.core.sql.IEconomy; +import net.milkbowl.vault.economy.Economy; +import net.milkbowl.vault.economy.EconomyResponse; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.plugin.RegisteredServiceProvider; + +public class VaultHook implements IEconomy { + private Economy econ = null; + + public VaultHook() { + RegisteredServiceProvider rsp = + Bukkit.getServer().getServicesManager().getRegistration(Economy.class); + if (rsp == null) { + return; + } + econ = rsp.getProvider(); + } + + public boolean setupEconomy() { + return econ != null; + } + + public boolean check(String name, int cost) { + Player player = Bukkit.getPlayer(name); + if (player == null) + return false; + return econ.has(player, cost); + } + + public boolean cost(String name, int cost) { + Player player = Bukkit.getPlayer(name); + if (player == null) + return false; + EconomyResponse r = econ.withdrawPlayer(player, cost); + return r.transactionSuccess(); + } +} diff --git a/spigot/src/main/resources/plugin.yml b/spigot/src/main/resources/plugin.yml new file mode 100644 index 00000000..27c5c485 --- /dev/null +++ b/spigot/src/main/resources/plugin.yml @@ -0,0 +1,11 @@ +name: AllMusic3 +main: com.coloryr.allmusic.server.AllMusicBukkit +author: Color_yr +version: ${version} +softdepend: [PlaceholderAPI, Vault, Essentials, CMI] +api-version: 1.13 + +commands: + music: + description: AllMusic3 + usage: §4[AllMusic3]§6/music help diff --git a/version b/version index 240bba90..0be1fc7d 100644 --- a/version +++ b/version @@ -1 +1 @@ -3.7.0 \ No newline at end of file +3.8.0 \ No newline at end of file