@@ -66,8 +66,6 @@ public void checkChat(AsyncPlayerChatEvent event) {
6666 if (InteractiveChat .ChatManagerHook ) {
6767 return ;
6868 }
69-
70- checkMention (event );
7169
7270 String message = event .getMessage ();
7371 if (InteractiveChat .maxPlacholders >= 0 ) {
@@ -100,12 +98,14 @@ public void checkChatforChatManager(AsyncPlayerChatEvent event) {
10098 if (event .isCancelled ()) {
10199 return ;
102100 }
101+
102+ checkMention (event );
103+
104+
103105 if (!InteractiveChat .ChatManagerHook ) {
104106 return ;
105107 }
106108
107- checkMention (event );
108-
109109 String message = event .getMessage ();
110110 if (InteractiveChat .maxPlacholders >= 0 ) {
111111 int count = 0 ;
@@ -151,25 +151,28 @@ private void checkMention(AsyncPlayerChatEvent event) {
151151 int index = message .toLowerCase ().indexOf (name .toLowerCase ());
152152 if (index >= 0 ) {
153153 char escape = (index - 1 ) < 0 ? ' ' : message .charAt (index - 1 );
154- char escapeescape = (index - 2 ) < 0 ? ' ' : message .charAt (index - 2 );
155- if ((escape != '\\' ) || ((escape == '\\' && escapeescape == '\\' ))) {
156- if (escapeescape == '\\' ) {
157- StringBuilder sb = new StringBuilder (message );
158- sb .deleteCharAt (index - 2 );
159- event .setMessage (sb .toString ());
160- message = event .getMessage ();
161- }
162- if (!player .equals (sender )) {
163- InteractiveChat .mentionPair .put (player .getUniqueId (), new MentionPair (sender .getUniqueId (), player .getUniqueId (), InteractiveChat .mentionPair ));
164- }
165- break ;
166- } else {
167- if (escape == '\\' ) {
168- StringBuilder sb = new StringBuilder (message );
169- sb .deleteCharAt (index - 1 );
170- event .setMessage (sb .toString ());
171- message = event .getMessage ();
172- }
154+ char after = (index + name .length ()) >= message .length () ? ' ' : message .charAt (index + name .length ());
155+ if (String .valueOf (escape ).matches ("[ \\ \\ ]" ) && String .valueOf (after ).matches ("[ \\ \\ ]" )) {
156+ char escapeescape = (index - 2 ) < 0 ? ' ' : message .charAt (index - 2 );
157+ if ((escape != '\\' ) || ((escape == '\\' && escapeescape == '\\' ))) {
158+ if (escapeescape == '\\' ) {
159+ StringBuilder sb = new StringBuilder (message );
160+ sb .deleteCharAt (index - 2 );
161+ event .setMessage (sb .toString ());
162+ message = event .getMessage ();
163+ }
164+ if (!player .equals (sender )) {
165+ InteractiveChat .mentionPair .put (player .getUniqueId (), new MentionPair (sender .getUniqueId (), player .getUniqueId (), InteractiveChat .mentionPair ));
166+ }
167+ break ;
168+ } else {
169+ if (escape == '\\' ) {
170+ StringBuilder sb = new StringBuilder (message );
171+ sb .deleteCharAt (index - 1 );
172+ event .setMessage (sb .toString ());
173+ message = event .getMessage ();
174+ }
175+ }
173176 }
174177 }
175178 }
0 commit comments