From df304d4d89297d692567fbd814f87b975e24e0ba Mon Sep 17 00:00:00 2001 From: Color_yr <402067010@qq.com> Date: Fri, 28 Aug 2026 21:02:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8B=E4=B8=80=E9=A6=96=E6=92=AD=E6=94=BE?= =?UTF-8?q?=E6=97=B6=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../allmusic/server/core/music/PlayMusic.java | 9 +++++ .../server/core/music/PlayRuntime.java | 40 ++++++++++++------- .../server/core/objs/message/PushObj.java | 5 +++ 3 files changed, 39 insertions(+), 15 deletions(-) diff --git a/server/src/main/java/com/coloryr/allmusic/server/core/music/PlayMusic.java b/server/src/main/java/com/coloryr/allmusic/server/core/music/PlayMusic.java index cf075b39..dda44f9b 100644 --- a/server/src/main/java/com/coloryr/allmusic/server/core/music/PlayMusic.java +++ b/server/src/main/java/com/coloryr/allmusic/server/core/music/PlayMusic.java @@ -582,5 +582,14 @@ public class PlayMusic { public static void clearNowPlayer() { nowPlayPlayer.clear(); } + + public static SongInfoObj getNextMusic() { + synchronized (playList) { + if (playList.isEmpty()) { + return null; + } + return playList.get(0); + } + } } diff --git a/server/src/main/java/com/coloryr/allmusic/server/core/music/PlayRuntime.java b/server/src/main/java/com/coloryr/allmusic/server/core/music/PlayRuntime.java index c7fb9c75..12660f15 100644 --- a/server/src/main/java/com/coloryr/allmusic/server/core/music/PlayRuntime.java +++ b/server/src/main/java/com/coloryr/allmusic/server/core/music/PlayRuntime.java @@ -60,13 +60,7 @@ public class PlayRuntime { private static void clear() { isPlay = false; - VoteItem vote = PlayMusic.getVote(); - if (vote != null && vote.getType() == VoteItem.VoteType.NEXT - && vote.getApi().equalsIgnoreCase(PlayMusic.nowPlayMusic.getApi()) - && vote.getId().equalsIgnoreCase(PlayMusic.nowPlayMusic.getId())) { - AllMusic.side.broadcastInTask(AllMusic.getMessage().vote.cancel1); - PlayMusic.removeVote(); - } + checkVoteNext(); PlayMusic.musicNowTime = 0; PlayMusic.musicAllTime = 0; @@ -80,6 +74,28 @@ public class PlayRuntime { HudUtils.sendHudLyricData(); } + private static void checkVoteNext() { + VoteItem vote = PlayMusic.getVote(); + if (vote != null && vote.getType() == VoteItem.VoteType.NEXT + && vote.getApi().equalsIgnoreCase(PlayMusic.nowPlayMusic.getApi()) + && vote.getId().equalsIgnoreCase(PlayMusic.nowPlayMusic.getId())) { + AllMusic.side.broadcastInTask(AllMusic.getMessage().vote.cancel1); + PlayMusic.removeVote(); + } + } + + private static void checkVotePush() { + VoteItem vote = PlayMusic.getVote(); + SongInfoObj next = PlayMusic.getNextMusic(); + if (vote != null && next != null) { + if (vote.getType() == VoteItem.VoteType.PUSH + && vote.getId().equalsIgnoreCase(next.getId()) + && vote.getApi().equalsIgnoreCase(next.getApi())) { + PlayMusic.removeVote(); + AllMusic.side.broadcastInTask(AllMusic.getMessage().push.cancel2); + } + } + } /** * 歌曲时间定时器 @@ -120,14 +136,6 @@ public class PlayRuntime { return Math.min(AllMusic.getConfig().vote.minVote, AllMusic.side.getPlayers().size()); } - public static boolean checkMusic(String id, String api) { - if (PlayMusic.nowPlayMusic.getId().equalsIgnoreCase(id) - && PlayMusic.nowPlayMusic.getApi().equalsIgnoreCase(api)) { - return true; - } - return PlayMusic.getMusic(id, api) != null; - } - private static void sendVoteInfo(boolean timeout) { if (timeout) { VoteItem vote = PlayMusic.getVote(); @@ -229,6 +237,8 @@ public class PlayRuntime { continue; } + checkVotePush(); + IMusicApi api = AllMusic.MUSIC_APIS.get(PlayMusic.nowPlayMusic.getApi()); PlayMusic.url = PlayMusic.nowPlayMusic.getPlayerUrl() == null ? diff --git a/server/src/main/java/com/coloryr/allmusic/server/core/objs/message/PushObj.java b/server/src/main/java/com/coloryr/allmusic/server/core/objs/message/PushObj.java index fb5ab758..ca2a4689 100644 --- a/server/src/main/java/com/coloryr/allmusic/server/core/objs/message/PushObj.java +++ b/server/src/main/java/com/coloryr/allmusic/server/core/objs/message/PushObj.java @@ -12,6 +12,7 @@ public class PushObj { public String pushErr; public String cancel; public String cancel1; + public String cancel2; public String err1; public String err3; public String err4; @@ -53,6 +54,8 @@ public class PushObj { return true; if (cancel1 == null) return true; + if (cancel2 == null) + return true; return doPush == null; } @@ -85,5 +88,7 @@ public class PushObj { cancel = "[AllMusic]插歌投票已被发起者取消"; if (cancel1 == null) cancel1 = "[AllMusic]已删除你发起的投票"; + if (cancel2 == null) + cancel2 = "[AllMusic]下一首歌就是投票歌曲,已取消投票"; } }