1- package majhrs16 .cht .events ;
2-
3- import org .bukkit .configuration .file .FileConfiguration ;
4- import org .bukkit .event .EventPriority ;
5- import org .bukkit .event .EventHandler ;
6- import org .bukkit .event .Listener ;
7- import org .bukkit .OfflinePlayer ;
8- import org .bukkit .entity .Player ;
9- import org .bukkit .Bukkit ;
10-
11- import majhrs16 .cht .translator .ChatTranslatorAPI ;
12- import majhrs16 .cht .events .custom .Message ;
13- import majhrs16 .dst .utils .AccountManager ;
14- import majhrs16 .cht .util .cache .Config ;
15- import majhrs16 .dst .utils .DiscordChat ;
16- import majhrs16 .cht .ChatTranslator ;
17- import majhrs16 .cht .util .util ;
18-
19- import net .dv8tion .jda .api .entities .User ;
20-
21- import java .util .regex .Matcher ;
22- import java .util .ArrayList ;
23- import java .util .List ;
24-
25- public class MessageListener implements Listener {
26- private final ChatTranslator plugin = ChatTranslator .getInstance ();
27- private final ChatTranslatorAPI API = ChatTranslatorAPI .getInstance ();
28-
29- @ EventHandler (priority = EventPriority .LOWEST )
30- public void onMessage (Message event ) {
31- Bukkit .getServer ().getScheduler ().runTaskLater (plugin , () -> {
32- toMinecraft (event );
33-
34- String path = "to_discord" ;
35- FileConfiguration config = plugin .config .get ();
36- event .getTo ().setMessagesFormats (config .contains ("formats." + path + ".messages" ) ? path : null );
37- event .getTo ().setToolTips (config .contains ("formats." + path + ".toolTips" ) ? path : null );
38- event .getTo ().setSounds (config .contains ("formats." + path + ".sounds" ) ? path : null );
39-
40- toDiscord (event );
41-
42- event .setCancelled (true );
43- }, 1L );
44- }
45-
46- public void toMinecraft (Message event ) {
47- if (event .isEmpty ())
48- return ;
49-
50- Message to_model = util .createChat (event .getSender (), event .getMessages (), event .getLangSource (), event .getLangSource (), "mention" );
51- Matcher matcher = Chat .mentions .matcher (event .getMessages ());
52- List <Player > players = new ArrayList <>();
53-
54- while (matcher .find ()) {
55- String nick_mention = matcher .group (1 );
56-
57- Player to_player = Bukkit .getPlayer (nick_mention );
58-
59- if (to_player == null || event .getSender () == to_player || players .contains (to_player ))
60- continue ;
61-
62- else if (event .getTo ().getSender ().equals (to_player ))
63- return ;
64-
65- players .add (to_player );
66- }
67-
68- API .broadcast (to_model , players .toArray (new Player [0 ]), froms -> API .broadcast (froms , API ::sendMessage ));
69- API .sendMessage (event );
70- }
71-
72- public void toDiscord (Message event ) {
73- if (event .isEmpty ()
74- || event .isCancelled ()
75- || !Config .TranslateOthers .DISCORD .IF ()
76- || event .getLangSource () == null
77- || event .getLangTarget () == null
78- || event .getLangSource ().equals ("disabled" )
79- || event .getLangTarget ().equals ("disabled" )
80- || event .getMessagesFormats () == null
81- || event .getMessages () == null
82- || event .getTo ().getMessagesFormats () == null
83- || event .getTo ().getMessagesFormats ().isEmpty ())
84- return ;
85-
86- Matcher matcher = Chat .mentions .matcher (event .getMessages ());
87-
88- while (matcher .find ()) {
89- String nick_mention = matcher .group (1 );
90-
91- @ SuppressWarnings ("deprecation" )
92- OfflinePlayer to_player = Bukkit .getOfflinePlayer (nick_mention );
93-
94- if (!to_player .hasPlayedBefore ())
95- continue ;
96-
97- User user = AccountManager .getDiscord (util .getUUID (to_player ));
98-
99- if (user == null )
100- continue ;
101-
102- String user_mention = user .getAsMention ();
103- event .getTo ().setMessages (event .getTo ().getMessages ().replace (matcher .group (), user_mention ));
104- }
105-
106- Message from = API .formatMessage (event );
107-
108- DiscordChat .broadcast ("discord.channels.chat" , channel -> {
109- channel .sendMessage (util .stripColor (from .getTo ().getMessagesFormats ())).queue ();
110-
111- if (from .getTo ().getToolTips () != null )
112- channel .sendMessage (util .stripColor (from .getTo ().getToolTips ())).queue ();
113- });
114- }
1+ package majhrs16 .cht .events ;
2+
3+ import org .bukkit .configuration .file .FileConfiguration ;
4+ import org .bukkit .event .EventPriority ;
5+ import org .bukkit .event .EventHandler ;
6+ import org .bukkit .event .Listener ;
7+ import org .bukkit .OfflinePlayer ;
8+ import org .bukkit .Bukkit ;
9+
10+ import majhrs16 .cht .translator .ChatTranslatorAPI ;
11+ import majhrs16 .cht .events .custom .Message ;
12+ import majhrs16 .dst .utils .AccountManager ;
13+ import majhrs16 .dst .DiscordTranslator ;
14+ import majhrs16 .cht .util .cache .Config ;
15+ import majhrs16 .dst .utils .DiscordChat ;
16+ import majhrs16 .cht .ChatTranslator ;
17+ import majhrs16 .cht .util .util ;
18+
19+ import net .dv8tion .jda .api .entities .Member ;
20+ import net .dv8tion .jda .api .entities .Guild ;
21+ import net .dv8tion .jda .api .entities .User ;
22+
23+ import java .util .regex .Matcher ;
24+
25+ public class MessageListener implements Listener {
26+ private final ChatTranslator plugin = ChatTranslator .getInstance ();
27+ private final ChatTranslatorAPI API = ChatTranslatorAPI .getInstance ();
28+
29+ @ EventHandler (priority = EventPriority .LOWEST )
30+ public void onMessage (Message event ) {
31+ Bukkit .getServer ().getScheduler ().runTaskLater (plugin , () -> {
32+ toMinecraft (event );
33+
34+ String path = "to_discord" ;
35+ FileConfiguration config = plugin .config .get ();
36+ event .getTo ().setMessagesFormats (config .contains ("formats." + path + ".messages" ) ? path : null );
37+ event .getTo ().setToolTips (config .contains ("formats." + path + ".toolTips" ) ? path : null );
38+ event .getTo ().setSounds (config .contains ("formats." + path + ".sounds" ) ? path : null );
39+
40+ toDiscord (event );
41+
42+ event .setCancelled (true );
43+ }, 1L );
44+ }
45+
46+ public void toMinecraft (Message event ) {
47+ if (event .isEmpty ())
48+ return ;
49+
50+ /*
51+ Message to_model = util.createChat(event.getSender(), event.getMessages(), event.getLangSource(), event.getLangSource(), "mention");
52+ Matcher matcher = Chat.mentions.matcher(event.getMessages());
53+ List<Player> players = new ArrayList<>();
54+
55+ while (matcher.find()) {
56+ String nick_mention = matcher.group(1);
57+
58+ Player to_player = Bukkit.getPlayer(nick_mention);
59+
60+ if (to_player == null || util.getUUID(event.getSender()) == util.getUUID(to_player) || players.contains(to_player))
61+ continue;
62+
63+ else if (util.getUUID(event.getTo().getSender()) == util.getUUID(to_player))
64+ return;
65+
66+ players.add(to_player);
67+ }
68+
69+ API.broadcast(to_model, players.toArray(new Player[0]), froms -> API.broadcast(froms, API::sendMessage));
70+ */
71+
72+ API .sendMessage (event );
73+ }
74+
75+ @ SuppressWarnings ("deprecation" )
76+ public void toDiscord (Message event ) {
77+ if (event .isEmpty ()
78+ || event .isCancelled ()
79+ || !Config .TranslateOthers .DISCORD .IF ()
80+ || event .getLangSource () == null
81+ || event .getLangTarget () == null
82+ || event .getLangSource ().equals ("disabled" )
83+ || event .getLangTarget ().equals ("disabled" )
84+ || event .getMessagesFormats () == null
85+ || event .getMessages () == null
86+ || event .getTo ().getMessagesFormats () == null
87+ || event .getTo ().getMessagesFormats ().isEmpty ())
88+ return ;
89+
90+ Matcher matcher = Chat .mentions .matcher (event .getMessages ());
91+
92+ while (matcher .find ()) {
93+ User user = null ;
94+ String nick_mention = matcher .group (1 );
95+
96+ OfflinePlayer to_player = Bukkit .getOfflinePlayer (nick_mention );
97+
98+ if (to_player .hasPlayedBefore ())
99+ user = AccountManager .getDiscord (util .getUUID (to_player ));
100+
101+ else {
102+ boolean ok = false ;
103+ for (Guild guild : DiscordTranslator .getJda ().getGuilds ()) {
104+ for (Member member : guild .retrieveMembersByPrefix (nick_mention , 100 ).get ()) {
105+ String tag = member .getUser ().getAsTag ();
106+ if (nick_mention .equalsIgnoreCase (tag .substring (0 , tag .lastIndexOf ("#" )))) {
107+ user = member .getUser ();
108+ ok = true ;
109+ }
110+
111+ if (ok ) break ;
112+ }
113+
114+ if (ok ) break ;
115+ }
116+ }
117+
118+ if (user == null )
119+ continue ;
120+
121+ String user_mention = user .getAsMention ();
122+ event .getTo ().setMessages (event .getTo ().getMessages ().replace (matcher .group (), user_mention ));
123+ }
124+
125+ Message from = API .formatMessage (event );
126+
127+ DiscordChat .broadcast ("discord.channels.chat" , channel -> {
128+ channel .sendMessage (util .stripColor (from .getTo ().getMessagesFormats ())).queue ();
129+
130+ if (from .getTo ().getToolTips () != null )
131+ channel .sendMessage (util .stripColor (from .getTo ().getToolTips ())).queue ();
132+ });
133+ }
115134}
0 commit comments