|
1 | 1 | package com.loohp.interactivechat.Listeners; |
2 | 2 |
|
3 | 3 | import java.io.IOException; |
4 | | -import java.util.ArrayList; |
5 | | -import java.util.List; |
| 4 | +import java.util.HashMap; |
| 5 | +import java.util.Map; |
| 6 | +import java.util.Map.Entry; |
6 | 7 | import java.util.UUID; |
7 | 8 |
|
8 | 9 | import org.bukkit.Bukkit; |
@@ -172,30 +173,42 @@ private void checkMention(AsyncPlayerChatEvent event) { |
172 | 173 | String message = event.getMessage(); |
173 | 174 | Player sender = event.getPlayer(); |
174 | 175 | if (InteractiveChat.AllowMention == true && sender.hasPermission("interactivechat.mention.player")) { |
| 176 | + Map<String, UUID> playernames = new HashMap<>(); |
175 | 177 | for (Player player : Bukkit.getOnlinePlayers()) { |
176 | | - List<String> playernames = new ArrayList<String>(); |
177 | | - playernames.add(ChatColorUtils.stripColor(player.getName())); |
| 178 | + playernames.put(ChatColorUtils.stripColor(player.getName()), player.getUniqueId()); |
178 | 179 | if (!player.getName().equals(player.getDisplayName())) { |
179 | | - playernames.add(ChatColorUtils.stripColor(player.getDisplayName())); |
| 180 | + playernames.put(ChatColorUtils.stripColor(player.getDisplayName()), player.getUniqueId()); |
180 | 181 | } |
181 | 182 | if (InteractiveChat.EssentialsHook) { |
182 | 183 | if (InteractiveChat.essenNick.containsKey(player)) { |
183 | | - playernames.add(ChatColorUtils.stripColor(InteractiveChat.essenNick.get(player))); |
| 184 | + playernames.put(ChatColorUtils.stripColor(InteractiveChat.essenNick.get(player)), player.getUniqueId()); |
184 | 185 | } |
185 | 186 | } |
186 | | - for (String name : playernames) { |
187 | | - int index = message.toLowerCase().indexOf(name.toLowerCase()); |
188 | | - if (index >= 0) { |
189 | | - char before = (index - 1) < 0 ? ' ' : message.charAt(index - 1); |
190 | | - char after = (index + name.length()) >= message.length() ? ' ' : message.charAt(index + name.length()); |
191 | | - if (String.valueOf(before).matches("[^a-zA-Z0-9]") && String.valueOf(after).matches("[^a-zA-Z0-9]")) { |
192 | | - if (!player.equals(sender)) { |
193 | | - InteractiveChat.mentionPair.put(player.getUniqueId(), new MentionPair(sender.getUniqueId(), player.getUniqueId(), InteractiveChat.mentionPair)); |
194 | | - } |
195 | | - break; |
196 | | - } |
197 | | - } |
198 | | - } |
| 187 | + } |
| 188 | + for (Entry<UUID, PlayerWrapper> entry : InteractiveChat.remotePlayers.entrySet()) { |
| 189 | + playernames.put(ChatColorUtils.stripColor(entry.getValue().getName()), entry.getKey()); |
| 190 | + } |
| 191 | + for (Entry<String, UUID> entry : playernames.entrySet()) { |
| 192 | + String name = entry.getKey(); |
| 193 | + UUID uuid = entry.getValue(); |
| 194 | + int index = message.toLowerCase().indexOf(name.toLowerCase()); |
| 195 | + if (index >= 0) { |
| 196 | + char before = (index - 1) < 0 ? ' ' : message.charAt(index - 1); |
| 197 | + char after = (index + name.length()) >= message.length() ? ' ' : message.charAt(index + name.length()); |
| 198 | + if (String.valueOf(before).matches("[^a-zA-Z0-9]") && String.valueOf(after).matches("[^a-zA-Z0-9]")) { |
| 199 | + if (!uuid.equals(sender.getUniqueId())) { |
| 200 | + InteractiveChat.mentionPair.put(uuid, new MentionPair(sender.getUniqueId(), uuid, InteractiveChat.mentionPair)); |
| 201 | + if (InteractiveChat.bungeecordMode) { |
| 202 | + try { |
| 203 | + BungeeMessageSender.forwardMentionPair(sender.getUniqueId(), uuid); |
| 204 | + } catch (IOException e) { |
| 205 | + e.printStackTrace(); |
| 206 | + } |
| 207 | + } |
| 208 | + } |
| 209 | + break; |
| 210 | + } |
| 211 | + } |
199 | 212 | } |
200 | 213 | } |
201 | 214 | } |
|
0 commit comments