Update ChatListener.java
This commit is contained in:
parent
b0e453295b
commit
fb997ae4ed
|
|
@ -5,21 +5,24 @@ import com.alttd.chat.config.Config;
|
||||||
import com.alttd.chat.handler.ChatHandler;
|
import com.alttd.chat.handler.ChatHandler;
|
||||||
import com.alttd.chat.managers.ChatUserManager;
|
import com.alttd.chat.managers.ChatUserManager;
|
||||||
import com.alttd.chat.managers.RegexManager;
|
import com.alttd.chat.managers.RegexManager;
|
||||||
|
import com.alttd.chat.objects.ChatFilter;
|
||||||
import com.alttd.chat.objects.ChatUser;
|
import com.alttd.chat.objects.ChatUser;
|
||||||
import com.alttd.chat.objects.ModifiableString;
|
import com.alttd.chat.objects.ModifiableString;
|
||||||
import com.alttd.chat.objects.Toggleable;
|
import com.alttd.chat.objects.Toggleable;
|
||||||
import com.alttd.chat.util.ALogger;
|
import com.alttd.chat.util.ALogger;
|
||||||
import com.alttd.chat.util.GalaxyUtility;
|
import com.alttd.chat.util.GalaxyUtility;
|
||||||
import com.alttd.chat.util.Utility;
|
import com.alttd.chat.util.Utility;
|
||||||
|
import io.papermc.paper.event.player.AsyncChatDecorateEvent;
|
||||||
import io.papermc.paper.event.player.AsyncChatEvent;
|
import io.papermc.paper.event.player.AsyncChatEvent;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.TextReplacementConfig;
|
import net.kyori.adventure.text.TextReplacementConfig;
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||||
import net.kyori.adventure.text.serializer.plain.PlainComponentSerializer;
|
|
||||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
|
@ -28,6 +31,19 @@ import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class ChatListener implements Listener {
|
public class ChatListener implements Listener {
|
||||||
|
|
||||||
|
private final PlainTextComponentSerializer plainTextComponentSerializer = PlainTextComponentSerializer.plainText();
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||||
|
public void onChatDecorate(AsyncChatDecorateEvent event) {
|
||||||
|
|
||||||
|
if (event.player() == null) return;
|
||||||
|
|
||||||
|
Component formatComponent = Component.text("%message%");
|
||||||
|
Component message = parseMessageContent(event.player(), plainTextComponentSerializer.serialize(event.originalMessage()));
|
||||||
|
|
||||||
|
event.result(formatComponent.replaceText(TextReplacementConfig.builder().match("%message%").replacement(message).build()));
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler(ignoreCancelled = true)
|
@EventHandler(ignoreCancelled = true)
|
||||||
public void onPlayerChat(AsyncChatEvent event) {
|
public void onPlayerChat(AsyncChatEvent event) {
|
||||||
event.setCancelled(true); //Always cancel the event because we do not want to deal with Microsoft's stupid bans
|
event.setCancelled(true); //Always cancel the event because we do not want to deal with Microsoft's stupid bans
|
||||||
|
|
@ -43,7 +59,6 @@ public class ChatListener implements Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
// ChatUser user = ChatUserManager.getChatUser(player.getUniqueId());
|
|
||||||
|
|
||||||
Set<Player> receivers = event.viewers().stream().filter(audience -> audience instanceof Player)
|
Set<Player> receivers = event.viewers().stream().filter(audience -> audience instanceof Player)
|
||||||
.map(audience -> (Player) audience)
|
.map(audience -> (Player) audience)
|
||||||
|
|
@ -61,40 +76,57 @@ public class ChatListener implements Listener {
|
||||||
"");
|
"");
|
||||||
return; // the message was blocked
|
return; // the message was blocked
|
||||||
}
|
}
|
||||||
message = modifiableString.string();
|
|
||||||
if(!player.hasPermission("chat.format")) {
|
|
||||||
message = Utility.stripTokens(message);
|
|
||||||
} else {
|
|
||||||
message = Utility.parseColors(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
Component component = Utility.parseMiniMessage(Utility.formatText(message));
|
input = render(player, input);
|
||||||
component = component.replaceText(
|
|
||||||
TextReplacementConfig.builder()
|
|
||||||
.once()
|
|
||||||
.matchLiteral("[i]")
|
|
||||||
.replacement(ChatHandler.itemComponent(player.getInventory().getItemInMainHand()))
|
|
||||||
.build());
|
|
||||||
|
|
||||||
component = render(player, component);
|
|
||||||
for (Player receiver : receivers) {
|
for (Player receiver : receivers) {
|
||||||
receiver.sendMessage(component);
|
receiver.sendMessage(input);
|
||||||
}
|
}
|
||||||
ALogger.info(PlainTextComponentSerializer.plainText().serialize(component));
|
ALogger.info(PlainTextComponentSerializer.plainText().serialize(input));
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NotNull Component render(@NotNull Player player, @NotNull Component message) {
|
public @NotNull Component render(@NotNull Player player, @NotNull Component message) {
|
||||||
ChatUser user = ChatUserManager.getChatUser(player.getUniqueId());
|
ChatUser user = ChatUserManager.getChatUser(player.getUniqueId());
|
||||||
TagResolver placeholders = TagResolver.resolver(
|
TagResolver placeholders = TagResolver.resolver(
|
||||||
Placeholder.component("sender", user.getDisplayName()),
|
Placeholder.component("sender", user.getDisplayName()),
|
||||||
// Placeholder.component("sendername", player.name()),
|
Placeholder.parsed("sendername", player.getName()),
|
||||||
Placeholder.component("prefix", user.getPrefix()),
|
Placeholder.component("prefix", user.getPrefix()),
|
||||||
Placeholder.component("prefixall", user.getPrefixAll()),
|
Placeholder.component("prefixall", user.getPrefixAll()),
|
||||||
Placeholder.component("staffprefix", user.getStaffPrefix()),
|
Placeholder.component("staffprefix", user.getStaffPrefix()),
|
||||||
Placeholder.component("message", message)
|
Placeholder.component("message", message)
|
||||||
);
|
);
|
||||||
|
|
||||||
return Utility.parseMiniMessage(Config.CHATFORMAT.replaceAll("<sendername>", player.getName()), placeholders);
|
return Utility.parseMiniMessage(Config.CHATFORMAT, placeholders);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Component parseMessageContent(Player player, String rawMessage) {
|
||||||
|
TagResolver.Builder tagResolver = TagResolver.builder();
|
||||||
|
|
||||||
|
Utility.formattingPerms.forEach((perm, pair) -> {
|
||||||
|
if (player.hasPermission(perm)) {
|
||||||
|
tagResolver.resolver(pair.getX());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
MiniMessage miniMessage = MiniMessage.builder().tags(tagResolver.build()).build();
|
||||||
|
Component component = miniMessage.deserialize(rawMessage);
|
||||||
|
for(ChatFilter chatFilter : RegexManager.getEmoteFilters()) {
|
||||||
|
component = component.replaceText(
|
||||||
|
TextReplacementConfig.builder()
|
||||||
|
.times(Config.EMOTELIMIT)
|
||||||
|
.match(chatFilter.getRegex())
|
||||||
|
.replacement(chatFilter.getReplacement()).build());
|
||||||
|
}
|
||||||
|
|
||||||
|
component = component
|
||||||
|
.replaceText(
|
||||||
|
TextReplacementConfig.builder()
|
||||||
|
.once()
|
||||||
|
.matchLiteral("[i]")
|
||||||
|
.replacement(ChatHandler.itemComponent(player.getInventory().getItemInMainHand()))
|
||||||
|
.build());
|
||||||
|
|
||||||
|
return component;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user