package cc.fascinated.chat; import cc.fascinated.account.Account; import cc.fascinated.account.AccountManager; import cc.fascinated.config.Lang; import cc.fascinated.utils.Manager; import cc.fascinated.utils.MessageUtils; import cc.fascinated.utils.Style; import io.papermc.paper.event.player.AsyncChatEvent; import lombok.Getter; import lombok.RequiredArgsConstructor; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import java.util.HashMap; import java.util.regex.Pattern; @RequiredArgsConstructor @Getter enum BlockReason { DOMAIN("Domain was detected in the message."), DUPLICATE("Duplicate message was detected."), IP("IP address was detected in the message."); private final String reason; } public class ChatManager extends Manager { private final HashMap lastMessage = new HashMap<>(); private final Pattern domainPattern = Pattern.compile("^((?!-)[A-Za-z0-9-]{1,63}(? { MiniMessage miniMessage = Style.getMiniMessage(); return miniMessage.deserialize(Lang.CHAT_FORMAT.getAsString() .replace("%chatcolor%", color.toString()) .replace("%name%", account.getName()) .replace("%message%", miniMessage.stripTags(messageContent)) ); }); lastMessage.put(account, messageContent); } }