Skip to content

Commit 9f7a4ac

Browse files
committed
1.2.2 @优化,避免艾特abc的时候abc和abcd都有提醒
1 parent bc805f9 commit 9f7a4ac

File tree

5 files changed

+36
-15
lines changed

5 files changed

+36
-15
lines changed

pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66

77
<groupId>cn.handyplus.chat</groupId>
88
<artifactId>PlayerChat</artifactId>
9-
<version>1.2.1</version>
9+
<version>1.2.2</version>
1010
<description>一款有点好用的聊天插件</description>
1111

1212
<properties>
1313
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1414
<spigot-api.vesion>1.21.4-R0.1-SNAPSHOT</spigot-api.vesion>
1515
<lombok.version>1.18.36</lombok.version>
16-
<HandyLib.version>3.15.6</HandyLib.version>
16+
<HandyLib.version>3.15.8</HandyLib.version>
1717
<placeholderapi.version>2.11.6</placeholderapi.version>
1818
<annotations.version>24.1.0</annotations.version>
1919
</properties>

src/main/java/cn/handyplus/chat/core/ChatUtil.java

+20-11
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import cn.handyplus.chat.util.ConfigUtil;
77
import cn.handyplus.lib.core.CollUtil;
88
import cn.handyplus.lib.core.JsonUtil;
9+
import cn.handyplus.lib.core.PatternUtil;
910
import cn.handyplus.lib.core.StrUtil;
1011
import cn.handyplus.lib.expand.adapter.HandySchedulerUtil;
1112
import cn.handyplus.lib.expand.adapter.PlayerSchedulerUtil;
@@ -14,7 +15,6 @@
1415
import cn.handyplus.lib.util.MessageUtil;
1516
import cn.handyplus.lib.util.RgbTextUtil;
1617
import net.md_5.bungee.api.chat.BaseComponent;
17-
import org.bukkit.Bukkit;
1818
import org.bukkit.ChatColor;
1919
import org.bukkit.Sound;
2020
import org.bukkit.entity.Player;
@@ -65,9 +65,12 @@ public synchronized static void sendTextMsg(BcUtil.BcMessageParam param, boolean
6565
}
6666
MessageUtil.sendMessage(onlinePlayer, textComponent);
6767
// 如果开启艾特,发送消息
68-
if (ChatConstants.CHAT_TYPE.equals(param.getType()) && ConfigUtil.CHAT_CONFIG.getBoolean("at.enable") && chatParam.getMessage().contains(onlinePlayer.getName())) {
69-
String sound = ConfigUtil.CHAT_CONFIG.getString("at.sound");
70-
playSound(onlinePlayer, sound);
68+
if (ChatConstants.CHAT_TYPE.equals(param.getType()) && ConfigUtil.CHAT_CONFIG.getBoolean("at.enable")) {
69+
// 获取艾特玩家
70+
if (CollUtil.isNotEmpty(chatParam.getMentionedPlayers()) && chatParam.getMentionedPlayers().contains(onlinePlayer.getName())) {
71+
String sound = ConfigUtil.CHAT_CONFIG.getString("at.sound");
72+
playSound(onlinePlayer, sound);
73+
}
7174
}
7275
}
7376
// 控制台消息
@@ -240,20 +243,26 @@ private static List<String> replaceStr(Player player, String channelName, List<S
240243
}
241244

242245
/**
243-
* @param message 消息
246+
* 处理@人
247+
*
248+
* @param mentionedPlayers 被@的人
249+
* @param message 消息
244250
* @return 新消息
245-
* @ 处理
246251
* @since 1.0.9
247252
*/
248-
public static String at(String message) {
253+
public static String at(List<String> mentionedPlayers, String message) {
249254
boolean enable = ConfigUtil.CHAT_CONFIG.getBoolean("at.enable");
250255
if (!enable) {
251256
return message;
252257
}
253-
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
254-
if (message.contains("@" + onlinePlayer.getName())) {
255-
message = message.replace("@" + onlinePlayer.getName(), ChatColor.BLUE + onlinePlayer.getName() + ChatColor.WHITE);
256-
}
258+
// 提取@的玩家名
259+
mentionedPlayers.addAll(PatternUtil.extractAtTags(message));
260+
if (CollUtil.isEmpty(mentionedPlayers)) {
261+
return message;
262+
}
263+
// 将 @玩家名 替换为高亮显示
264+
for (String playerName : mentionedPlayers) {
265+
message = message.replaceAll("@" + playerName, ChatColor.BLUE + playerName + ChatColor.RESET);
257266
}
258267
return message;
259268
}

src/main/java/cn/handyplus/chat/listener/AsyncPlayerChatEventListener.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@
2828
import org.bukkit.inventory.ItemStack;
2929
import org.bukkit.inventory.meta.ItemMeta;
3030

31+
import java.util.ArrayList;
3132
import java.util.Date;
33+
import java.util.List;
3234

3335
/**
3436
* 当玩家聊天时触发这个事件
@@ -81,7 +83,8 @@ public static void sendMsg(Player player, String message, String channel, String
8183
return;
8284
}
8385
// @处理
84-
message = ChatUtil.at(message);
86+
List<String> mentionedPlayers = new ArrayList<>();
87+
message = ChatUtil.at(mentionedPlayers, message);
8588
// 参数构建
8689
BcUtil.BcMessageParam param = new BcUtil.BcMessageParam();
8790
param.setPluginName(PlayerChat.INSTANCE.getName());
@@ -96,6 +99,8 @@ public static void sendMsg(Player player, String message, String channel, String
9699
chatParam.setTellPlayerName(tellPlayerName);
97100
// 原消息内容
98101
chatParam.setMessage(message);
102+
// @玩家处理
103+
chatParam.setMentionedPlayers(mentionedPlayers);
99104
// 有权限进行颜色代码处理
100105
chatParam.setHasColor(player.hasPermission("playerChat.color"));
101106
chatParam.setChannel(channel);

src/main/java/cn/handyplus/chat/param/ChatParam.java

+7
Original file line numberDiff line numberDiff line change
@@ -94,4 +94,11 @@ public class ChatParam {
9494
*/
9595
private String tellPlayerName;
9696

97+
/**
98+
* 被@的人
99+
*
100+
* @since 1.2.2
101+
*/
102+
private List<String> mentionedPlayers;
103+
97104
}

src/main/resources/plugin.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: PlayerChat
22
main: cn.handyplus.chat.PlayerChat
3-
version: 1.2.1
3+
version: 1.2.2
44
author: handy
55
api-version: 1.13
66
softdepend: [ PlaceholderAPI ]

0 commit comments

Comments
 (0)