From 13b01757f67d7c851dadbee3234367cea730c8fb Mon Sep 17 00:00:00 2001 From: Color_yr <402067010@qq.com> Date: Tue, 27 Dec 2022 10:31:41 +0800 Subject: [PATCH] up --- src/main/java/coloryr/allmusic/AllMusic.java | 19 +- .../java/coloryr/allmusic/AllMusicBC.java | 4 +- .../java/coloryr/allmusic/AllMusicBukkit.java | 4 +- .../coloryr/allmusic/AllMusicVelocity.java | 4 +- .../coloryr/allmusic/api/AllMusicAPI.java | 18 ++ .../coloryr/allmusic/bstats/MetricsBase.java | 70 +++--- .../allmusic/bstats/config/MetricsConfig.java | 18 +- .../bstats/json/JsonObjectBuilder.java | 70 +++--- .../coloryr/allmusic/command/CommandEX.java | 2 +- .../coloryr/allmusic/command/TabCommand.java | 2 +- .../java/coloryr/allmusic/hud/DataSql.java | 19 +- .../java/coloryr/allmusic/hud/HudUtils.java | 49 ++-- .../hud/obj/{Pos.java => HudPos.java} | 2 +- .../java/coloryr/allmusic/message/HudOBJ.java | 32 ++- .../coloryr/allmusic/music/api/APIMain.java | 28 +-- .../{ => music/api/http}/CookieObj.java | 2 +- .../{ => music/api}/http/CryptoUtil.java | 2 +- .../allmusic/{ => music/api}/http/EncRes.java | 2 +- .../{ => music/api}/http/EncryptType.java | 2 +- .../{ => music/api}/http/HttpClientUtil.java | 10 +- .../Res.java => music/api/http/HttpRes.java} | 6 +- .../{ => music/api}/http/MyCookieJar.java | 7 +- .../coloryr/allmusic/music/play/PlayGo.java | 11 +- .../allmusic/music/play/PlayMusic.java | 4 +- .../java/coloryr/allmusic/side/ComType.java | 11 + .../allmusic/{api => side}/IMyLogger.java | 2 +- .../coloryr/allmusic/{api => side}/ISide.java | 33 +-- .../side/bc/{EventBC.java => ListenerBC.java} | 10 +- .../side/bc/{BCLog.java => LogBC.java} | 6 +- .../coloryr/allmusic/side/bc/MetricsBC.java | 13 +- .../java/coloryr/allmusic/side/bc/SideBC.java | 158 +++++++----- .../{EventBukkit.java => ListenerBukkit.java} | 8 +- .../bukkit/{BukkitLog.java => LogBukkit.java} | 6 +- .../allmusic/side/bukkit/MetricsBukkit.java | 14 +- .../allmusic/side/bukkit/PluginMessage.java | 3 + .../allmusic/side/bukkit/SideBukkit.java | 234 +++++++++++------- .../allmusic/side/bukkit/hooks/SpigotApi.java | 4 - .../allmusic/side/bukkit/hooks/VaultHook.java | 3 +- ...entVelocity.java => ListenerVelocity.java} | 3 +- .../{VelocityLog.java => LogVelocity.java} | 6 +- .../allmusic/side/velocity/SideVelocity.java | 148 +++++++---- .../allmusic/utils/{logs.java => Logs.java} | 2 +- src/main/resources/message.json | 4 +- 43 files changed, 615 insertions(+), 440 deletions(-) create mode 100644 src/main/java/coloryr/allmusic/api/AllMusicAPI.java rename src/main/java/coloryr/allmusic/hud/obj/{Pos.java => HudPos.java} (75%) rename src/main/java/coloryr/allmusic/{ => music/api/http}/CookieObj.java (80%) rename src/main/java/coloryr/allmusic/{ => music/api}/http/CryptoUtil.java (99%) rename src/main/java/coloryr/allmusic/{ => music/api}/http/EncRes.java (83%) rename src/main/java/coloryr/allmusic/{ => music/api}/http/EncryptType.java (54%) rename src/main/java/coloryr/allmusic/{ => music/api}/http/HttpClientUtil.java (96%) rename src/main/java/coloryr/allmusic/{http/Res.java => music/api/http/HttpRes.java} (67%) rename src/main/java/coloryr/allmusic/{ => music/api}/http/MyCookieJar.java (82%) create mode 100644 src/main/java/coloryr/allmusic/side/ComType.java rename src/main/java/coloryr/allmusic/{api => side}/IMyLogger.java (74%) rename src/main/java/coloryr/allmusic/{api => side}/ISide.java (81%) rename src/main/java/coloryr/allmusic/side/bc/{EventBC.java => ListenerBC.java} (78%) rename src/main/java/coloryr/allmusic/side/bc/{BCLog.java => LogBC.java} (73%) rename src/main/java/coloryr/allmusic/side/bukkit/{EventBukkit.java => ListenerBukkit.java} (61%) rename src/main/java/coloryr/allmusic/side/bukkit/{BukkitLog.java => LogBukkit.java} (72%) rename src/main/java/coloryr/allmusic/side/velocity/{EventVelocity.java => ListenerVelocity.java} (94%) rename src/main/java/coloryr/allmusic/side/velocity/{VelocityLog.java => LogVelocity.java} (70%) rename src/main/java/coloryr/allmusic/utils/{logs.java => Logs.java} (98%) diff --git a/src/main/java/coloryr/allmusic/AllMusic.java b/src/main/java/coloryr/allmusic/AllMusic.java index 742d6e7b..cc2114a0 100644 --- a/src/main/java/coloryr/allmusic/AllMusic.java +++ b/src/main/java/coloryr/allmusic/AllMusic.java @@ -1,7 +1,8 @@ package coloryr.allmusic; -import coloryr.allmusic.api.IMyLogger; -import coloryr.allmusic.api.ISide; +import coloryr.allmusic.music.api.http.CookieObj; +import coloryr.allmusic.side.IMyLogger; +import coloryr.allmusic.side.ISide; import coloryr.allmusic.hud.DataSql; import coloryr.allmusic.hud.HudSave; import coloryr.allmusic.hud.obj.SaveOBJ; @@ -12,7 +13,7 @@ import coloryr.allmusic.music.play.PlayGo; import coloryr.allmusic.music.play.PlayMusic; import coloryr.allmusic.music.search.SearchPage; import coloryr.allmusic.side.bukkit.hooks.VaultHook; -import coloryr.allmusic.utils.logs; +import coloryr.allmusic.utils.Logs; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -168,8 +169,8 @@ public class AllMusic { public static void stop() { try { clearVote(); - logs.stop(); - side.send("[Stop]", false); + Logs.stop(); + side.sendStop(); MusicSearch.stop(); PlayMusic.stop(); PlayGo.stop(); @@ -261,8 +262,8 @@ public class AllMusic { messageFile = new File(file, "message.json"); if (cookieFile == null) cookieFile = new File(file, "cookie.json"); - if (logs.file == null) - logs.file = new File(file, "logs.log"); + if (Logs.file == null) + Logs.file = new File(file, "logs.log"); if (DataSql.sqlFile == null) DataSql.sqlFile = new File(file, "data.db"); if (!configFile.exists()) { @@ -274,8 +275,8 @@ public class AllMusic { if (!cookieFile.exists()) { cookieFile.createNewFile(); } - if (!logs.file.exists()) { - logs.file.createNewFile(); + if (!Logs.file.exists()) { + Logs.file.createNewFile(); } loadConfig(); isRun = true; diff --git a/src/main/java/coloryr/allmusic/AllMusicBC.java b/src/main/java/coloryr/allmusic/AllMusicBC.java index cef79b8b..ae8b8ff2 100644 --- a/src/main/java/coloryr/allmusic/AllMusicBC.java +++ b/src/main/java/coloryr/allmusic/AllMusicBC.java @@ -11,7 +11,7 @@ public class AllMusicBC extends Plugin { @Override public void onEnable() { plugin = this; - AllMusic.log = new BCLog(ProxyServer.getInstance().getLogger()); + AllMusic.log = new LogBC(ProxyServer.getInstance().getLogger()); AllMusic.side = new SideBC(); new AllMusic().init(plugin.getDataFolder()); @@ -20,7 +20,7 @@ public class AllMusicBC extends Plugin { return; ProxyServer.getInstance().registerChannel(AllMusic.channelBC); ProxyServer.getInstance().getPluginManager().registerCommand(this, new CommandBC()); - ProxyServer.getInstance().getPluginManager().registerListener(this, new EventBC()); + ProxyServer.getInstance().getPluginManager().registerListener(this, new ListenerBC()); new MetricsBC(this, 6720); AllMusic.start(); diff --git a/src/main/java/coloryr/allmusic/AllMusicBukkit.java b/src/main/java/coloryr/allmusic/AllMusicBukkit.java index a35728d9..53bfb5d3 100644 --- a/src/main/java/coloryr/allmusic/AllMusicBukkit.java +++ b/src/main/java/coloryr/allmusic/AllMusicBukkit.java @@ -20,7 +20,7 @@ public class AllMusicBukkit extends JavaPlugin { @Override public void onEnable() { plugin = this; - AllMusic.log = new BukkitLog(getLogger()); + AllMusic.log = new LogBukkit(getLogger()); AllMusic.side = new SideBukkit(); try { @@ -79,7 +79,7 @@ public class AllMusicBukkit extends JavaPlugin { PluginCommand command1 = Bukkit.getPluginCommand("music"); command1.setExecutor(command); command1.setTabCompleter(command); - Bukkit.getPluginManager().registerEvents(new EventBukkit(), this); + Bukkit.getPluginManager().registerEvents(new ListenerBukkit(), this); AllMusic.start(); } diff --git a/src/main/java/coloryr/allmusic/AllMusicVelocity.java b/src/main/java/coloryr/allmusic/AllMusicVelocity.java index e24da296..4924ba2e 100644 --- a/src/main/java/coloryr/allmusic/AllMusicVelocity.java +++ b/src/main/java/coloryr/allmusic/AllMusicVelocity.java @@ -38,7 +38,7 @@ public class AllMusicVelocity { @Subscribe public void onProxyInitialization(ProxyInitializeEvent event) { plugin = this; - AllMusic.log = new VelocityLog(logger); + AllMusic.log = new LogVelocity(logger); new AllMusic().init(dataDirectory.toFile()); CommandMeta meta = server.getCommandManager().metaBuilder("music") // Specify other aliases (optional) @@ -49,7 +49,7 @@ public class AllMusicVelocity { AllMusic.side = new SideVelocity(); server.getChannelRegistrar().register(channelBC); server.getCommandManager().register(meta, new CommandVelocity()); - server.getEventManager().register(this, new EventVelocity()); + server.getEventManager().register(this, new ListenerVelocity()); metricsFactory.make(this, 6720); AllMusic.start(); diff --git a/src/main/java/coloryr/allmusic/api/AllMusicAPI.java b/src/main/java/coloryr/allmusic/api/AllMusicAPI.java new file mode 100644 index 00000000..8823c515 --- /dev/null +++ b/src/main/java/coloryr/allmusic/api/AllMusicAPI.java @@ -0,0 +1,18 @@ +package coloryr.allmusic.api; + +import coloryr.allmusic.AllMusic; +import coloryr.allmusic.hud.obj.HudPos; + +public class AllMusicAPI { + public static void playMusic(String name, String url) { + AllMusic.side.send(name, "[url]" + url, false); + } + + public static void sendHud(String name, HudPos pos, String data) { + + } + + public static void sendPic(String name, String url) { + + } +} diff --git a/src/main/java/coloryr/allmusic/bstats/MetricsBase.java b/src/main/java/coloryr/allmusic/bstats/MetricsBase.java index f254e9d5..81afddbd 100644 --- a/src/main/java/coloryr/allmusic/bstats/MetricsBase.java +++ b/src/main/java/coloryr/allmusic/bstats/MetricsBase.java @@ -23,7 +23,7 @@ public class MetricsBase { /** * The version of the Metrics class. */ - public static final String METRICS_VERSION = "2.1.0"; + public static final String METRICS_VERSION = "3.0.1-SNAPSHOT"; private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1, task -> new Thread(task, "bStats-Metrics")); @@ -50,23 +50,23 @@ public class MetricsBase { /** * Creates a new MetricsBase class instance. * - * @param platform The platform of the service. - * @param serviceId The id of the service. - * @param serverUuid The server uuid. - * @param enabled Whether or not data sending is enabled. - * @param appendPlatformDataConsumer A consumer that receives a {@code JsonObjectBuilder} and appends all - * platform-specific data. - * @param appendServiceDataConsumer A consumer that receives a {@code JsonObjectBuilder} and appends all - * service-specific data. - * @param submitTaskConsumer A consumer that takes a runnable with the submit task. - * This can be used to delegate the data collection to a another thread to prevent - * errors caused by concurrency. Can be {@code null}. + * @param platform The platform of the service. + * @param serviceId The id of the service. + * @param serverUuid The server uuid. + * @param enabled Whether or not data sending is enabled. + * @param appendPlatformDataConsumer A consumer that receives a {@code JsonObjectBuilder} and appends all + * platform-specific data. + * @param appendServiceDataConsumer A consumer that receives a {@code JsonObjectBuilder} and appends all + * service-specific data. + * @param submitTaskConsumer A consumer that takes a runnable with the submit task. + * This can be used to delegate the data collection to a another thread to prevent + * errors caused by concurrency. Can be {@code null}. * @param checkServiceEnabledSupplier A supplier to check if the service is still enabled. - * @param errorLogger A consumer that accepts log message and an error. - * @param infoLogger A consumer that accepts info log messages. - * @param logErrors Whether or not errors should be logged. - * @param logSentData Whether or not the sent data should be logged. - * @param logResponseStatusText Whether or not the response status text should be logged. + * @param errorLogger A consumer that accepts log message and an error. + * @param infoLogger A consumer that accepts info log messages. + * @param logErrors Whether or not errors should be logged. + * @param logSentData Whether or not the sent data should be logged. + * @param logResponseStatusText Whether or not the response status text should be logged. */ public MetricsBase( String platform, @@ -99,28 +99,11 @@ public class MetricsBase { checkRelocation(); - if (enabled) { + if (enabled) { // WARNING: Removing the option to opt-out will get your plugin banned from bStats startSubmitting(); } } - /** - * Gzips the given string. - * - * @param str The string to gzip. - * @return The gzipped string. - */ - private static byte[] compress(final String str) throws IOException { - if (str == null) { - return null; - } - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - try (GZIPOutputStream gzip = new GZIPOutputStream(outputStream)) { - gzip.write(str.getBytes(StandardCharsets.UTF_8)); - } - return outputStream.toByteArray(); - } - public void addCustomChart(CustomChart chart) { this.customCharts.add(chart); } @@ -235,4 +218,21 @@ public class MetricsBase { } } + /** + * Gzips the given string. + * + * @param str The string to gzip. + * @return The gzipped string. + */ + private static byte[] compress(final String str) throws IOException { + if (str == null) { + return null; + } + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + try (GZIPOutputStream gzip = new GZIPOutputStream(outputStream)) { + gzip.write(str.getBytes(StandardCharsets.UTF_8)); + } + return outputStream.toByteArray(); + } + } diff --git a/src/main/java/coloryr/allmusic/bstats/config/MetricsConfig.java b/src/main/java/coloryr/allmusic/bstats/config/MetricsConfig.java index 26d279fa..ee2bdbe9 100644 --- a/src/main/java/coloryr/allmusic/bstats/config/MetricsConfig.java +++ b/src/main/java/coloryr/allmusic/bstats/config/MetricsConfig.java @@ -77,11 +77,11 @@ public class MetricsConfig { */ private void writeConfig() throws IOException { List configContent = new ArrayList<>(); - configContent.add("# bStats collects some basic information for plugin authors, like how many people use"); - configContent.add("# their plugin and their total player count. It's recommend to keep bStats enabled, but"); - configContent.add("# if you're not comfortable with this, you can turn this setting off. There is no"); - configContent.add("# performance penalty associated with having metrics enabled, and data sent to bStats"); - configContent.add("# can't identify your server."); + configContent.add("# bStats (https://bStats.org) collects some basic information for plugin authors, like"); + configContent.add("# how many people use their plugin and their total player count. It's recommended to keep"); + configContent.add("# bStats enabled, but if you're not comfortable with this, you can turn this setting off."); + configContent.add("# There is no performance penalty associated with having metrics enabled, and data sent to"); + configContent.add("# bStats is fully anonymous."); configContent.add("enabled=" + defaultEnabled); configContent.add("server-uuid=" + UUID.randomUUID().toString()); configContent.add("log-errors=false"); @@ -102,14 +102,14 @@ public class MetricsConfig { enabled = getConfigValue("enabled", lines).map("true"::equals).orElse(true); serverUUID = getConfigValue("server-uuid", lines).orElse(null); logErrors = getConfigValue("log-errors", lines).map("true"::equals).orElse(false); - logSentData = getConfigValue("log-sent-data", lines).map("true"::equals).orElse(false); - logResponseStatusText = getConfigValue("log-response-status-text", lines).map("true"::equals).orElse(false); + logSentData = getConfigValue("log-sent-data", lines).map("true"::equals).orElse(false); + logResponseStatusText = getConfigValue("log-response-status-text", lines).map("true"::equals).orElse(false); } /** * Gets a config setting from the given list of lines of the file. * - * @param key The key for the setting. + * @param key The key for the setting. * @param lines The lines of the file. * @return The value of the setting. */ @@ -141,7 +141,7 @@ public class MetricsConfig { /** * Writes the given lines to the given file. * - * @param file The file to write to. + * @param file The file to write to. * @param lines The lines to write. */ private void writeFile(File file, List lines) throws IOException { diff --git a/src/main/java/coloryr/allmusic/bstats/json/JsonObjectBuilder.java b/src/main/java/coloryr/allmusic/bstats/json/JsonObjectBuilder.java index aa6b16d1..74390b77 100644 --- a/src/main/java/coloryr/allmusic/bstats/json/JsonObjectBuilder.java +++ b/src/main/java/coloryr/allmusic/bstats/json/JsonObjectBuilder.java @@ -18,34 +18,6 @@ public class JsonObjectBuilder { builder.append("{"); } - /** - * Escapes the given string like stated in https://www.ietf.org/rfc/rfc4627.txt. - * - *

This method escapes only the necessary characters '"', '\'. and '\u0000' - '\u001F'. - * Compact escapes are not used (e.g., '\n' is escaped as "\u000a" and not as "\n"). - * - * @param value The value to escape. - * @return The escaped value. - */ - private static String escape(String value) { - final StringBuilder builder = new StringBuilder(); - for (int i = 0; i < value.length(); i++) { - char c = value.charAt(i); - if (c == '"') { - builder.append("\\\""); - } else if (c == '\\') { - builder.append("\\\\"); - } else if (c <= '\u000F') { - builder.append("\\u000").append(Integer.toHexString(c)); - } else if (c <= '\u001F') { - builder.append("\\u00").append(Integer.toHexString(c)); - } else { - builder.append(c); - } - } - return builder.toString(); - } - /** * Appends a null field to the JSON. * @@ -60,7 +32,7 @@ public class JsonObjectBuilder { /** * Appends a string field to the JSON. * - * @param key The key of the field. + * @param key The key of the field. * @param value The value of the field. * @return A reference to this object. */ @@ -75,7 +47,7 @@ public class JsonObjectBuilder { /** * Appends an integer field to the JSON. * - * @param key The key of the field. + * @param key The key of the field. * @param value The value of the field. * @return A reference to this object. */ @@ -87,7 +59,7 @@ public class JsonObjectBuilder { /** * Appends an object to the JSON. * - * @param key The key of the field. + * @param key The key of the field. * @param object The object. * @return A reference to this object. */ @@ -102,7 +74,7 @@ public class JsonObjectBuilder { /** * Appends a string array to the JSON. * - * @param key The key of the field. + * @param key The key of the field. * @param values The string array. * @return A reference to this object. */ @@ -120,7 +92,7 @@ public class JsonObjectBuilder { /** * Appends an integer array to the JSON. * - * @param key The key of the field. + * @param key The key of the field. * @param values The integer array. * @return A reference to this object. */ @@ -138,7 +110,7 @@ public class JsonObjectBuilder { /** * Appends an object array to the JSON. * - * @param key The key of the field. + * @param key The key of the field. * @param values The integer array. * @return A reference to this object. */ @@ -156,7 +128,7 @@ public class JsonObjectBuilder { /** * Appends a field to the object. * - * @param key The key of the field. + * @param key The key of the field. * @param escapedValue The escaped value of the field. */ private void appendFieldUnescaped(String key, String escapedValue) { @@ -188,6 +160,34 @@ public class JsonObjectBuilder { return object; } + /** + * Escapes the given string like stated in https://www.ietf.org/rfc/rfc4627.txt. + * + *

This method escapes only the necessary characters '"', '\'. and '\u0000' - '\u001F'. + * Compact escapes are not used (e.g., '\n' is escaped as "\u000a" and not as "\n"). + * + * @param value The value to escape. + * @return The escaped value. + */ + private static String escape(String value) { + final StringBuilder builder = new StringBuilder(); + for (int i = 0; i < value.length(); i++) { + char c = value.charAt(i); + if (c == '"') { + builder.append("\\\""); + } else if (c == '\\') { + builder.append("\\\\"); + } else if (c <= '\u000F') { + builder.append("\\u000").append(Integer.toHexString(c)); + } else if (c <= '\u001F') { + builder.append("\\u00").append(Integer.toHexString(c)); + } else { + builder.append(c); + } + } + return builder.toString(); + } + /** * A super simple representation of a JSON object. * diff --git a/src/main/java/coloryr/allmusic/command/CommandEX.java b/src/main/java/coloryr/allmusic/command/CommandEX.java index 8385b6e6..2431f27e 100644 --- a/src/main/java/coloryr/allmusic/command/CommandEX.java +++ b/src/main/java/coloryr/allmusic/command/CommandEX.java @@ -51,7 +51,7 @@ public class CommandEX { } } AllMusic.getConfig().RemoveNoMusicPlayer(name); - if (AllMusic.side.NeedPlay()) { + if (AllMusic.side.needPlay()) { MusicObj obj = new MusicObj(); obj.sender = sender; obj.id = musicID; diff --git a/src/main/java/coloryr/allmusic/command/TabCommand.java b/src/main/java/coloryr/allmusic/command/TabCommand.java index d7c64d40..16a1c49d 100644 --- a/src/main/java/coloryr/allmusic/command/TabCommand.java +++ b/src/main/java/coloryr/allmusic/command/TabCommand.java @@ -41,9 +41,9 @@ public class TabCommand { this.add("list"); this.add("lyric"); this.add("pic"); + this.add("picsize"); this.add("enable"); this.add("reset"); - this.add("picsize"); }}; public static List getTabList(String name, String[] arg) { diff --git a/src/main/java/coloryr/allmusic/hud/DataSql.java b/src/main/java/coloryr/allmusic/hud/DataSql.java index a7491a04..2afdd4cb 100644 --- a/src/main/java/coloryr/allmusic/hud/DataSql.java +++ b/src/main/java/coloryr/allmusic/hud/DataSql.java @@ -12,9 +12,11 @@ import java.sql.Statement; import java.text.MessageFormat; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.Semaphore; public class DataSql { private static final Queue tasks = new ConcurrentLinkedQueue<>(); + private static final Semaphore semaphore = new Semaphore(0); private static boolean isRun; private static Connection connection; @@ -41,6 +43,7 @@ public class DataSql { public static void init() { try { + AllMusic.log.info("正在初始化数据库"); if (connection != null) connection.close(); Class.forName("org.sqlite.JDBC"); @@ -127,6 +130,7 @@ public class DataSql { private static void readAll() { try { + AllMusic.log.info("正在读取数据库所有内容"); if (connection.isReadOnly() || connection.isClosed()) { init(); } @@ -166,6 +170,7 @@ public class DataSql { public static void task(Runnable runnable) { tasks.add(runnable); + semaphore.release(); } public static void start() { @@ -178,6 +183,7 @@ public class DataSql { public static void stop() { isRun = false; + semaphore.release(); HudSave.save(); } @@ -185,11 +191,16 @@ public class DataSql { Runnable runnable; while (isRun) { try { - runnable = tasks.poll(); - if (runnable != null) { - runnable.run(); + semaphore.acquire(); + if (!isRun) + return; + do { + runnable = tasks.poll(); + if (runnable != null) { + runnable.run(); + } } - Thread.sleep(50); + while (runnable != null); } catch (Exception e) { e.printStackTrace(); } diff --git a/src/main/java/coloryr/allmusic/hud/HudUtils.java b/src/main/java/coloryr/allmusic/hud/HudUtils.java index 63003445..4ae8c119 100644 --- a/src/main/java/coloryr/allmusic/hud/HudUtils.java +++ b/src/main/java/coloryr/allmusic/hud/HudUtils.java @@ -1,7 +1,7 @@ package coloryr.allmusic.hud; import coloryr.allmusic.AllMusic; -import coloryr.allmusic.hud.obj.Pos; +import coloryr.allmusic.hud.obj.HudPos; import coloryr.allmusic.hud.obj.PosOBJ; import coloryr.allmusic.hud.obj.SaveOBJ; import coloryr.allmusic.music.api.SongInfo; @@ -15,7 +15,7 @@ public class HudUtils { SaveOBJ obj = HudSave.get(player); if (obj == null) obj = AllMusic.getConfig().getDefaultHud().copy(); - Pos pos1 = Pos.valueOf(pos); + HudPos pos1 = HudPos.valueOf(pos); PosOBJ posOBJ = new PosOBJ(0, 0); if (!Function.isInteger(x) && !Function.isInteger(y)) return null; @@ -68,8 +68,8 @@ public class HudUtils { if (info == null) continue; now = info.getInfo(); - if (now.length() > 30) - now = now.substring(0, 29) + "..."; + if (now.length() > AllMusic.getConfig().getMessageLimitSize()) + now = now.substring(0, AllMusic.getConfig().getMessageLimitSize() - 1) + "..."; list.append(now).append("\n"); } } @@ -84,34 +84,35 @@ public class HudUtils { } public static void sendHudNowData() { - StringBuilder list = new StringBuilder(); + String info; if (PlayMusic.nowPlayMusic == null) { - list.append(AllMusic.getMessage().getHud().getNoMusic()); + info = AllMusic.getMessage().getHud().getNoMusic(); } else { - list.append(PlayMusic.nowPlayMusic.getName()).append(" ") - .append(tranTime(PlayMusic.musicAllTime)).append("/") - .append(tranTime(PlayMusic.musicNowTime / 1000)).append("\n"); - list.append(PlayMusic.nowPlayMusic.getAuthor()).append("\n"); - list.append(PlayMusic.nowPlayMusic.getAlia()).append("\n"); - list.append(PlayMusic.nowPlayMusic.getAl()).append("\n"); - list.append("by:").append(PlayMusic.nowPlayMusic.getCall()); + info = AllMusic.getMessage().getHud().getMusic() + .replace("%Name%", PlayMusic.nowPlayMusic.getName()) + .replace("%AllTime%", tranTime(PlayMusic.musicAllTime)) + .replace("%NowTime%", tranTime(PlayMusic.musicNowTime / 1000)) + .replace("%Author%", PlayMusic.nowPlayMusic.getAuthor()) + .replace("%Alia%", PlayMusic.nowPlayMusic.getAlia()) + .replace("%Al%", PlayMusic.nowPlayMusic.getAl()) + .replace("%Player%", PlayMusic.nowPlayMusic.getCall()); } - AllMusic.side.sendHudInfo(list.toString()); + AllMusic.side.sendHudInfo(info); } public static void sendHudLyricData(LyricItem showobj) { - StringBuilder list = new StringBuilder(); + String info; if (showobj == null) { - list.append(AllMusic.getMessage().getHud().getNoLyric()); + info = AllMusic.getMessage().getHud().getNoLyric(); } else { - if (showobj.getLyric() != null) - list.append(showobj.getLyric()).append("\n"); - if (showobj.isHaveT() && showobj.getTlyric() != null) - list.append(showobj.getTlyric()); + info = AllMusic.getMessage().getHud().getLyric() + .replace("%Lyric%", showobj.getLyric() == null ? "" : showobj.getLyric()) + .replace("%Tlyric%", (showobj.isHaveT() && showobj.getTlyric() != null) ? + showobj.getTlyric() : ""); } - AllMusic.side.sendHudLyric(list.toString()); + AllMusic.side.sendHudLyric(info); } public static boolean setHudEnable(String player, String pos) { @@ -136,7 +137,7 @@ public class HudUtils { a = true; } } else { - Pos pos1 = Pos.valueOf(pos); + HudPos pos1 = HudPos.valueOf(pos); switch (pos1) { case info: obj.setEnableInfo(!obj.isEnableInfo()); @@ -160,7 +161,7 @@ public class HudUtils { if (pos == null) { return a; } else { - Pos pos1 = Pos.valueOf(pos); + HudPos pos1 = HudPos.valueOf(pos); switch (pos1) { case info: return obj.isEnableInfo(); @@ -176,7 +177,7 @@ public class HudUtils { } public static void clearHud() { - AllMusic.side.clearHudAll(); + AllMusic.side.clearHud(); } public static void clearHud(String Name) { diff --git a/src/main/java/coloryr/allmusic/hud/obj/Pos.java b/src/main/java/coloryr/allmusic/hud/obj/HudPos.java similarity index 75% rename from src/main/java/coloryr/allmusic/hud/obj/Pos.java rename to src/main/java/coloryr/allmusic/hud/obj/HudPos.java index 597f28ee..37b5a86c 100644 --- a/src/main/java/coloryr/allmusic/hud/obj/Pos.java +++ b/src/main/java/coloryr/allmusic/hud/obj/HudPos.java @@ -1,5 +1,5 @@ package coloryr.allmusic.hud.obj; -public enum Pos { +public enum HudPos { info, list, lyric, pic } diff --git a/src/main/java/coloryr/allmusic/message/HudOBJ.java b/src/main/java/coloryr/allmusic/message/HudOBJ.java index 3fdf778c..1d1016a3 100644 --- a/src/main/java/coloryr/allmusic/message/HudOBJ.java +++ b/src/main/java/coloryr/allmusic/message/HudOBJ.java @@ -8,6 +8,8 @@ public class HudOBJ { private String NoList; private String NoLyric; private String PicSize; + private String Music; + private String Lyric; public HudOBJ() { State = "§d[ALLMusic]§2设置信息位置:%Hud%,状态:%State%"; @@ -17,27 +19,41 @@ public class HudOBJ { NoList = "队列中无歌曲"; NoLyric = "无歌词"; PicSize = "§d[ALLMusic]§2设置图片尺寸为%Size%"; + Music = "%Name% %AllTime%/%NowTime%\n%Author%\n%Alia%\n%Al%\nby: %Player%"; + Lyric = "%Lyric%\n%Tlyric%"; } - public boolean check(){ - if(State == null) + public boolean check() { + if (State == null) return true; - if(Set == null) + if (Set == null) return true; - if(Reset == null) + if (Reset == null) return true; - if(NoMusic == null) + if (NoMusic == null) return true; - if(NoList == null) + if (NoList == null) return true; - if(NoLyric == null) + if (NoLyric == null) return true; - if(PicSize == null) + if (PicSize == null) + return true; + if (Music == null) + return true; + if (Lyric == null) return true; return false; } + public String getLyric() { + return Lyric; + } + + public String getMusic() { + return Music; + } + public String getPicSize() { return PicSize; } diff --git a/src/main/java/coloryr/allmusic/music/api/APIMain.java b/src/main/java/coloryr/allmusic/music/api/APIMain.java index 1b9601ab..8676920f 100644 --- a/src/main/java/coloryr/allmusic/music/api/APIMain.java +++ b/src/main/java/coloryr/allmusic/music/api/APIMain.java @@ -1,9 +1,9 @@ package coloryr.allmusic.music.api; import coloryr.allmusic.AllMusic; -import coloryr.allmusic.http.EncryptType; -import coloryr.allmusic.http.HttpClientUtil; -import coloryr.allmusic.http.Res; +import coloryr.allmusic.music.api.http.EncryptType; +import coloryr.allmusic.music.api.http.HttpClientUtil; +import coloryr.allmusic.music.api.http.HttpRes; import coloryr.allmusic.music.api.obj.music.info.InfoOBJ; import coloryr.allmusic.music.api.obj.music.list.DataOBJ; import coloryr.allmusic.music.api.obj.music.lyric.WLyricOBJ; @@ -16,7 +16,7 @@ import coloryr.allmusic.music.lyric.LyricSave; import coloryr.allmusic.music.play.PlayMusic; import coloryr.allmusic.music.search.SearchOBJ; import coloryr.allmusic.music.search.SearchPage; -import coloryr.allmusic.utils.logs; +import coloryr.allmusic.utils.Logs; import com.google.gson.JsonObject; import okhttp3.Cookie; @@ -33,7 +33,7 @@ public class APIMain { public APIMain() { AllMusic.log.info("§d[AllMusic]§e正在初始化网络爬虫"); HttpClientUtil.init(); - Res res = HttpClientUtil.get("https://music.163.com", ""); + HttpRes res = HttpClientUtil.get("https://music.163.com", ""); if (res == null || !res.isOk()) { AllMusic.log.info("§d[AllMusic]§c初始化网络爬虫连接失败"); } @@ -43,7 +43,7 @@ public class APIMain { JsonObject params = new JsonObject(); params.addProperty("ctcode", "86"); params.addProperty("cellphone", AllMusic.getConfig().getLoginUser()); - Res res = HttpClientUtil.post("https://music.163.com/api/sms/captcha/sent", params, EncryptType.WEAPI, null); + HttpRes res = HttpClientUtil.post("https://music.163.com/api/sms/captcha/sent", params, EncryptType.WEAPI, null); AllMusic.side.sendMessage(sender, "§d[AllMusic]§d已发送验证码\n" + res.getData()); } @@ -74,7 +74,7 @@ public class APIMain { params.addProperty("countrycode", "86"); params.addProperty("phone", AllMusic.getConfig().getLoginUser()); params.addProperty("captcha", code); - Res res = HttpClientUtil.post("https://music.163.com/eapi/w/login/cellphone", params, EncryptType.WEAPI, null); + HttpRes res = HttpClientUtil.post("https://music.163.com/eapi/w/login/cellphone", params, EncryptType.WEAPI, null); if (res == null || !res.isOk()) { if (sender == null) AllMusic.log.info("§d[AllMusic]§c登录失败"); @@ -99,7 +99,7 @@ public class APIMain { JsonObject params = new JsonObject(); params.addProperty("c", "[{\"id\":" + ID + "}]"); - Res res = HttpClientUtil.post("https://music.163.com/api/v3/song/detail", params, EncryptType.WEAPI, null); + HttpRes res = HttpClientUtil.post("https://music.163.com/api/v3/song/detail", params, EncryptType.WEAPI, null); if (res != null && res.isOk()) { InfoOBJ temp = AllMusic.gson.fromJson(res.getData(), InfoOBJ.class); if (temp.isok()) { @@ -126,7 +126,7 @@ public class APIMain { return info; JsonObject params = new JsonObject(); params.addProperty("id", ID); - Res res = HttpClientUtil.post("https://music.163.com/api/dj/program/detail", params, EncryptType.WEAPI, null); + HttpRes res = HttpClientUtil.post("https://music.163.com/api/dj/program/detail", params, EncryptType.WEAPI, null); if (res != null && res.isOk()) { PrInfoOBJ temp = AllMusic.gson.fromJson(res.getData(), PrInfoOBJ.class); if (temp.isOK()) { @@ -144,13 +144,13 @@ public class APIMain { JsonObject params = new JsonObject(); params.addProperty("ids", "[" + ID + "]"); params.addProperty("br", AllMusic.getConfig().getMusicBR()); - Res res = HttpClientUtil.post("https://music.163.com/weapi/song/enhance/player/url", params, EncryptType.WEAPI, null); + HttpRes res = HttpClientUtil.post("https://music.163.com/weapi/song/enhance/player/url", params, EncryptType.WEAPI, null); if (res != null && res.isOk()) { try { TrialInfoObj obj = AllMusic.gson.fromJson(res.getData(), TrialInfoObj.class); return obj.getUrl(); } catch (Exception e) { - logs.logWrite(res.getData()); + Logs.logWrite(res.getData()); AllMusic.log.warning("§d[AllMusic]§c播放连接解析错误"); e.printStackTrace(); } @@ -164,7 +164,7 @@ public class APIMain { params.addProperty("id", ID); params.addProperty("n", 100000); params.addProperty("s", 8); - Res res = HttpClientUtil.post("https://music.163.com/api/v6/playlist/detail", params, EncryptType.API, null); + HttpRes res = HttpClientUtil.post("https://music.163.com/api/v6/playlist/detail", params, EncryptType.API, null); if (res != null && res.isOk()) try { isUpdata = true; @@ -188,7 +188,7 @@ public class APIMain { params.addProperty("lv", -1); params.addProperty("kv", -1); params.addProperty("tv", -1); - Res res = HttpClientUtil.post("https://music.163.com/api/song/lyric", params, EncryptType.API, null); + HttpRes res = HttpClientUtil.post("https://music.163.com/api/song/lyric", params, EncryptType.API, null); if (res != null && res.isOk()) { try { WLyricOBJ obj = AllMusic.gson.fromJson(res.getData(), WLyricOBJ.class); @@ -231,7 +231,7 @@ public class APIMain { params.addProperty("limit", 30); params.addProperty("offset", 0); - Res res = HttpClientUtil.post("https://music.163.com/weapi/search/get", params, EncryptType.WEAPI, null); + HttpRes res = HttpClientUtil.post("https://music.163.com/weapi/search/get", params, EncryptType.WEAPI, null); if (res != null && res.isOk()) { SearchDataOBJ obj = AllMusic.gson.fromJson(res.getData(), SearchDataOBJ.class); if (obj != null && obj.isok()) { diff --git a/src/main/java/coloryr/allmusic/CookieObj.java b/src/main/java/coloryr/allmusic/music/api/http/CookieObj.java similarity index 80% rename from src/main/java/coloryr/allmusic/CookieObj.java rename to src/main/java/coloryr/allmusic/music/api/http/CookieObj.java index 370a9f52..f914d7c9 100644 --- a/src/main/java/coloryr/allmusic/CookieObj.java +++ b/src/main/java/coloryr/allmusic/music/api/http/CookieObj.java @@ -1,4 +1,4 @@ -package coloryr.allmusic; +package coloryr.allmusic.music.api.http; import okhttp3.Cookie; diff --git a/src/main/java/coloryr/allmusic/http/CryptoUtil.java b/src/main/java/coloryr/allmusic/music/api/http/CryptoUtil.java similarity index 99% rename from src/main/java/coloryr/allmusic/http/CryptoUtil.java rename to src/main/java/coloryr/allmusic/music/api/http/CryptoUtil.java index 82da0398..23f09933 100644 --- a/src/main/java/coloryr/allmusic/http/CryptoUtil.java +++ b/src/main/java/coloryr/allmusic/music/api/http/CryptoUtil.java @@ -1,4 +1,4 @@ -package coloryr.allmusic.http; +package coloryr.allmusic.music.api.http; import coloryr.allmusic.AllMusic; import com.google.gson.JsonObject; diff --git a/src/main/java/coloryr/allmusic/http/EncRes.java b/src/main/java/coloryr/allmusic/music/api/http/EncRes.java similarity index 83% rename from src/main/java/coloryr/allmusic/http/EncRes.java rename to src/main/java/coloryr/allmusic/music/api/http/EncRes.java index 6daf6964..05a7c1cb 100644 --- a/src/main/java/coloryr/allmusic/http/EncRes.java +++ b/src/main/java/coloryr/allmusic/music/api/http/EncRes.java @@ -1,4 +1,4 @@ -package coloryr.allmusic.http; +package coloryr.allmusic.music.api.http; public class EncRes { public String params; diff --git a/src/main/java/coloryr/allmusic/http/EncryptType.java b/src/main/java/coloryr/allmusic/music/api/http/EncryptType.java similarity index 54% rename from src/main/java/coloryr/allmusic/http/EncryptType.java rename to src/main/java/coloryr/allmusic/music/api/http/EncryptType.java index 86943330..7f82c457 100644 --- a/src/main/java/coloryr/allmusic/http/EncryptType.java +++ b/src/main/java/coloryr/allmusic/music/api/http/EncryptType.java @@ -1,4 +1,4 @@ -package coloryr.allmusic.http; +package coloryr.allmusic.music.api.http; public enum EncryptType { WEAPI, EAPI, API diff --git a/src/main/java/coloryr/allmusic/http/HttpClientUtil.java b/src/main/java/coloryr/allmusic/music/api/http/HttpClientUtil.java similarity index 96% rename from src/main/java/coloryr/allmusic/http/HttpClientUtil.java rename to src/main/java/coloryr/allmusic/music/api/http/HttpClientUtil.java index 620e61c5..5bb526ce 100644 --- a/src/main/java/coloryr/allmusic/http/HttpClientUtil.java +++ b/src/main/java/coloryr/allmusic/music/api/http/HttpClientUtil.java @@ -1,4 +1,4 @@ -package coloryr.allmusic.http; +package coloryr.allmusic.music.api.http; import coloryr.allmusic.AllMusic; import com.google.gson.JsonElement; @@ -34,7 +34,7 @@ public class HttpClientUtil { } } - public static Res get(String path, String data) { + public static HttpRes get(String path, String data) { try { data = URLEncoder.encode(data, "UTF-8"); Request request = new Request.Builder().url(path + data) @@ -62,7 +62,7 @@ public class HttpClientUtil { if (!ok) { AllMusic.log.warning("§d[AllMusic]§c服务器返回错误:" + data1); } - return new Res(data1, ok); + return new HttpRes(data1, ok); } catch (Exception e) { AllMusic.log.warning("§d[AllMusic]§c获取网页错误"); e.printStackTrace(); @@ -70,7 +70,7 @@ public class HttpClientUtil { return null; } - public static Res post(String url, JsonObject data, EncryptType type, String ourl) { + public static HttpRes post(String url, JsonObject data, EncryptType type, String ourl) { try { RequestBody formBody; Request.Builder request = new Request.Builder(); @@ -158,7 +158,7 @@ public class HttpClientUtil { if (!ok) { AllMusic.log.warning("§d[AllMusic]§c服务器返回错误:" + data1); } - return new Res(data1, ok); + return new HttpRes(data1, ok); } catch (Exception e) { AllMusic.log.warning("§d[AllMusic]§c获取网页错误"); e.printStackTrace(); diff --git a/src/main/java/coloryr/allmusic/http/Res.java b/src/main/java/coloryr/allmusic/music/api/http/HttpRes.java similarity index 67% rename from src/main/java/coloryr/allmusic/http/Res.java rename to src/main/java/coloryr/allmusic/music/api/http/HttpRes.java index f78d9914..274a3657 100644 --- a/src/main/java/coloryr/allmusic/http/Res.java +++ b/src/main/java/coloryr/allmusic/music/api/http/HttpRes.java @@ -1,10 +1,10 @@ -package coloryr.allmusic.http; +package coloryr.allmusic.music.api.http; -public class Res { +public class HttpRes { private final String data; private final boolean ok; - public Res(String data, boolean ok) { + public HttpRes(String data, boolean ok) { this.data = data; this.ok = ok; } diff --git a/src/main/java/coloryr/allmusic/http/MyCookieJar.java b/src/main/java/coloryr/allmusic/music/api/http/MyCookieJar.java similarity index 82% rename from src/main/java/coloryr/allmusic/http/MyCookieJar.java rename to src/main/java/coloryr/allmusic/music/api/http/MyCookieJar.java index d6325cfe..737e7ac3 100644 --- a/src/main/java/coloryr/allmusic/http/MyCookieJar.java +++ b/src/main/java/coloryr/allmusic/music/api/http/MyCookieJar.java @@ -1,16 +1,17 @@ -package coloryr.allmusic.http; +package coloryr.allmusic.music.api.http; import coloryr.allmusic.AllMusic; import okhttp3.Cookie; import okhttp3.CookieJar; import okhttp3.HttpUrl; +import org.jetbrains.annotations.NotNull; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; public class MyCookieJar implements CookieJar { @Override - public void saveFromResponse(HttpUrl httpUrl, List list) { + public void saveFromResponse(HttpUrl httpUrl, @NotNull List list) { if (AllMusic.cookie.cookieStore.containsKey(httpUrl.host())) { List cookies = AllMusic.cookie.cookieStore.get(httpUrl.host()); for (Cookie item : list) { @@ -30,7 +31,7 @@ public class MyCookieJar implements CookieJar { } @Override - public List loadForRequest(HttpUrl httpUrl) { + public @NotNull List loadForRequest(HttpUrl httpUrl) { List cookies = AllMusic.cookie.cookieStore.get(httpUrl.host()); return cookies != null ? cookies : new CopyOnWriteArrayList<>(); } diff --git a/src/main/java/coloryr/allmusic/music/play/PlayGo.java b/src/main/java/coloryr/allmusic/music/play/PlayGo.java index a938d357..10569e8a 100644 --- a/src/main/java/coloryr/allmusic/music/play/PlayGo.java +++ b/src/main/java/coloryr/allmusic/music/play/PlayGo.java @@ -107,7 +107,7 @@ public class PlayGo { HudUtils.sendHudNowData(); HudUtils.sendHudLyricData(null); HudUtils.sendHudListData(); - if (AllMusic.side.NeedPlay()) { + if (AllMusic.side.needPlay()) { String ID = AllMusic.getMusicApi().getListMusic(); if (ID != null) { MusicObj obj = new MusicObj(); @@ -148,10 +148,9 @@ public class PlayGo { AllMusic.side.bqt(info); } startTimer(); - AllMusic.side.send("[Play]" + url, true); + AllMusic.side.sendMusic(url); if (!PlayMusic.nowPlayMusic.isUrl() && PlayMusic.nowPlayMusic.getPicUrl() != null) { - AllMusic.side.task(() -> - AllMusic.side.send("[Img]" + PlayMusic.nowPlayMusic.getPicUrl(), true), 10); + AllMusic.side.sendPic(PlayMusic.nowPlayMusic.getPicUrl()); } if (PlayMusic.nowPlayMusic.isTrial()) { AllMusic.side.bqt(AllMusic.getMessage().getMusicPlay().getTrail()); @@ -164,7 +163,7 @@ public class PlayGo { while (PlayMusic.musicLessTime > 0) { HudUtils.sendHudNowData(); HudUtils.sendHudListData(); - if (!AllMusic.side.NeedPlay()) { + if (!AllMusic.side.needPlay()) { PlayMusic.musicLessTime = 1; } if (PlayMusic.voteTime > 0) { @@ -186,7 +185,7 @@ public class PlayGo { } Thread.sleep(1000); } - AllMusic.side.send("[Stop]", false); + AllMusic.side.sendStop(); } else { String data = AllMusic.getMessage().getMusicPlay().getNoCanPlay(); AllMusic.side.bqt(data.replace("%MusicID%", PlayMusic.nowPlayMusic.getID())); diff --git a/src/main/java/coloryr/allmusic/music/play/PlayMusic.java b/src/main/java/coloryr/allmusic/music/play/PlayMusic.java index 1ca8eb1c..4f39169e 100644 --- a/src/main/java/coloryr/allmusic/music/play/PlayMusic.java +++ b/src/main/java/coloryr/allmusic/music/play/PlayMusic.java @@ -6,7 +6,7 @@ import coloryr.allmusic.decoder.Header; import coloryr.allmusic.music.api.SongInfo; import coloryr.allmusic.music.lyric.LyricSave; import coloryr.allmusic.music.lyric.LyricItem; -import coloryr.allmusic.utils.logs; +import coloryr.allmusic.utils.Logs; import java.io.BufferedInputStream; import java.net.URL; @@ -75,7 +75,7 @@ public class PlayMusic { text = text.replace("%MusicID%", id); AllMusic.side.sendMessaget(sender, text); } - logs.logWrite("玩家:" + player + " 点歌:" + id); + Logs.logWrite("玩家:" + player + " 点歌:" + id); try { SongInfo info = AllMusic.getMusicApi().getMusic(id, player, isList); if (info != null) { diff --git a/src/main/java/coloryr/allmusic/side/ComType.java b/src/main/java/coloryr/allmusic/side/ComType.java new file mode 100644 index 00000000..33014083 --- /dev/null +++ b/src/main/java/coloryr/allmusic/side/ComType.java @@ -0,0 +1,11 @@ +package coloryr.allmusic.side; + +public class ComType { + public static final String lyric = "[Lyric]"; + public static final String info = "[Info]"; + public static final String list = "[List]"; + public static final String play = "[Play]"; + public static final String img = "[Img]"; + public static final String stop = "[Stop]"; + public static final String clear = "[clear]"; +} diff --git a/src/main/java/coloryr/allmusic/api/IMyLogger.java b/src/main/java/coloryr/allmusic/side/IMyLogger.java similarity index 74% rename from src/main/java/coloryr/allmusic/api/IMyLogger.java rename to src/main/java/coloryr/allmusic/side/IMyLogger.java index d6b7252a..c00c6a01 100644 --- a/src/main/java/coloryr/allmusic/api/IMyLogger.java +++ b/src/main/java/coloryr/allmusic/side/IMyLogger.java @@ -1,4 +1,4 @@ -package coloryr.allmusic.api; +package coloryr.allmusic.side; public interface IMyLogger { void warning(String data); diff --git a/src/main/java/coloryr/allmusic/api/ISide.java b/src/main/java/coloryr/allmusic/side/ISide.java similarity index 81% rename from src/main/java/coloryr/allmusic/api/ISide.java rename to src/main/java/coloryr/allmusic/side/ISide.java index c3bb1965..8846e64e 100644 --- a/src/main/java/coloryr/allmusic/api/ISide.java +++ b/src/main/java/coloryr/allmusic/side/ISide.java @@ -1,49 +1,30 @@ -package coloryr.allmusic.api; +package coloryr.allmusic.side; public interface ISide { void send(String data, String player, Boolean isplay); - - void send(String data, Boolean isplay); - int getAllPlayer(); - void bq(String data); - void bqt(String data); - - boolean NeedPlay(); - + boolean needPlay(); + void sendStop(); + void sendStop(String name); + void sendMusic(String url); + void sendPic(String url); void sendHudLyric(String data); - void sendHudInfo(String data); - void sendHudList(String data); - void sendHudSaveAll(); - void clearHud(String player); - - void clearHudAll(); - + void clearHud(); void sendMessaget(Object obj, String message); - void sendMessage(Object obj, String message); - void sendMessageRun(Object obj, String message, String end, String command); - void sendMessageSuggest(Object obj, String message, String end, String command); - void runTask(Runnable run); - void reload(); - boolean checkPermission(String player, String permission); - void task(Runnable run, int delay); - void updateInfo(); - void updateLyric(); - void ping(); } diff --git a/src/main/java/coloryr/allmusic/side/bc/EventBC.java b/src/main/java/coloryr/allmusic/side/bc/ListenerBC.java similarity index 78% rename from src/main/java/coloryr/allmusic/side/bc/EventBC.java rename to src/main/java/coloryr/allmusic/side/bc/ListenerBC.java index da933119..85b5237f 100644 --- a/src/main/java/coloryr/allmusic/side/bc/EventBC.java +++ b/src/main/java/coloryr/allmusic/side/bc/ListenerBC.java @@ -1,8 +1,6 @@ package coloryr.allmusic.side.bc; import coloryr.allmusic.AllMusic; -import net.md_5.bungee.api.ProxyServer; -import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.api.connection.Server; import net.md_5.bungee.api.event.PlayerDisconnectEvent; import net.md_5.bungee.api.event.PluginMessageEvent; @@ -10,13 +8,7 @@ import net.md_5.bungee.api.event.PostLoginEvent; import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.event.EventHandler; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; -import java.util.concurrent.CopyOnWriteArrayList; -import java.util.concurrent.CopyOnWriteArraySet; - -public class EventBC implements Listener { +public class ListenerBC implements Listener { @EventHandler public void onPlayerquit(final PlayerDisconnectEvent event) { AllMusic.removeNowPlayPlayer(event.getPlayer().getName()); diff --git a/src/main/java/coloryr/allmusic/side/bc/BCLog.java b/src/main/java/coloryr/allmusic/side/bc/LogBC.java similarity index 73% rename from src/main/java/coloryr/allmusic/side/bc/BCLog.java rename to src/main/java/coloryr/allmusic/side/bc/LogBC.java index ae3b3eb8..b37219da 100644 --- a/src/main/java/coloryr/allmusic/side/bc/BCLog.java +++ b/src/main/java/coloryr/allmusic/side/bc/LogBC.java @@ -1,13 +1,13 @@ package coloryr.allmusic.side.bc; -import coloryr.allmusic.api.IMyLogger; +import coloryr.allmusic.side.IMyLogger; import java.util.logging.Logger; -public class BCLog implements IMyLogger { +public class LogBC implements IMyLogger { private final Logger Logger; - public BCLog(Logger Logger) { + public LogBC(Logger Logger) { this.Logger = Logger; } diff --git a/src/main/java/coloryr/allmusic/side/bc/MetricsBC.java b/src/main/java/coloryr/allmusic/side/bc/MetricsBC.java index faaa1a6e..e22f7388 100644 --- a/src/main/java/coloryr/allmusic/side/bc/MetricsBC.java +++ b/src/main/java/coloryr/allmusic/side/bc/MetricsBC.java @@ -28,7 +28,7 @@ public class MetricsBC { /** * Creates a new Metrics instance. * - * @param plugin Your plugin instance. + * @param plugin Your plugin instance. * @param serviceId The id of the service. * It can be found at What is my plugin id? */ @@ -70,10 +70,11 @@ public class MetricsBC { File configFile = new File(bStatsFolder, "config.yml"); if (!configFile.exists()) { writeFile(configFile, - "#bStats collects some data for plugin authors like how many servers are using their plugins.", - "#To honor their work, you should not disable it.", - "#This has nearly no effect on the server performance!", - "#Check out https://bStats.org/ to learn more :)", + "# bStats (https://bStats.org) collects some basic information for plugin authors, like how", + "# many people use their plugin and their total player count. It's recommended to keep bStats", + "# enabled, but if you're not comfortable with this, you can turn this setting off. There is no", + "# performance penalty associated with having metrics enabled, and data sent to bStats is fully", + "# anonymous.", "enabled: true", "serverUuid: \"" + UUID.randomUUID() + "\"", "logFailedRequests: false", @@ -110,7 +111,7 @@ public class MetricsBC { } private void appendPlatformData(JsonObjectBuilder builder) { - builder.appendField("playerAmount", plugin.getProxy().getOnlineCount()); + builder.appendField("playerAmount", plugin.getProxy().getOnlineCount()); builder.appendField("managedServers", plugin.getProxy().getServers().size()); builder.appendField("onlineMode", plugin.getProxy().getConfig().isOnlineMode() ? 1 : 0); builder.appendField("bungeecordVersion", plugin.getProxy().getVersion()); diff --git a/src/main/java/coloryr/allmusic/side/bc/SideBC.java b/src/main/java/coloryr/allmusic/side/bc/SideBC.java index ac762d1c..be94851f 100644 --- a/src/main/java/coloryr/allmusic/side/bc/SideBC.java +++ b/src/main/java/coloryr/allmusic/side/bc/SideBC.java @@ -2,13 +2,13 @@ package coloryr.allmusic.side.bc; import coloryr.allmusic.AllMusic; import coloryr.allmusic.AllMusicBC; -import coloryr.allmusic.api.ISide; +import coloryr.allmusic.side.ComType; +import coloryr.allmusic.side.ISide; import coloryr.allmusic.hud.HudSave; import coloryr.allmusic.hud.obj.SaveOBJ; import coloryr.allmusic.music.play.PlayMusic; import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; -import com.google.gson.Gson; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import net.md_5.bungee.api.CommandSender; @@ -28,38 +28,11 @@ import java.util.concurrent.TimeUnit; public class SideBC implements ISide { public static final Set TopServers = new CopyOnWriteArraySet<>(); - private boolean isOK(ProxiedPlayer player, boolean in) { - if (player == null || player.getServer() == null) - return false; - if (AllMusic.getConfig().getNoMusicServer() - .contains(player.getServer().getInfo().getName())) - return false; - String name = player.getName(); - if (AllMusic.getConfig().getNoMusicPlayer().contains(player.getName())) - return false; - return !in || AllMusic.containNowPlay(name); - } @Override public void send(String data, String player, Boolean isplay) { send(ProxyServer.getInstance().getPlayer(player), data, isplay); } - - @Override - public void send(String data, Boolean isplay) { - try { - Collection values = ProxyServer.getInstance().getPlayers(); - for (ProxiedPlayer player : values) { - if (isplay && !isOK(player, false)) - continue; - send(player, data, isplay); - } - } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic]§c歌曲发送发生错误"); - e.printStackTrace(); - } - } - @Override public int getAllPlayer() { return ProxyServer.getInstance().getOnlineCount(); @@ -69,12 +42,12 @@ public class SideBC implements ISide { public void sendHudLyric(String data) { try { for (ProxiedPlayer player : ProxyServer.getInstance().getPlayers()) { - if (!isOK(player, true)) + if (isOK(player)) continue; SaveOBJ obj = HudSave.get(player.getName()); if (!obj.isEnableLyric()) continue; - send(player, "[Lyric]" + data, null); + send(player, ComType.lyric + data, null); } } catch (Exception e) { AllMusic.log.warning("§d[AllMusic]§c歌词发送出错"); @@ -86,12 +59,12 @@ public class SideBC implements ISide { public void sendHudInfo(String data) { try { for (ProxiedPlayer player : ProxyServer.getInstance().getPlayers()) { - if (!isOK(player, true)) + if (isOK(player)) continue; SaveOBJ obj = HudSave.get(player.getName()); if (!obj.isEnableInfo()) continue; - send(player, "[Info]" + data, null); + send(player, ComType.info + data, null); } } catch (Exception e) { AllMusic.log.warning("§d[AllMusic]§c歌词信息发送出错"); @@ -103,13 +76,13 @@ public class SideBC implements ISide { public void sendHudList(String data) { try { for (ProxiedPlayer player : ProxyServer.getInstance().getPlayers()) { - if (!isOK(player, true)) + if (isOK(player)) continue; String name = player.getName(); SaveOBJ obj = HudSave.get(name); if (!obj.isEnableList()) continue; - send(player, "[List]" + data, null); + send(player, ComType.list + data, null); } } catch (Exception e) { AllMusic.log.warning("§d[AllMusic]§c歌曲列表发送出错"); @@ -119,12 +92,11 @@ public class SideBC implements ISide { @Override public void sendHudSaveAll() { - for (ProxiedPlayer players : ProxyServer.getInstance().getPlayers()) { - String Name = players.getName(); + for (ProxiedPlayer player : ProxyServer.getInstance().getPlayers()) { try { - SaveOBJ obj = HudSave.get(Name); - String data = new Gson().toJson(obj); - send(data, Name, null); + SaveOBJ obj = HudSave.get(player.getName()); + String data = AllMusic.gson.toJson(obj); + send(player, data, null); } catch (Exception e1) { AllMusic.log.warning("§d[AllMusic]§c数据发送发生错误"); e1.printStackTrace(); @@ -133,16 +105,72 @@ public class SideBC implements ISide { } @Override - public void clearHud(String player) { - send("[clear]", player, null); + public void sendMusic(String url){ + try { + for (ProxiedPlayer player : ProxyServer.getInstance().getPlayers()) { + if (isOK(player)) + continue; + send(player, ComType.play + url, true); + } + } catch (Exception e) { + AllMusic.log.warning("§d[AllMusic]§c图片数据发送出错"); + e.printStackTrace(); + } + } + @Override + public void sendPic(String url){ + try { + for (ProxiedPlayer player : ProxyServer.getInstance().getPlayers()) { + if (isOK(player)) + continue; + String name = player.getName(); + SaveOBJ obj = HudSave.get(name); + if (!obj.isEnablePic()) + continue; + send(player, ComType.img + url, null); + } + } catch (Exception e) { + AllMusic.log.warning("§d[AllMusic]§c图片数据发送出错"); + e.printStackTrace(); + } } @Override - public void clearHudAll() { + public void sendStop() { + try { + for (ProxiedPlayer player : ProxyServer.getInstance().getPlayers()) { + send(player, ComType.stop, false); + } + } catch (Exception e) { + AllMusic.log.warning("§d[AllMusic]§c停止指令发送出错"); + e.printStackTrace(); + } + } + + @Override + public void sendStop(String name) { + try { + ProxiedPlayer player = ProxyServer.getInstance().getPlayer(name); + if (player == null) + return; + send(player, ComType.stop, false); + } catch (Exception e) { + AllMusic.log.warning("§d[AllMusic]§c停止指令发送出错"); + e.printStackTrace(); + } + } + + @Override + public void clearHud(String player) { + send(ComType.clear, player, null); + } + + @Override + public void clearHud() { try { Collection values = ProxyServer.getInstance().getPlayers(); for (ProxiedPlayer players : values) { - send(players, "[clear]", null); + send(players, ComType.clear, null); } } catch (Exception e) { AllMusic.log.warning("§d[AllMusic]§c歌词发生出错"); @@ -154,15 +182,13 @@ public class SideBC implements ISide { public void bq(String data) { if (AllMusic.getConfig().isMessageLimit() && data.length() > AllMusic.getConfig().getMessageLimitSize()) { - data = data.substring(0, 30) + "..."; + data = data.substring(0, AllMusic.getConfig().getMessageLimitSize() - 1) + "..."; } TextComponent message = new TextComponent(data); - for (ServerInfo server : ProxyServer.getInstance().getServers().values()) { - if (AllMusic.getConfig().getNoMusicServer().contains(server.getName())) + for (ProxiedPlayer player : ProxyServer.getInstance().getPlayers()) { + if (isOK(player)) continue; - for (ProxiedPlayer player : server.getPlayers()) - if (!AllMusic.getConfig().getNoMusicPlayer().contains(player.getName())) - player.sendMessage(message); + player.sendMessage(message); } } @@ -172,7 +198,7 @@ public class SideBC implements ISide { } @Override - public boolean NeedPlay() { + public boolean needPlay() { int online = 0; for (ServerInfo server : ProxyServer.getInstance().getServers().values()) { if (AllMusic.getConfig().getNoMusicServer().contains(server.getName())) @@ -235,7 +261,8 @@ public class SideBC implements ISide { @Override public void task(Runnable run, int delay) { - ProxyServer.getInstance().getScheduler().schedule(AllMusicBC.plugin, run, delay, TimeUnit.MICROSECONDS); + ProxyServer.getInstance().getScheduler() + .schedule(AllMusicBC.plugin, run, delay, TimeUnit.MICROSECONDS); } public static void sendAllToServer(Server server){ @@ -306,6 +333,11 @@ public class SideBC implements ISide { else out.writeUTF(PlayMusic.lyricItem.getTlyric()); server.sendData(AllMusic.channelBC, out.toByteArray()); + + out = ByteStreams.newDataOutput(); + out.writeInt(9); + out.writeBoolean(PlayMusic.lyricItem.isHaveT()); + server.sendData(AllMusic.channelBC, out.toByteArray()); } @Override @@ -330,19 +362,15 @@ public class SideBC implements ISide { } } - public static void sendPingToServer(Server server){ - ByteArrayDataOutput out = ByteStreams.newDataOutput(); - out.writeInt(200); - server.sendData(AllMusic.channelBC, out.toByteArray()); - } - @Override public void ping() { Iterator iterator = TopServers.iterator(); while (iterator.hasNext()) { Server server = iterator.next(); if (server.isConnected()) { - sendPingToServer(server); + ByteArrayDataOutput out = ByteStreams.newDataOutput(); + out.writeInt(200); + server.sendData(AllMusic.channelBC, out.toByteArray()); } else { iterator.remove(); } @@ -370,4 +398,16 @@ public class SideBC implements ISide { e.printStackTrace(); } } + + private boolean isOK(ProxiedPlayer player) { + if (player == null || player.getServer() == null) + return true; + if (AllMusic.getConfig().getNoMusicServer() + .contains(player.getServer().getInfo().getName())) + return true; + String name = player.getName(); + if (AllMusic.getConfig().getNoMusicPlayer().contains(player.getName())) + return true; + return !AllMusic.containNowPlay(name); + } } diff --git a/src/main/java/coloryr/allmusic/side/bukkit/EventBukkit.java b/src/main/java/coloryr/allmusic/side/bukkit/ListenerBukkit.java similarity index 61% rename from src/main/java/coloryr/allmusic/side/bukkit/EventBukkit.java rename to src/main/java/coloryr/allmusic/side/bukkit/ListenerBukkit.java index 8a3d6322..714ae324 100644 --- a/src/main/java/coloryr/allmusic/side/bukkit/EventBukkit.java +++ b/src/main/java/coloryr/allmusic/side/bukkit/ListenerBukkit.java @@ -1,18 +1,12 @@ package coloryr.allmusic.side.bukkit; import coloryr.allmusic.AllMusic; -import coloryr.allmusic.music.api.TopSongInfo; -import coloryr.allmusic.music.play.PlayMusic; -import com.google.common.io.ByteArrayDataInput; -import com.google.common.io.ByteStreams; -import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.plugin.messaging.PluginMessageListener; -public class EventBukkit implements Listener { +public class ListenerBukkit implements Listener { @EventHandler public void onPlayerQuit(final PlayerQuitEvent e) { AllMusic.removeNowPlayPlayer(e.getPlayer().getName()); diff --git a/src/main/java/coloryr/allmusic/side/bukkit/BukkitLog.java b/src/main/java/coloryr/allmusic/side/bukkit/LogBukkit.java similarity index 72% rename from src/main/java/coloryr/allmusic/side/bukkit/BukkitLog.java rename to src/main/java/coloryr/allmusic/side/bukkit/LogBukkit.java index c6978b9a..8dc13812 100644 --- a/src/main/java/coloryr/allmusic/side/bukkit/BukkitLog.java +++ b/src/main/java/coloryr/allmusic/side/bukkit/LogBukkit.java @@ -1,13 +1,13 @@ package coloryr.allmusic.side.bukkit; -import coloryr.allmusic.api.IMyLogger; +import coloryr.allmusic.side.IMyLogger; import java.util.logging.Logger; -public class BukkitLog implements IMyLogger { +public class LogBukkit implements IMyLogger { private final Logger Logger; - public BukkitLog(Logger Logger) { + public LogBukkit(Logger Logger) { this.Logger = Logger; } diff --git a/src/main/java/coloryr/allmusic/side/bukkit/MetricsBukkit.java b/src/main/java/coloryr/allmusic/side/bukkit/MetricsBukkit.java index 26a984ef..dd9c8e41 100644 --- a/src/main/java/coloryr/allmusic/side/bukkit/MetricsBukkit.java +++ b/src/main/java/coloryr/allmusic/side/bukkit/MetricsBukkit.java @@ -23,7 +23,7 @@ public class MetricsBukkit { /** * Creates a new Metrics instance. * - * @param plugin Your plugin instance. + * @param plugin Your plugin instance. * @param serviceId The id of the service. * It can be found at What is my plugin id? */ @@ -44,15 +44,15 @@ public class MetricsBukkit { // Inform the server owners about bStats config.options().header( - "bStats collects some data for plugin authors like how many servers are using their plugins.\n" + - "To honor their work, you should not disable it.\n" + - "This has nearly no effect on the server performance!\n" + - "Check out https://bStats.org/ to learn more :)" + "bStats (https://bStats.org) collects some basic information for plugin authors, like how\n" + + "many people use their plugin and their total player count. It's recommended to keep bStats\n" + + "enabled, but if you're not comfortable with this, you can turn this setting off. There is no\n" + + "performance penalty associated with having metrics enabled, and data sent to bStats is fully\n" + + "anonymous." ).copyDefaults(true); try { config.save(configFile); - } catch (IOException ignored) { - } + } catch (IOException ignored) { } } // Load the data diff --git a/src/main/java/coloryr/allmusic/side/bukkit/PluginMessage.java b/src/main/java/coloryr/allmusic/side/bukkit/PluginMessage.java index bbbca92a..521b9d2e 100644 --- a/src/main/java/coloryr/allmusic/side/bukkit/PluginMessage.java +++ b/src/main/java/coloryr/allmusic/side/bukkit/PluginMessage.java @@ -89,6 +89,9 @@ public class PluginMessage implements PluginMessageListener { case 8: lyric.setTlyric(in.readUTF()); break; + case 9: + lyric.setHaveT(in.readBoolean()); + break; } } } diff --git a/src/main/java/coloryr/allmusic/side/bukkit/SideBukkit.java b/src/main/java/coloryr/allmusic/side/bukkit/SideBukkit.java index c6ad943e..7ed4cf58 100644 --- a/src/main/java/coloryr/allmusic/side/bukkit/SideBukkit.java +++ b/src/main/java/coloryr/allmusic/side/bukkit/SideBukkit.java @@ -2,7 +2,8 @@ package coloryr.allmusic.side.bukkit; import coloryr.allmusic.AllMusic; import coloryr.allmusic.AllMusicBukkit; -import coloryr.allmusic.api.ISide; +import coloryr.allmusic.side.ComType; +import coloryr.allmusic.side.ISide; import coloryr.allmusic.hud.HudSave; import coloryr.allmusic.hud.obj.SaveOBJ; import coloryr.allmusic.side.bukkit.hooks.CitizensNPC; @@ -61,28 +62,11 @@ public class SideBukkit implements ISide { } } - private boolean isOK(String player, boolean in) { - if (AllMusic.getConfig().getNoMusicPlayer().contains(player)) - return false; - return !in || AllMusic.containNowPlay(player); - } - @Override public void send(String data, String player, Boolean isplay) { send(Bukkit.getPlayer(player), data, isplay); } - @Override - public void send(String data, Boolean isplay) { - for (Player player : Bukkit.getOnlinePlayers()) { - if (!AllMusic.getConfig().getNoMusicPlayer().contains(player.getName())) { - if (isplay && !isOK(player.getName(), false)) - continue; - send(player, data, isplay); - } - } - } - @Override public int getAllPlayer() { return Bukkit.getOnlinePlayers().size(); @@ -90,14 +74,142 @@ public class SideBukkit implements ISide { @Override public void sendHudLyric(String data) { + try { + for (Player player : Bukkit.getOnlinePlayers()) { + if (isOK(player)) + continue; + String name = player.getName(); + SaveOBJ obj = HudSave.get(name); + if (!obj.isEnableLyric()) + continue; + send(player, ComType.lyric + data, null); + } + } catch (Exception e) { + AllMusic.log.warning("§d[AllMusic]§c歌词发送出错"); + e.printStackTrace(); + } + } + + @Override + public void sendHudInfo(String data) { + try { + for (Player player : Bukkit.getOnlinePlayers()) { + if (isOK(player)) + continue; + String name = player.getName(); + SaveOBJ obj = HudSave.get(name); + if (!obj.isEnableInfo()) + continue; + send(player, ComType.info + data, null); + } + } catch (Exception e) { + AllMusic.log.warning("§d[AllMusic]§c歌词信息发送出错"); + e.printStackTrace(); + } + } + + @Override + public void sendHudList(String data) { + try { + for (Player player : Bukkit.getOnlinePlayers()) { + if (isOK(player)) + continue; + String name = player.getName(); + SaveOBJ obj = HudSave.get(name); + if (!obj.isEnableList()) + continue; + send(player, ComType.list + data, null); + } + } catch (Exception e) { + AllMusic.log.warning("§d[AllMusic]§c歌曲列表发送出错"); + e.printStackTrace(); + } + } + + @Override + public void sendHudSaveAll() { for (Player player : Bukkit.getOnlinePlayers()) { - String name = player.getName(); - if (!isOK(player.getName(), true)) - continue; - SaveOBJ obj = HudSave.get(name); - if (!obj.isEnableLyric()) - continue; - send(player, "[Lyric]" + data, null); + String Name = player.getName(); + try { + SaveOBJ obj = HudSave.get(Name); + String data = new Gson().toJson(obj); + send(player, data, null); + } catch (Exception e1) { + AllMusic.log.warning("§d[AllMusic]§c数据发送发生错误"); + e1.printStackTrace(); + } + } + } + + public void sendMusic(String url) { + try { + for (Player player : Bukkit.getOnlinePlayers()) { + if (isOK(player)) + continue; + send(player, ComType.play + url, true); + } + } catch (Exception e) { + AllMusic.log.warning("§d[AllMusic]§c图片数据发送出错"); + e.printStackTrace(); + } + } + + public void sendPic(String url) { + try { + for (Player player : Bukkit.getOnlinePlayers()) { + if (isOK(player)) + continue; + String name = player.getName(); + SaveOBJ obj = HudSave.get(name); + if (!obj.isEnablePic()) + continue; + send(player, ComType.img + url, null); + } + } catch (Exception e) { + AllMusic.log.warning("§d[AllMusic]§c图片数据发送出错"); + e.printStackTrace(); + } + } + + @Override + public void sendStop() { + try { + for (Player player : Bukkit.getOnlinePlayers()) { + send(player, ComType.stop, false); + } + } catch (Exception e) { + AllMusic.log.warning("§d[AllMusic]§c停止指令发送出错"); + e.printStackTrace(); + } + } + + @Override + public void sendStop(String name) { + try { + Player player = Bukkit.getPlayer(name); + if (player == null) + return; + send(player, ComType.stop, false); + } catch (Exception e) { + AllMusic.log.warning("§d[AllMusic]§c停止指令发送出错"); + e.printStackTrace(); + } + } + + @Override + public void clearHud(String player) { + send(ComType.clear, player, null); + } + + @Override + public void clearHud() { + try { + for (Player player : Bukkit.getOnlinePlayers()) { + send(player, ComType.clear, null); + } + } catch (Exception e) { + AllMusic.log.warning("§d[AllMusic]§c歌词发生出错"); + e.printStackTrace(); } } @@ -105,10 +217,10 @@ public class SideBukkit implements ISide { public void bq(String data) { if (AllMusic.getConfig().isMessageLimit() && data.length() > AllMusic.getConfig().getMessageLimitSize()) { - data = data.substring(0, 30) + "..."; + data = data.substring(0, AllMusic.getConfig().getMessageLimitSize() - 1) + "..."; } - for(Player player : Bukkit.getOnlinePlayers()){ - if(!AllMusic.getConfig().getNoMusicPlayer().contains(player.getName())){ + for (Player player : Bukkit.getOnlinePlayers()) { + if (!AllMusic.getConfig().getNoMusicPlayer().contains(player.getName())) { player.sendMessage(data); } } @@ -118,7 +230,7 @@ public class SideBukkit implements ISide { public void bqt(String data) { if (AllMusic.getConfig().isMessageLimit() && data.length() > AllMusic.getConfig().getMessageLimitSize()) { - data = data.substring(0, 30) + "..."; + data = data.substring(0, AllMusic.getConfig().getMessageLimitSize() - 1) + "..."; } String finalData = data; Bukkit.getScheduler().runTask(AllMusicBukkit.plugin, () -> { @@ -131,7 +243,7 @@ public class SideBukkit implements ISide { } @Override - public boolean NeedPlay() { + public boolean needPlay() { int online = getAllPlayer(); for (Player player : Bukkit.getOnlinePlayers()) { if (CitizensNPC.isNPC(player)) @@ -143,59 +255,6 @@ public class SideBukkit implements ISide { return online > 0; } - @Override - public void sendHudInfo(String data) { - for (Player player : Bukkit.getOnlinePlayers()) { - String Name = player.getName(); - if (!isOK(player.getName(), true)) - continue; - SaveOBJ obj = HudSave.get(Name); - if (!obj.isEnableInfo()) - continue; - send(player, "[Info]" + data, null); - } - } - - @Override - public void sendHudList(String data) { - for (Player player : Bukkit.getOnlinePlayers()) { - String Name = player.getName(); - if (!isOK(player.getName(), true)) - continue; - SaveOBJ obj = HudSave.get(Name); - if (!obj.isEnableList()) - continue; - send(player, "[List]" + data, null); - } - } - - @Override - public void sendHudSaveAll() { - for (Player player : Bukkit.getOnlinePlayers()) { - String Name = player.getName(); - try { - SaveOBJ obj = HudSave.get(Name); - String data = new Gson().toJson(obj); - send(data, Name, null); - } catch (Exception e1) { - AllMusic.log.warning("§d[AllMusic]§c数据发送发生错误"); - e1.printStackTrace(); - } - } - } - - @Override - public void clearHud(String player) { - send("[clear]", player, null); - } - - @Override - public void clearHudAll() { - for (Player player : Bukkit.getOnlinePlayers()) { - send(player, "[clear]", null); - } - } - @Override public void sendMessaget(Object obj, String message) { Bukkit.getScheduler().runTask(AllMusicBukkit.plugin, () -> ((CommandSender) obj).sendMessage(message)); @@ -300,4 +359,13 @@ public class SideBukkit implements ISide { e.printStackTrace(); } } + + private boolean isOK(Player player) { + if (player == null) + return true; + String name = player.getName(); + if (AllMusic.getConfig().getNoMusicPlayer().contains(name)) + return true; + return !AllMusic.containNowPlay(name); + } } diff --git a/src/main/java/coloryr/allmusic/side/bukkit/hooks/SpigotApi.java b/src/main/java/coloryr/allmusic/side/bukkit/hooks/SpigotApi.java index c06bcde9..ce89d59a 100644 --- a/src/main/java/coloryr/allmusic/side/bukkit/hooks/SpigotApi.java +++ b/src/main/java/coloryr/allmusic/side/bukkit/hooks/SpigotApi.java @@ -5,10 +5,6 @@ import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.command.CommandSender; public class SpigotApi { - public SpigotApi() { - new TextComponent(); - } - public static void sendMessageRun(Object obj, String Message, String Command) { CommandSender sender = (CommandSender) obj; TextComponent send = new TextComponent(Message); diff --git a/src/main/java/coloryr/allmusic/side/bukkit/hooks/VaultHook.java b/src/main/java/coloryr/allmusic/side/bukkit/hooks/VaultHook.java index 7e2ed284..2034faed 100644 --- a/src/main/java/coloryr/allmusic/side/bukkit/hooks/VaultHook.java +++ b/src/main/java/coloryr/allmusic/side/bukkit/hooks/VaultHook.java @@ -10,7 +10,8 @@ public class VaultHook { private Economy econ = null; public VaultHook() { - RegisteredServiceProvider rsp = Bukkit.getServer().getServicesManager().getRegistration(Economy.class); + RegisteredServiceProvider rsp = + Bukkit.getServer().getServicesManager().getRegistration(Economy.class); if (rsp == null) { return; } diff --git a/src/main/java/coloryr/allmusic/side/velocity/EventVelocity.java b/src/main/java/coloryr/allmusic/side/velocity/ListenerVelocity.java similarity index 94% rename from src/main/java/coloryr/allmusic/side/velocity/EventVelocity.java rename to src/main/java/coloryr/allmusic/side/velocity/ListenerVelocity.java index b0865ca2..7f116d0e 100644 --- a/src/main/java/coloryr/allmusic/side/velocity/EventVelocity.java +++ b/src/main/java/coloryr/allmusic/side/velocity/ListenerVelocity.java @@ -1,14 +1,13 @@ package coloryr.allmusic.side.velocity; import coloryr.allmusic.AllMusic; -import coloryr.allmusic.side.bc.SideBC; import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.event.connection.DisconnectEvent; import com.velocitypowered.api.event.connection.PluginMessageEvent; import com.velocitypowered.api.event.connection.PostLoginEvent; import com.velocitypowered.api.proxy.ServerConnection; -public class EventVelocity { +public class ListenerVelocity { @Subscribe public void onPlayerQuit(final DisconnectEvent event) { AllMusic.removeNowPlayPlayer(event.getPlayer().getUsername()); diff --git a/src/main/java/coloryr/allmusic/side/velocity/VelocityLog.java b/src/main/java/coloryr/allmusic/side/velocity/LogVelocity.java similarity index 70% rename from src/main/java/coloryr/allmusic/side/velocity/VelocityLog.java rename to src/main/java/coloryr/allmusic/side/velocity/LogVelocity.java index 72baa03c..40746021 100644 --- a/src/main/java/coloryr/allmusic/side/velocity/VelocityLog.java +++ b/src/main/java/coloryr/allmusic/side/velocity/LogVelocity.java @@ -1,12 +1,12 @@ package coloryr.allmusic.side.velocity; -import coloryr.allmusic.api.IMyLogger; +import coloryr.allmusic.side.IMyLogger; import org.slf4j.Logger; -public class VelocityLog implements IMyLogger { +public class LogVelocity implements IMyLogger { private final Logger logger; - public VelocityLog(Logger logger) { + public LogVelocity(Logger logger) { this.logger = logger; } diff --git a/src/main/java/coloryr/allmusic/side/velocity/SideVelocity.java b/src/main/java/coloryr/allmusic/side/velocity/SideVelocity.java index 2f4f724b..2ead2983 100644 --- a/src/main/java/coloryr/allmusic/side/velocity/SideVelocity.java +++ b/src/main/java/coloryr/allmusic/side/velocity/SideVelocity.java @@ -2,7 +2,8 @@ package coloryr.allmusic.side.velocity; import coloryr.allmusic.AllMusic; import coloryr.allmusic.AllMusicVelocity; -import coloryr.allmusic.api.ISide; +import coloryr.allmusic.side.ComType; +import coloryr.allmusic.side.ISide; import coloryr.allmusic.hud.HudSave; import coloryr.allmusic.hud.obj.SaveOBJ; import coloryr.allmusic.music.play.PlayMusic; @@ -20,52 +21,17 @@ import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.event.ClickEvent; import java.nio.charset.StandardCharsets; -import java.util.Collection; -import java.util.Iterator; -import java.util.NoSuchElementException; -import java.util.Set; +import java.util.*; import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.TimeUnit; public class SideVelocity implements ISide { public static final Set TopServers = new CopyOnWriteArraySet<>(); - private boolean isOK(Player player, boolean in) { - try { - if (player == null) - return false; - if (AllMusic.getConfig().getNoMusicServer() - .contains(player.getCurrentServer().get().getServerInfo().getName())) - return false; - String name = player.getUsername(); - if (AllMusic.getConfig().getNoMusicPlayer().contains(player.getUsername())) - return false; - return !in || AllMusic.containNowPlay(name); - } catch (NoSuchElementException e) { - return false; - } - } @Override public void send(String data, String player, Boolean isplay) { if (AllMusicVelocity.plugin.server.getPlayer(player).isPresent()) { send(AllMusicVelocity.plugin.server.getPlayer(player).get(), data, isplay); - } else { - AllMusic.log.warning("§d[AllMusic]§c找不到玩家:" + player); - } - } - - @Override - public void send(String data, Boolean isplay) { - try { - Collection values = AllMusicVelocity.plugin.server.getAllPlayers(); - for (Player player : values) { - if (isplay && !isOK(player, false)) - continue; - send(player, data, isplay); - } - } catch (Exception e) { - AllMusic.log.warning("§d[AllMusic]§c歌曲发送发生错误"); - e.printStackTrace(); } } @@ -78,7 +44,7 @@ public class SideVelocity implements ISide { public void bq(String data) { if (AllMusic.getConfig().isMessageLimit() && data.length() > AllMusic.getConfig().getMessageLimitSize()) { - data = data.substring(0, 30) + "..."; + data = data.substring(0, AllMusic.getConfig().getMessageLimitSize() - 1) + "..."; } Component message = Component.text(data); for (RegisteredServer server : AllMusicVelocity.plugin.server.getAllServers()) { @@ -96,7 +62,7 @@ public class SideVelocity implements ISide { } @Override - public boolean NeedPlay() { + public boolean needPlay() { int online = 0; for (RegisteredServer server : AllMusicVelocity.plugin.server.getAllServers()) { if (AllMusic.getConfig().getNoMusicServer().contains(server.getServerInfo().getName())) @@ -108,16 +74,73 @@ public class SideVelocity implements ISide { return online > 0; } + @Override + public void sendStop() { + try { + for (Player player : AllMusicVelocity.plugin.server.getAllPlayers()) { + send(player, ComType.stop, false); + } + } catch (Exception e) { + AllMusic.log.warning("§d[AllMusic]§c停止指令发送出错"); + e.printStackTrace(); + } + } + + @Override + public void sendStop(String name) { + try { + Optional player = AllMusicVelocity.plugin.server.getPlayer(name); + if (!player.isPresent()) + return; + send(player.get(), ComType.stop, false); + } catch (Exception e) { + AllMusic.log.warning("§d[AllMusic]§c停止指令发送出错"); + e.printStackTrace(); + } + } + + @Override + public void sendMusic(String url) { + try { + for (Player player : AllMusicVelocity.plugin.server.getAllPlayers()) { + if (isOK(player)) + continue; + send(player, ComType.play + url, false); + } + } catch (Exception e) { + AllMusic.log.warning("§d[AllMusic]§c停止指令发送出错"); + e.printStackTrace(); + } + } + + @Override + public void sendPic(String url) { + try { + for (Player player : AllMusicVelocity.plugin.server.getAllPlayers()) { + if (isOK(player)) + continue; + String name = player.getUsername(); + SaveOBJ obj = HudSave.get(name); + if (!obj.isEnablePic()) + continue; + send(player, ComType.img + url, false); + } + } catch (Exception e) { + AllMusic.log.warning("§d[AllMusic]§c停止指令发送出错"); + e.printStackTrace(); + } + } + @Override public void sendHudLyric(String data) { try { for (Player player : AllMusicVelocity.plugin.server.getAllPlayers()) { - if (!isOK(player, true)) + if (isOK(player)) continue; SaveOBJ obj = HudSave.get(player.getUsername()); if (!obj.isEnableLyric()) continue; - send(player, "[Lyric]" + data, null); + send(player, ComType.lyric + data, null); } } catch (Exception e) { AllMusic.log.warning("§d[AllMusic]§c歌词发送出错"); @@ -129,12 +152,12 @@ public class SideVelocity implements ISide { public void sendHudInfo(String data) { try { for (Player player : AllMusicVelocity.plugin.server.getAllPlayers()) { - if (!isOK(player, true)) + if (isOK(player)) continue; SaveOBJ obj = HudSave.get(player.getUsername()); if (!obj.isEnableInfo()) continue; - send(player, "[Info]" + data, null); + send(player, ComType.info + data, null); } } catch (Exception e) { AllMusic.log.warning("§d[AllMusic]§c歌词信息发送出错"); @@ -146,13 +169,13 @@ public class SideVelocity implements ISide { public void sendHudList(String data) { try { for (Player player : AllMusicVelocity.plugin.server.getAllPlayers()) { - if (!isOK(player, true)) + if (isOK(player)) continue; String name = player.getUsername(); SaveOBJ obj = HudSave.get(name); if (!obj.isEnableList()) continue; - send(player, "[List]" + data, null); + send(player, ComType.list + data, null); } } catch (Exception e) { AllMusic.log.warning("§d[AllMusic]§c歌曲列表发送出错"); @@ -177,15 +200,15 @@ public class SideVelocity implements ISide { @Override public void clearHud(String player) { - send("[clear]", player, null); + send(ComType.clear, player, null); } @Override - public void clearHudAll() { + public void clearHud() { try { Collection values = AllMusicVelocity.plugin.server.getAllPlayers(); for (Player players : values) { - send(players, "[clear]", null); + send(players, ComType.clear, null); } } catch (Exception e) { AllMusic.log.warning("§d[AllMusic]§c歌词发生出错"); @@ -318,11 +341,10 @@ public class SideVelocity implements ISide { else out.writeUTF(PlayMusic.lyricItem.getTlyric()); server.sendPluginMessage(AllMusicVelocity.channelBC, out.toByteArray()); - } - public static void sendPingToServer(ServerConnection server) { - ByteArrayDataOutput out = ByteStreams.newDataOutput(); - out.writeInt(200); + out = ByteStreams.newDataOutput(); + out.writeInt(9); + out.writeBoolean(PlayMusic.lyricItem.isHaveT()); server.sendPluginMessage(AllMusicVelocity.channelBC, out.toByteArray()); } @@ -332,7 +354,9 @@ public class SideVelocity implements ISide { while (iterator.hasNext()) { ServerConnection server = iterator.next(); try{ - sendPingToServer(server); + ByteArrayDataOutput out = ByteStreams.newDataOutput(); + out.writeInt(200); + server.sendPluginMessage(AllMusicVelocity.channelBC, out.toByteArray()); }catch (Exception e){ iterator.remove(); } @@ -369,7 +393,7 @@ public class SideVelocity implements ISide { ByteBuf buf = Unpooled.buffer(bytes.length + 1); buf.writeByte(666); buf.writeBytes(bytes); - runTask(() -> players.sendPluginMessage(AllMusicVelocity.plugin.channel, buf.array())); + runTask(() -> players.sendPluginMessage(AllMusicVelocity.channel, buf.array())); if (isplay != null) { if (isplay) { AllMusic.addNowPlayPlayer(players.getUsername()); @@ -382,4 +406,20 @@ public class SideVelocity implements ISide { e.printStackTrace(); } } + + private boolean isOK(Player player) { + try { + if (player == null) + return true; + if (AllMusic.getConfig().getNoMusicServer() + .contains(player.getCurrentServer().get().getServerInfo().getName())) + return true; + String name = player.getUsername(); + if (AllMusic.getConfig().getNoMusicPlayer().contains(player.getUsername())) + return true; + return !AllMusic.containNowPlay(name); + } catch (NoSuchElementException e) { + return true; + } + } } diff --git a/src/main/java/coloryr/allmusic/utils/logs.java b/src/main/java/coloryr/allmusic/utils/Logs.java similarity index 98% rename from src/main/java/coloryr/allmusic/utils/logs.java rename to src/main/java/coloryr/allmusic/utils/Logs.java index 3e576b0c..0fc7891b 100644 --- a/src/main/java/coloryr/allmusic/utils/logs.java +++ b/src/main/java/coloryr/allmusic/utils/Logs.java @@ -8,7 +8,7 @@ import java.io.IOException; import java.io.PrintWriter; import java.util.Date; -public class logs { +public class Logs { private static final Date date = new Date(); public static File file; private static FileWriter fw; diff --git a/src/main/resources/message.json b/src/main/resources/message.json index b21ccfd9..ee425e34 100644 --- a/src/main/resources/message.json +++ b/src/main/resources/message.json @@ -62,7 +62,9 @@ "NoMusic": "没有播放的音乐", "NoList": "队列中无歌曲", "NoLyric": "无歌词", - "PicSize": "§d[ALLMusic]§e设置图片尺寸为%Size%" + "PicSize": "§d[ALLMusic]§e设置图片尺寸为%Size%", + "Music": "%Name% %AllTime%/%NowTime%\n%Author%\n%Alia%\n%Al%\nby: %Player%", + "Lyric": "%Lyric%\n%Tlyric%" }, "Command": { "Error": "§d[AllMusic]§c参数错误,请输入/music help获取帮助",