Skip to content

Commit de89dcb

Browse files
committed
ChT v1.7.11
1 parent c960b6f commit de89dcb

3 files changed

Lines changed: 205 additions & 160 deletions

File tree

src/majhrs16/cht/events/Chat.java

Lines changed: 72 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,72 @@
1-
package majhrs16.cht.events;
2-
3-
import org.bukkit.event.player.AsyncPlayerChatEvent;
4-
import org.bukkit.event.EventPriority;
5-
import org.bukkit.event.EventHandler;
6-
import org.bukkit.event.Listener;
7-
import org.bukkit.Bukkit;
8-
9-
import majhrs16.cht.translator.ChatTranslatorAPI;
10-
import majhrs16.cht.events.custom.Message;
11-
import majhrs16.cht.util.cache.Config;
12-
import majhrs16.cht.ChatTranslator;
13-
import majhrs16.cht.util.util;
14-
15-
import java.util.regex.Pattern;
16-
17-
18-
public class Chat implements Listener {
19-
private final ChatTranslator plugin = ChatTranslator.getInstance();
20-
private final ChatTranslatorAPI API = ChatTranslatorAPI.getInstance();
21-
22-
public static final Pattern mentions = Pattern.compile("@([.A-Za-z0-9_]+)");
23-
24-
@EventHandler(priority = EventPriority.LOWEST)
25-
public void onChat(AsyncPlayerChatEvent event) {
26-
if (plugin.isDisabled() || event.isCancelled())
27-
return;
28-
29-
event.setCancelled(Config.NativeChat.CANCEL.IF());
30-
31-
String from_lang = API.getLang(event.getPlayer());
32-
Message model = util.createChat(event.getPlayer(), event.getMessage(), from_lang, from_lang, null);
33-
Message console = util.createChat(Bukkit.getConsoleSender(), event.getMessage().replace("\"", "\\\""), from_lang, API.getLang(Bukkit.getConsoleSender()), "console")
34-
.setSender(event.getPlayer())
35-
.setCancelledThis(true); // Evitar duplicacion para el remitente.
36-
37-
API.broadcast(model, util.getOnlinePlayers(), froms -> {
38-
froms.add(console);
39-
API.broadcast(froms);
40-
});
41-
42-
if (Config.NativeChat.CLEAR.IF())
43-
event.getRecipients().clear();
44-
}
45-
}
1+
package majhrs16.cht.events;
2+
3+
import org.bukkit.event.player.AsyncPlayerChatEvent;
4+
import org.bukkit.event.EventPriority;
5+
import org.bukkit.event.EventHandler;
6+
import org.bukkit.event.Listener;
7+
import org.bukkit.entity.Player;
8+
import org.bukkit.Bukkit;
9+
10+
import majhrs16.cht.translator.ChatTranslatorAPI;
11+
import majhrs16.cht.events.custom.Message;
12+
import majhrs16.cht.util.cache.Config;
13+
import majhrs16.cht.ChatTranslator;
14+
import majhrs16.cht.util.util;
15+
16+
import java.util.regex.Pattern;
17+
import java.util.regex.Matcher;
18+
import java.util.ArrayList;
19+
import java.util.List;
20+
21+
public class Chat implements Listener {
22+
private final ChatTranslator plugin = ChatTranslator.getInstance();
23+
private final ChatTranslatorAPI API = ChatTranslatorAPI.getInstance();
24+
25+
public static final Pattern mentions = Pattern.compile("@([A-Za-z0-9_.]+)");
26+
27+
@EventHandler(priority = EventPriority.LOWEST)
28+
public void onChat(AsyncPlayerChatEvent event) {
29+
if (plugin.isDisabled() || event.isCancelled())
30+
return;
31+
32+
event.setCancelled(Config.NativeChat.CANCEL.IF());
33+
34+
String from_lang = API.getLang(event.getPlayer());
35+
Message console = util.createChat(
36+
Bukkit.getConsoleSender(),
37+
event.getMessage().replace("\"", "\\\""),
38+
from_lang,
39+
API.getLang(Bukkit.getConsoleSender()),
40+
"console")
41+
.setSender(event.getPlayer())
42+
.setCancelledThis(true); // Evitar duplicacion para el remitente.
43+
44+
List<Player> players = new ArrayList<>();
45+
Matcher matcher = Chat.mentions.matcher(event.getMessage());
46+
while (matcher.find()) {
47+
String nick_mention = matcher.group(1);
48+
49+
Player to_player = Bukkit.getPlayer(nick_mention);
50+
51+
if (to_player == null || players.contains(to_player))
52+
continue;
53+
54+
players.add(to_player);
55+
}
56+
57+
Message model = util.createChat(
58+
event.getPlayer(),
59+
event.getMessage(),
60+
from_lang,
61+
from_lang,
62+
players.isEmpty() ? null : "mention"); // null = chat normal por defecto.
63+
64+
API.broadcast(model, players.isEmpty() ? util.getOnlinePlayers() : players.toArray(new Player[0]), froms -> {
65+
froms.add(console);
66+
API.broadcast(froms);
67+
});
68+
69+
if (Config.NativeChat.CLEAR.IF())
70+
event.getRecipients().clear();
71+
}
72+
}
Lines changed: 133 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -1,115 +1,134 @@
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
}

src/majhrs16/cht/translator/api/Core.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ default String getColor(String text) {
8686
}
8787
*/
8888

89-
9089
return org.bukkit.ChatColor.translateAlternateColorCodes('&', text);
9190
}
9291

0 commit comments

Comments
 (0)