2024-04-19 09:46:54 +08:00
|
|
|
package com.coloryr.allmusic.server.core.side;
|
2021-06-21 22:25:17 +08:00
|
|
|
|
2026-01-31 19:06:53 +08:00
|
|
|
import com.coloryr.allmusic.codec.CommandType;
|
|
|
|
|
import com.coloryr.allmusic.codec.HudPosObj;
|
|
|
|
|
import com.coloryr.allmusic.codec.HudType;
|
2024-04-19 09:46:54 +08:00
|
|
|
import com.coloryr.allmusic.server.core.AllMusic;
|
2026-03-27 18:38:48 +08:00
|
|
|
import com.coloryr.allmusic.server.core.music.PlayMusic;
|
2026-02-26 20:18:57 +08:00
|
|
|
import com.coloryr.allmusic.server.core.objs.music.PlayerAddMusicObj;
|
2024-04-19 09:46:54 +08:00
|
|
|
import com.coloryr.allmusic.server.core.objs.music.SongInfoObj;
|
2025-03-24 20:13:54 +08:00
|
|
|
import com.coloryr.allmusic.server.core.utils.HudUtils;
|
2026-03-04 13:57:59 +08:00
|
|
|
import net.kyori.adventure.text.Component;
|
2022-12-27 11:33:26 +08:00
|
|
|
|
2025-03-24 20:13:54 +08:00
|
|
|
import java.io.File;
|
|
|
|
|
import java.util.Collection;
|
|
|
|
|
import java.util.Locale;
|
2024-04-17 22:15:12 +08:00
|
|
|
|
2024-05-13 09:33:41 +08:00
|
|
|
public abstract class BaseSide {
|
2023-01-06 18:01:19 +08:00
|
|
|
/**
|
2023-01-08 20:55:21 +08:00
|
|
|
* 主线程运行任务
|
|
|
|
|
*
|
|
|
|
|
* @param run 任务
|
2023-01-06 18:01:19 +08:00
|
|
|
*/
|
2023-01-08 20:55:21 +08:00
|
|
|
public abstract void runTask(Runnable run);
|
2022-12-27 11:33:26 +08:00
|
|
|
|
2023-01-06 18:01:19 +08:00
|
|
|
/**
|
2023-01-08 20:55:21 +08:00
|
|
|
* 主线程延迟任务
|
|
|
|
|
*
|
|
|
|
|
* @param run 任务
|
|
|
|
|
* @param delay 延迟
|
|
|
|
|
*/
|
|
|
|
|
public abstract void runTask(Runnable run, int delay);
|
|
|
|
|
|
2024-05-17 09:04:46 +08:00
|
|
|
/**
|
|
|
|
|
* 检查权限
|
|
|
|
|
*
|
2024-11-19 10:53:23 +08:00
|
|
|
* @param player 用户
|
2024-05-17 09:04:46 +08:00
|
|
|
* @return 是否有权限
|
|
|
|
|
*/
|
2024-11-19 10:53:23 +08:00
|
|
|
public abstract boolean checkPermission(Object player);
|
2024-05-17 09:04:46 +08:00
|
|
|
|
2025-01-19 22:51:01 +08:00
|
|
|
/**
|
|
|
|
|
* 是否为玩家执行指令
|
2025-03-24 20:13:54 +08:00
|
|
|
*
|
2025-01-19 22:51:01 +08:00
|
|
|
* @param source 命令源
|
|
|
|
|
* @return 是否为玩家
|
|
|
|
|
*/
|
|
|
|
|
public abstract boolean isPlayer(Object source);
|
|
|
|
|
|
2023-01-08 20:55:21 +08:00
|
|
|
/**
|
|
|
|
|
* 检查权限
|
|
|
|
|
*
|
2024-11-19 10:53:23 +08:00
|
|
|
* @param player 用户
|
2023-01-08 20:55:21 +08:00
|
|
|
* @param permission 权限
|
|
|
|
|
* @return 是否有权限
|
2023-01-06 18:01:19 +08:00
|
|
|
*/
|
2024-11-19 10:53:23 +08:00
|
|
|
public abstract boolean checkPermission(Object player, String permission);
|
2022-12-27 11:33:26 +08:00
|
|
|
|
2023-01-06 18:01:19 +08:00
|
|
|
/**
|
|
|
|
|
* 是否需要播放
|
2023-01-08 20:55:21 +08:00
|
|
|
*
|
2023-01-06 18:01:19 +08:00
|
|
|
* @return 结果
|
|
|
|
|
*/
|
2025-03-24 20:13:54 +08:00
|
|
|
public abstract boolean needPlay(boolean islist);
|
2023-01-08 20:55:21 +08:00
|
|
|
|
2023-01-06 18:01:19 +08:00
|
|
|
/**
|
2025-03-24 20:13:54 +08:00
|
|
|
* 获取所有玩家
|
|
|
|
|
*
|
|
|
|
|
* @return 玩家列表
|
2023-01-06 18:01:19 +08:00
|
|
|
*/
|
2025-03-25 15:36:06 +08:00
|
|
|
public abstract Collection<?> getPlayers();
|
2023-01-08 20:55:21 +08:00
|
|
|
|
2025-03-24 20:13:54 +08:00
|
|
|
/**
|
|
|
|
|
* 获取玩家名字
|
|
|
|
|
*
|
|
|
|
|
* @param player 玩家
|
|
|
|
|
* @return 名字
|
|
|
|
|
*/
|
|
|
|
|
public abstract String getPlayerName(Object player);
|
2022-12-27 11:33:26 +08:00
|
|
|
|
2023-01-06 18:01:19 +08:00
|
|
|
/**
|
2025-03-24 20:13:54 +08:00
|
|
|
* 获取玩家所在的服务器
|
2023-01-08 20:55:21 +08:00
|
|
|
*
|
2025-03-24 20:13:54 +08:00
|
|
|
* @param player 玩家
|
|
|
|
|
* @return 名字
|
2023-01-06 18:01:19 +08:00
|
|
|
*/
|
2025-03-24 20:13:54 +08:00
|
|
|
public abstract String getPlayerServer(Object player);
|
2023-01-08 20:55:21 +08:00
|
|
|
|
2025-03-24 20:13:54 +08:00
|
|
|
/**
|
|
|
|
|
* 向玩家发送数据包
|
|
|
|
|
*
|
|
|
|
|
* @param player 玩家
|
|
|
|
|
* @param type 数据
|
|
|
|
|
* @param data 数据
|
|
|
|
|
* @param data1 数据
|
|
|
|
|
*/
|
2026-01-31 19:06:53 +08:00
|
|
|
public abstract void send(Object player, CommandType type, String data, int data1);
|
2022-12-27 11:33:26 +08:00
|
|
|
|
2023-01-06 18:01:19 +08:00
|
|
|
/**
|
2025-03-24 20:13:54 +08:00
|
|
|
* 根据名字获取玩家
|
2023-01-08 20:55:21 +08:00
|
|
|
*
|
2025-03-24 20:13:54 +08:00
|
|
|
* @param player 名字
|
|
|
|
|
* @return 玩家
|
2023-01-06 18:01:19 +08:00
|
|
|
*/
|
2025-03-24 20:13:54 +08:00
|
|
|
public abstract Object getPlayer(String player);
|
2023-01-08 20:55:21 +08:00
|
|
|
|
2024-05-13 09:33:41 +08:00
|
|
|
/**
|
2025-03-24 20:13:54 +08:00
|
|
|
* 发送bar消息
|
2024-06-21 11:06:14 +08:00
|
|
|
*
|
2024-05-13 09:33:41 +08:00
|
|
|
* @param player 玩家
|
2025-03-24 20:13:54 +08:00
|
|
|
* @param data 消息
|
2024-05-13 09:33:41 +08:00
|
|
|
*/
|
2026-03-04 13:57:59 +08:00
|
|
|
public abstract void sendBar(Object player, Component data);
|
2023-01-08 20:55:21 +08:00
|
|
|
|
2025-03-24 20:13:54 +08:00
|
|
|
/**
|
|
|
|
|
* 获取插件配置文件夹
|
|
|
|
|
*
|
|
|
|
|
* @return 文件夹
|
|
|
|
|
*/
|
|
|
|
|
public abstract File getFolder();
|
2022-12-27 11:33:26 +08:00
|
|
|
|
2023-01-06 18:01:19 +08:00
|
|
|
/**
|
2025-03-24 20:13:54 +08:00
|
|
|
* 发送消息
|
2023-01-08 20:55:21 +08:00
|
|
|
*
|
2025-03-24 20:13:54 +08:00
|
|
|
* @param obj 接受对象
|
|
|
|
|
* @param message 消息
|
2023-01-06 18:01:19 +08:00
|
|
|
*/
|
2026-03-04 13:57:59 +08:00
|
|
|
public abstract void sendMessage(Object obj, Component message);
|
2025-03-24 20:13:54 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 当歌曲添加时触发的事件
|
|
|
|
|
*
|
|
|
|
|
* @param obj 歌曲信息
|
|
|
|
|
* @return 是否阻止播放
|
|
|
|
|
*/
|
|
|
|
|
public abstract boolean onMusicPlay(SongInfoObj obj);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 当歌曲播放时触发的事件
|
|
|
|
|
*
|
|
|
|
|
* @param obj 发送者
|
|
|
|
|
* @param music 歌曲信息
|
|
|
|
|
* @return 是否阻止添加
|
|
|
|
|
*/
|
2026-02-26 20:18:57 +08:00
|
|
|
public abstract boolean onMusicAdd(Object obj, PlayerAddMusicObj music);
|
2025-03-24 20:13:54 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 广播消息
|
|
|
|
|
*
|
|
|
|
|
* @param data 消息
|
2023-01-08 20:55:21 +08:00
|
|
|
*/
|
2026-03-04 13:57:59 +08:00
|
|
|
public abstract void broadcast(Component data);
|
2025-03-24 20:13:54 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 重载
|
|
|
|
|
*/
|
|
|
|
|
public final void reload() {
|
2026-04-03 16:59:01 +08:00
|
|
|
AllMusic.init(getFolder());
|
2025-03-24 20:13:54 +08:00
|
|
|
}
|
2023-01-08 20:55:21 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 发送歌曲位置信息
|
|
|
|
|
*
|
|
|
|
|
* @param player 用户名
|
2024-04-17 22:15:12 +08:00
|
|
|
* @param pos 歌曲位置(毫秒)
|
2023-01-08 20:55:21 +08:00
|
|
|
*/
|
2025-03-24 20:13:54 +08:00
|
|
|
public final void sendPos(String player, int pos) {
|
|
|
|
|
Object player1 = getPlayer(player);
|
|
|
|
|
if (player1 == null)
|
|
|
|
|
return;
|
|
|
|
|
if (AllMusic.isSkip(player, getPlayerServer(player), true))
|
|
|
|
|
return;
|
|
|
|
|
try {
|
2026-01-31 19:06:53 +08:00
|
|
|
send(player1, CommandType.POS, null, pos);
|
2025-03-24 20:13:54 +08:00
|
|
|
} catch (Exception e) {
|
2026-03-04 16:05:57 +08:00
|
|
|
AllMusic.log.data("<light_purple>[AllMusic]<red>清空Hud发生出错");
|
2025-03-24 20:13:54 +08:00
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 发送停止指令
|
|
|
|
|
*
|
|
|
|
|
* @param name 用户名
|
|
|
|
|
*/
|
|
|
|
|
public final void sendStop(String name) {
|
2026-03-27 18:38:48 +08:00
|
|
|
PlayMusic.removeNowPlayPlayer(name);
|
2025-03-24 20:13:54 +08:00
|
|
|
Object player = getPlayer(name);
|
|
|
|
|
if (player == null)
|
|
|
|
|
return;
|
|
|
|
|
try {
|
2026-01-31 19:06:53 +08:00
|
|
|
send(player, CommandType.STOP, null, 0);
|
2025-03-24 20:13:54 +08:00
|
|
|
} catch (Exception e) {
|
2026-03-04 16:05:57 +08:00
|
|
|
AllMusic.log.data("<light_purple>[AllMusic]<red>停止指令发送出错");
|
2025-03-24 20:13:54 +08:00
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 发送停止指令
|
|
|
|
|
*/
|
|
|
|
|
public final void sendStop() {
|
2026-03-27 18:38:48 +08:00
|
|
|
PlayMusic.clearNowPlayer();
|
2025-03-24 20:13:54 +08:00
|
|
|
try {
|
|
|
|
|
for (Object player : getPlayers()) {
|
2026-01-31 19:06:53 +08:00
|
|
|
send(player, CommandType.STOP, null, 0);
|
2025-03-24 20:13:54 +08:00
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
2026-03-04 16:05:57 +08:00
|
|
|
AllMusic.log.data("<light_purple>[AllMusic]<red>停止指令发送出错");
|
2025-03-24 20:13:54 +08:00
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 向指定玩家发送播放歌曲指令
|
|
|
|
|
*
|
|
|
|
|
* @param player 玩家
|
|
|
|
|
* @param url 地址
|
|
|
|
|
*/
|
|
|
|
|
public final void sendMusic(String player, String url) {
|
2026-03-27 18:38:48 +08:00
|
|
|
PlayMusic.addNowPlayPlayer(player);
|
2025-03-24 20:13:54 +08:00
|
|
|
Object player1 = getPlayer(player);
|
|
|
|
|
if (player1 == null)
|
|
|
|
|
return;
|
|
|
|
|
try {
|
|
|
|
|
if (AllMusic.isSkip(player, getPlayerServer(player), false))
|
|
|
|
|
return;
|
2026-01-31 19:06:53 +08:00
|
|
|
send(player1, CommandType.PLAY, url, 0);
|
2025-03-24 20:13:54 +08:00
|
|
|
} catch (Exception e) {
|
2026-03-04 16:05:57 +08:00
|
|
|
AllMusic.log.data("<light_purple>[AllMusic]<red>歌曲指令发送出错");
|
2025-03-24 20:13:54 +08:00
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-12-27 11:33:26 +08:00
|
|
|
|
2023-01-06 18:01:19 +08:00
|
|
|
/**
|
|
|
|
|
* 发送Hud的歌词数据
|
2023-01-08 20:55:21 +08:00
|
|
|
*
|
2023-01-06 18:01:19 +08:00
|
|
|
* @param data 数据
|
|
|
|
|
*/
|
2025-03-24 20:13:54 +08:00
|
|
|
public final void sendHudLyric(String data) {
|
|
|
|
|
for (Object player : getPlayers()) {
|
|
|
|
|
String name = getPlayerName(player);
|
|
|
|
|
if (name == null)
|
|
|
|
|
continue;
|
|
|
|
|
name = name.toLowerCase(Locale.ROOT);
|
|
|
|
|
if (AllMusic.isSkip(name, getPlayerServer(player), true))
|
|
|
|
|
continue;
|
|
|
|
|
try {
|
2026-01-31 19:06:53 +08:00
|
|
|
HudPosObj obj = HudUtils.get(name);
|
2025-03-24 20:13:54 +08:00
|
|
|
if (!obj.lyric.enable)
|
|
|
|
|
continue;
|
2026-01-31 19:06:53 +08:00
|
|
|
send(player, CommandType.LYRIC, data, 0);
|
2025-03-24 20:13:54 +08:00
|
|
|
} catch (Exception e) {
|
2026-03-04 16:05:57 +08:00
|
|
|
AllMusic.log.data("<light_purple>[AllMusic]<red>歌词发送出错");
|
2025-03-24 20:13:54 +08:00
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-12-27 11:33:26 +08:00
|
|
|
|
2023-01-06 18:01:19 +08:00
|
|
|
/**
|
|
|
|
|
* 发送Hud的信息数据
|
2023-01-08 20:55:21 +08:00
|
|
|
*
|
2023-01-06 18:01:19 +08:00
|
|
|
* @param data 数据
|
|
|
|
|
*/
|
2025-03-24 20:13:54 +08:00
|
|
|
public final void sendHudInfo(String data) {
|
|
|
|
|
for (Object player : getPlayers()) {
|
|
|
|
|
String name = getPlayerName(player);
|
|
|
|
|
if (name == null)
|
|
|
|
|
continue;
|
|
|
|
|
name = name.toLowerCase(Locale.ROOT);
|
|
|
|
|
if (AllMusic.isSkip(name, getPlayerServer(player), true))
|
|
|
|
|
continue;
|
|
|
|
|
try {
|
2026-01-31 19:06:53 +08:00
|
|
|
HudPosObj obj = HudUtils.get(name);
|
2025-03-24 20:13:54 +08:00
|
|
|
if (!obj.lyric.enable)
|
|
|
|
|
continue;
|
2026-01-31 19:06:53 +08:00
|
|
|
send(player, CommandType.INFO, data, 0);
|
2025-03-24 20:13:54 +08:00
|
|
|
} catch (Exception e) {
|
2026-03-04 16:05:57 +08:00
|
|
|
AllMusic.log.data("<light_purple>[AllMusic]<red>歌词信息发送出错");
|
2025-03-24 20:13:54 +08:00
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-12-27 11:33:26 +08:00
|
|
|
|
2024-04-17 22:15:12 +08:00
|
|
|
/**
|
|
|
|
|
* 发送Hud的位置信息
|
|
|
|
|
*
|
|
|
|
|
* @param name 用户名
|
|
|
|
|
*/
|
2025-03-24 20:13:54 +08:00
|
|
|
public final void sendHudPos(String name) {
|
|
|
|
|
Object player = getPlayer(name);
|
|
|
|
|
if (player == null)
|
|
|
|
|
return;
|
|
|
|
|
if (AllMusic.isSkip(name, null, false))
|
|
|
|
|
return;
|
|
|
|
|
try {
|
2026-01-31 19:06:53 +08:00
|
|
|
HudPosObj obj = HudUtils.get(name);
|
2025-03-24 20:13:54 +08:00
|
|
|
String data = AllMusic.gson.toJson(obj);
|
2026-01-31 19:06:53 +08:00
|
|
|
send(player, CommandType.HUD_DATA, data, 0);
|
2025-03-24 20:13:54 +08:00
|
|
|
} catch (Exception e) {
|
2026-03-04 16:05:57 +08:00
|
|
|
AllMusic.log.data("<light_purple>[AllMusic]<red>界面位置发送出错");
|
2025-03-24 20:13:54 +08:00
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-04-17 22:15:12 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 发送Hud数据
|
2024-04-19 11:14:17 +08:00
|
|
|
*
|
2024-04-17 22:15:12 +08:00
|
|
|
* @param name 用户名
|
2024-04-19 11:14:17 +08:00
|
|
|
* @param pos 位置
|
2024-04-17 22:15:12 +08:00
|
|
|
* @param data 信息
|
|
|
|
|
*/
|
2025-03-24 20:13:54 +08:00
|
|
|
public final void sendHud(String name, HudType pos, String data) {
|
|
|
|
|
try {
|
|
|
|
|
if (pos == HudType.PIC) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Object player = getPlayer(name);
|
|
|
|
|
if (player == null)
|
|
|
|
|
return;
|
|
|
|
|
if (AllMusic.isSkip(name, getPlayerServer(player), true))
|
|
|
|
|
return;
|
|
|
|
|
switch (pos) {
|
|
|
|
|
case INFO:
|
2026-01-31 19:06:53 +08:00
|
|
|
send(player, CommandType.INFO, data, 0);
|
2025-03-24 20:13:54 +08:00
|
|
|
break;
|
|
|
|
|
case LIST:
|
2026-01-31 19:06:53 +08:00
|
|
|
send(player, CommandType.LIST, data, 0);
|
2025-03-24 20:13:54 +08:00
|
|
|
break;
|
|
|
|
|
case LYRIC:
|
2026-01-31 19:06:53 +08:00
|
|
|
send(player, CommandType.LYRIC, data, 0);
|
2025-03-24 20:13:54 +08:00
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
2026-03-04 16:05:57 +08:00
|
|
|
AllMusic.log.data("<light_purple>[AllMusic]<red>停止指令发送出错");
|
2025-03-24 20:13:54 +08:00
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-04-17 22:15:12 +08:00
|
|
|
|
2023-01-06 18:01:19 +08:00
|
|
|
/**
|
|
|
|
|
* 发送Hud的歌曲列表数据
|
2023-01-08 20:55:21 +08:00
|
|
|
*
|
2023-01-06 18:01:19 +08:00
|
|
|
* @param data 数据
|
|
|
|
|
*/
|
2025-03-24 20:13:54 +08:00
|
|
|
public final void sendHudList(String data) {
|
|
|
|
|
for (Object player : getPlayers()) {
|
|
|
|
|
String name = getPlayerName(player);
|
|
|
|
|
if (name == null)
|
|
|
|
|
continue;
|
|
|
|
|
name = name.toLowerCase(Locale.ROOT);
|
|
|
|
|
if (AllMusic.isSkip(name, getPlayerServer(player), true))
|
|
|
|
|
continue;
|
|
|
|
|
try {
|
2026-01-31 19:06:53 +08:00
|
|
|
HudPosObj obj = HudUtils.get(name);
|
2025-03-24 20:13:54 +08:00
|
|
|
if (!obj.list.enable)
|
|
|
|
|
continue;
|
2026-01-31 19:06:53 +08:00
|
|
|
send(player, CommandType.LIST, data, 0);
|
2025-03-24 20:13:54 +08:00
|
|
|
} catch (Exception e) {
|
2026-03-04 16:05:57 +08:00
|
|
|
AllMusic.log.data("<light_purple>[AllMusic]<red>歌曲列表发送出错");
|
2025-03-24 20:13:54 +08:00
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-12-27 11:33:26 +08:00
|
|
|
|
2023-01-06 18:01:19 +08:00
|
|
|
/**
|
|
|
|
|
* 发送Hud位置数据
|
|
|
|
|
*/
|
2025-03-24 20:13:54 +08:00
|
|
|
public final void sendHudUtilsAll() {
|
|
|
|
|
for (Object player : getPlayers()) {
|
|
|
|
|
String name = getPlayerName(player);
|
|
|
|
|
if (name == null)
|
|
|
|
|
continue;
|
|
|
|
|
name = name.toLowerCase(Locale.ROOT);
|
|
|
|
|
try {
|
2026-01-31 19:06:53 +08:00
|
|
|
HudPosObj obj = HudUtils.get(name);
|
2025-03-24 20:13:54 +08:00
|
|
|
String data = AllMusic.gson.toJson(obj);
|
2026-01-31 19:06:53 +08:00
|
|
|
send(player, CommandType.HUD_DATA, data, 0);
|
2025-03-24 20:13:54 +08:00
|
|
|
} catch (Exception e1) {
|
2026-03-04 16:05:57 +08:00
|
|
|
AllMusic.log.data("<light_purple>[AllMusic]<red>数据发送发生错误");
|
2025-03-24 20:13:54 +08:00
|
|
|
e1.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-12-27 11:33:26 +08:00
|
|
|
|
2023-01-06 18:01:19 +08:00
|
|
|
/**
|
|
|
|
|
* 发送Bar数据
|
2023-01-08 20:55:21 +08:00
|
|
|
*
|
2023-01-06 18:01:19 +08:00
|
|
|
* @param data 数据
|
|
|
|
|
*/
|
2026-03-04 13:57:59 +08:00
|
|
|
public final void sendBar(Component data) {
|
2025-03-24 20:13:54 +08:00
|
|
|
for (Object player : getPlayers()) {
|
|
|
|
|
String name = getPlayerName(player);
|
|
|
|
|
if (name == null)
|
|
|
|
|
continue;
|
|
|
|
|
name = name.toLowerCase(Locale.ROOT);
|
|
|
|
|
try {
|
|
|
|
|
if (AllMusic.isSkip(name, getPlayerServer(player), true))
|
|
|
|
|
continue;
|
|
|
|
|
sendBar(player, data);
|
|
|
|
|
} catch (Exception e1) {
|
2026-03-04 16:05:57 +08:00
|
|
|
AllMusic.log.data("<light_purple>[AllMusic]<red>数据发送发生错误");
|
2025-03-24 20:13:54 +08:00
|
|
|
e1.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-12-27 11:33:26 +08:00
|
|
|
|
2023-01-06 18:01:19 +08:00
|
|
|
/**
|
2025-03-24 20:13:54 +08:00
|
|
|
* 发送播放歌曲指令
|
2023-01-08 20:55:21 +08:00
|
|
|
*
|
2025-03-24 20:13:54 +08:00
|
|
|
* @param url 歌曲Url
|
2023-01-06 18:01:19 +08:00
|
|
|
*/
|
2025-03-24 20:13:54 +08:00
|
|
|
public final void sendMusic(String url) {
|
|
|
|
|
for (Object player : getPlayers()) {
|
|
|
|
|
String name = getPlayerName(player);
|
|
|
|
|
if (name == null)
|
|
|
|
|
continue;
|
|
|
|
|
name = name.toLowerCase(Locale.ROOT);
|
|
|
|
|
if (AllMusic.isSkip(name, getPlayerServer(player), false))
|
|
|
|
|
continue;
|
|
|
|
|
try {
|
2026-01-31 19:06:53 +08:00
|
|
|
send(player, CommandType.PLAY, url, 0);
|
2026-03-27 18:38:48 +08:00
|
|
|
PlayMusic.addNowPlayPlayer(name);
|
2025-03-24 20:13:54 +08:00
|
|
|
} catch (Exception e) {
|
2026-03-04 16:05:57 +08:00
|
|
|
AllMusic.log.data("<light_purple>[AllMusic]<red>歌曲指令发送出错");
|
2025-03-24 20:13:54 +08:00
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-12-27 11:33:26 +08:00
|
|
|
|
2023-01-06 18:01:19 +08:00
|
|
|
/**
|
2025-03-24 20:13:54 +08:00
|
|
|
* 发送图片数据指令
|
|
|
|
|
*
|
|
|
|
|
* @param url 图片地址
|
2023-01-06 18:01:19 +08:00
|
|
|
*/
|
2025-03-24 20:13:54 +08:00
|
|
|
public final void sendPic(String url) {
|
|
|
|
|
for (Object player : getPlayers()) {
|
|
|
|
|
String name = getPlayerName(player);
|
|
|
|
|
if (name == null)
|
|
|
|
|
continue;
|
|
|
|
|
name = name.toLowerCase(Locale.ROOT);
|
|
|
|
|
if (AllMusic.isSkip(name, getPlayerServer(player), true))
|
|
|
|
|
continue;
|
2026-01-31 19:06:53 +08:00
|
|
|
HudPosObj obj = HudUtils.get(name);
|
2025-03-24 20:13:54 +08:00
|
|
|
if (!obj.pic.enable)
|
|
|
|
|
continue;
|
|
|
|
|
try {
|
2026-01-31 19:06:53 +08:00
|
|
|
send(player, CommandType.IMG, url, 0);
|
2025-03-24 20:13:54 +08:00
|
|
|
} catch (Exception e) {
|
2026-03-04 16:05:57 +08:00
|
|
|
AllMusic.log.data("<light_purple>[AllMusic]<red>图片指令发送出错");
|
2025-03-24 20:13:54 +08:00
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-01-08 20:55:21 +08:00
|
|
|
|
|
|
|
|
/**
|
2025-03-24 20:13:54 +08:00
|
|
|
* 发送图片数据指令
|
2023-01-08 20:55:21 +08:00
|
|
|
*
|
2025-03-24 20:13:54 +08:00
|
|
|
* @param player 用户名
|
|
|
|
|
* @param url 图片地址
|
2023-01-08 20:55:21 +08:00
|
|
|
*/
|
2025-03-24 20:13:54 +08:00
|
|
|
public final void sendPic(String player, String url) {
|
|
|
|
|
Object player1 = getPlayer(player);
|
|
|
|
|
if (player1 == null)
|
|
|
|
|
return;
|
|
|
|
|
if (AllMusic.isSkip(player, getPlayerServer(player), true))
|
|
|
|
|
return;
|
|
|
|
|
try {
|
2026-01-31 19:06:53 +08:00
|
|
|
send(player1, CommandType.IMG, url, 0);
|
2025-03-24 20:13:54 +08:00
|
|
|
} catch (Exception e) {
|
2026-03-04 16:05:57 +08:00
|
|
|
AllMusic.log.data("<light_purple>[AllMusic]<red>图片指令发送出错");
|
2025-03-24 20:13:54 +08:00
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-01-08 20:55:21 +08:00
|
|
|
|
2024-04-17 22:15:12 +08:00
|
|
|
/**
|
2025-03-24 20:13:54 +08:00
|
|
|
* 清理Hud数据
|
2024-04-19 11:14:17 +08:00
|
|
|
*
|
2025-03-24 20:13:54 +08:00
|
|
|
* @param name 用户名
|
2024-04-17 22:15:12 +08:00
|
|
|
*/
|
2025-03-24 20:13:54 +08:00
|
|
|
public final void clearHud(String name) {
|
|
|
|
|
Object player = getPlayer(name);
|
|
|
|
|
if (player == null)
|
|
|
|
|
return;
|
|
|
|
|
try {
|
2026-01-31 19:06:53 +08:00
|
|
|
send(player, CommandType.CLEAR, null, 0);
|
2025-03-24 20:13:54 +08:00
|
|
|
} catch (Exception e) {
|
2026-03-04 16:05:57 +08:00
|
|
|
AllMusic.log.data("<light_purple>[AllMusic]<red>清空Hud发生出错");
|
2025-03-24 20:13:54 +08:00
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 清理Hud数据
|
|
|
|
|
*/
|
|
|
|
|
public final void clearHud() {
|
|
|
|
|
for (Object player : getPlayers()) {
|
|
|
|
|
try {
|
2026-01-31 19:06:53 +08:00
|
|
|
send(player, CommandType.CLEAR, null, 0);
|
2025-03-24 20:13:54 +08:00
|
|
|
} catch (Exception e) {
|
2026-03-04 16:05:57 +08:00
|
|
|
AllMusic.log.data("<light_purple>[AllMusic]<red>清空Hud发生出错");
|
2025-03-24 20:13:54 +08:00
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-04-17 22:15:12 +08:00
|
|
|
|
2023-01-08 20:55:21 +08:00
|
|
|
/**
|
|
|
|
|
* 在主线程中广播消息
|
|
|
|
|
*
|
|
|
|
|
* @param data 消息
|
|
|
|
|
*/
|
2026-03-04 13:57:59 +08:00
|
|
|
public final void broadcastInTask(Component data) {
|
2025-01-19 22:51:01 +08:00
|
|
|
runTask(() -> broadcast(data));
|
2024-05-13 09:33:41 +08:00
|
|
|
}
|
2022-12-27 11:33:26 +08:00
|
|
|
|
2026-03-04 13:57:59 +08:00
|
|
|
/**
|
|
|
|
|
* 在主线程中广播消息
|
|
|
|
|
*
|
|
|
|
|
* @param data 消息
|
|
|
|
|
*/
|
|
|
|
|
public final void broadcastInTask(String data) {
|
|
|
|
|
broadcastInTask(AllMusic.miniMessage(data));
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-06 18:01:19 +08:00
|
|
|
/**
|
|
|
|
|
* 在主线程发送消息
|
2023-01-08 20:55:21 +08:00
|
|
|
*
|
|
|
|
|
* @param obj 接受对象
|
2023-01-06 18:01:19 +08:00
|
|
|
* @param message 消息
|
|
|
|
|
*/
|
2024-05-13 09:33:41 +08:00
|
|
|
public final void sendMessageTask(Object obj, String message) {
|
2026-03-04 13:57:59 +08:00
|
|
|
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));
|
2024-05-13 09:33:41 +08:00
|
|
|
}
|
2022-12-27 11:33:26 +08:00
|
|
|
|
2023-01-06 18:01:19 +08:00
|
|
|
/**
|
|
|
|
|
* 更新信息
|
|
|
|
|
*/
|
2024-05-09 10:07:20 +08:00
|
|
|
public void updateInfo() {
|
|
|
|
|
|
|
|
|
|
}
|
2022-12-27 11:33:26 +08:00
|
|
|
|
2023-01-06 18:01:19 +08:00
|
|
|
/**
|
|
|
|
|
* 更新歌词
|
|
|
|
|
*/
|
2024-05-09 10:07:20 +08:00
|
|
|
public void updateLyric() {
|
2022-12-27 11:33:26 +08:00
|
|
|
|
2024-05-09 10:07:20 +08:00
|
|
|
}
|
2024-04-17 22:15:12 +08:00
|
|
|
|
|
|
|
|
/**
|
2024-05-09 10:07:20 +08:00
|
|
|
* BC发送ping包
|
2024-04-17 22:15:12 +08:00
|
|
|
*/
|
2024-05-09 10:07:20 +08:00
|
|
|
public void ping() {
|
|
|
|
|
|
|
|
|
|
}
|
2026-03-04 13:57:59 +08:00
|
|
|
|
|
|
|
|
/***
|
|
|
|
|
* 在主线程中广播
|
|
|
|
|
* @param data 数据
|
|
|
|
|
*/
|
|
|
|
|
public void sendBarInTask(Component data) {
|
|
|
|
|
runTask(() -> sendBar(data));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/***
|
|
|
|
|
* 在主线程中广播
|
|
|
|
|
* @param data 数据
|
|
|
|
|
*/
|
|
|
|
|
public void sendBarInTask(String data) {
|
|
|
|
|
sendBarInTask(AllMusic.miniMessage(data));
|
|
|
|
|
}
|
2021-06-21 22:25:17 +08:00
|
|
|
}
|