Added options to disable/enable the chat filter:
YAML:filter: # Enable or disable the chat filter enabled: true # Should messages be completely blocked or just censored? # true = block message, false = censor with stars block-message: false # Character used for censoring censor-character: "*" # Log violations to console log-violations: false # Notify staff members when violations occur notify-staff: true # Filter content in signs filter-signs: true # Filter content in books filter-books: false # Filter content in anvil renaming filter-anvil: false # Case sensitive filtering case-sensitive: false # Only match whole words (recommended: true) whole-word-only: true # Enable/disable IP filtering filter-ips: true # Enable/disable URL/domain filtering filter-urls: true # Enable/disable email filtering filter-emails: true # Enable/disable advertising patterns filter-advertising: true # Enable/disable spam patterns filter-spam: true # Enable/disable custom regex patterns filter-custom-regex: true # Enable/disable word replacements enable-word-replacements: true
Fixed whitelisted-domains (It only works when it's something like minecraft.net (if you include something like play.youserver.com it doesn't work)
Update v1.2.0
NEW
1. New and improved word filter
2. Support for custom regex
3. Filtering in posters and books
4. Improved spam and duplicate message detection
5. New censored and blocked words
6. Automatic swear replacement system
7. Control of capitalization, ampersands, and repeated characters
Permission Description ryzenstaff.chatfilter Allows managing the chat filter ryzenstaff.chatfilter.add Allows adding words to the blacklist ryzenstaff.chatfilter.remove Allows removing words from the blacklist ryzenstaff.chatfilter.list Allows listing all blacklisted words ryzenstaff.chatfilter.test Allows testing messages against the chat filter ryzenstaff.chatfilter.status Allows viewing the current filter status
NEW YAML (chatfilter.yml)
YAML:########################################################################################### # # # ██████╗ ██╗ ██╗███████╗███████╗███╗ ██╗ ███████╗████████╗ █████╗ ███████╗███████╗ # # ██╔══██╗╚██╗ ██╔╝╚══███╔╝██╔════╝████╗ ██║ ██╔════╝╚══██╔══╝██╔══██╗██╔════╝██╔════╝ # # ██████╔╝ ╚████╔╝ ███╔╝ █████╗ ██╔██╗ ██║ ███████╗ ██║ ███████║█████╗ █████╗ # # ██╔══██╗ ╚██╔╝ ███╔╝ ██╔══╝ ██║╚██╗██║ ╚════██║ ██║ ██╔══██║██╔══╝ ██╔══╝ # # ██║ ██║ ██║ ███████╗███████╗██║ ╚████║ ███████║ ██║ ██║ ██║██║ ██║ # # ╚═╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝╚═╝ ╚═══╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ # # # ########################################################################################### # General filter settings filter: # Enable or disable the chat filter enabled: true # Should messages be completely blocked or just censored? # true = block message, false = censor with stars block-message: false # Character used for censoring censor-character: "*" # Log violations to console log-violations: false # Notify staff members when violations occur notify-staff: true # Filter content in signs filter-signs: true # Filter content in books filter-books: false # Filter content in anvil renaming filter-anvil: false # Case sensitive filtering case-sensitive: false # Only match whole words (recommended: true) whole-word-only: true # Anti-spam settings anti-spam: # Maximum messages per second before triggering anti-spam max-messages-per-second: 3 # Maximum similar messages before blocking max-similar-messages: 2 # Time limit for duplicate message detection (in milliseconds) duplicate-message-time-limit: 5000 # Blacklisted words (will be censored or blocked) blacklisted-words: - "fuck" - "shit" - "damn" - "bitch" - "asshole" - "retard" - "idiot" - "stupid" - "noob" - "easy" - "garbage" - "loser" - "suck" - "kill yourself" - "kys" - "die" - "suicide" - "cancer" - "autistic" - "gay" - "lesbian" - "homo" - "nigger" - "faggot" - "whore" - "slut" - "rape" - "sex" - "porn" - "nude" - "naked" - "drugs" - "weed" - "cocaine" - "heroin" - "marijuana" - "nazi" - "hitler" - "terrorist" - "bomb" - "explosion" - "kill" - "murder" - "ddos" - "dox" - "swat" - "leak" - "password" - "login" - "account" - "paypal" - "credit card" - "social security" # Advertising patterns (will be censored or blocked) advertising-patterns: - "join.*server" - "best.*server" - "come.*play" - "visit.*server" - "play.*on" - "server.*ip" - "mc.*server" - "minecraft.*server" - "cracked.*server" - "premium.*server" - "survival.*server" - "pvp.*server" - "creative.*server" - "skyblock.*server" - "prison.*server" - "factions.*server" - "minigames.*server" - "discord.*gg" - "discord.*com" - "teamspeak" - "ts3" - "youtube.*com" - "youtu.*be" - "twitch.*tv" - "twitter.*com" - "instagram.*com" - "facebook.*com" - "tiktok.*com" - "snapchat" - "whatsapp" - "telegram" - "reddit.*com" - "subscribe" - "follow.*me" - "like.*video" - "check.*out" - "visit.*channel" - "free.*money" - "free.*coins" - "free.*diamonds" - "free.*items" - "free.*ranks" - "giveaway" - "contest" - "lottery" - "raffle" - "cheap.*ranks" - "buy.*now" - "discount" - "sale" - "50%.*off" - "limited.*time" - "paypal.*me" - "cash.*app" - "venmo" - "bitcoin" - "crypto" - "real.*money" - "irl.*money" - "irl.*trade" - "sell.*account" - "buy.*account" # Spam patterns (additional patterns for spam detection) spam-patterns: - "!!!!!+" - "\\?\\?\\?\\?\\?+" - "[A-Z]{10,}" - "(..)\\1{4,}" - "\\s{5,}" - "[0-9]{10,}" - "CAPS.*LOCK" - "ATTENTION" - "URGENT" - "IMPORTANT" - "READ.*THIS" - "CLICK.*HERE" - "MUST.*SEE" - "AMAZING" - "INCREDIBLE" - "UNBELIEVABLE" - "WOW" - "OMG" - "LOL{3,}" - "HAHA{3,}" - "XD{3,}" # Custom regex patterns for advanced filtering custom-regex-patterns: - "\\b(?:https?://|www\\.|ftp://)" - "\\b[a-zA-Z0-9][-a-zA-Z0-9]*\\.[a-zA-Z]{2,}\\b" - "\\b(?:[0-9]{1,3}\\.){3}[0-9]{1,3}\\b" - "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b" - "\\b(?:play|join|visit)\\s+(?:at|on)?\\s*[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\\b" - "\\b(?:discord|teamspeak|ts3?)\\s*(?:server)?\\s*:?\\s*[a-zA-Z0-9.-]+\\b" - "\\b(?:youtube|twitch|instagram|twitter|tiktok)\\s*(?:channel|stream|page)?\\s*:?\\s*[a-zA-Z0-9._-]+\\b" - "\\b(?:skype|telegram|whatsapp|snapchat)\\s*(?:username|id)?\\s*:?\\s*[a-zA-Z0-9._-]+\\b" # Word replacements (word -> replacement) word-replacements: "ez": "gg" "easy": "good game" "noob": "new player" "trash": "not good" "garbage": "not good" "suck": "need practice" "rekt": "defeated" "pwned": "defeated" "n00b": "new player" "scrub": "beginner" "bot": "player" "hacker": "suspicious player" "cheater": "suspicious player" "exploiter": "rule breaker" "griefer": "rule breaker" "spammer": "rule breaker" "toxicplayer": "problematic player" # Messages sent to players messages: message-blocked: "&c&l[FILTER] &cYour message was blocked by the chat filter." message-filtered: "&e&l[FILTER] &eYour message has been filtered." sign-blocked: "&c&l[FILTER] &cYour sign was blocked by the chat filter." sign-filtered: "&e&l[FILTER] &eYour sign content has been filtered." book-blocked: "&c&l[FILTER] &cYour book content was blocked by the chat filter." book-filtered: "&e&l[FILTER] &eYour book content has been filtered." book-title-blocked: "&c&l[FILTER] &cYour book title was blocked by the chat filter." anvil-blocked: "&c&l[FILTER] &cYour item name was blocked by the chat filter." item-name-blocked: "&c&l[FILTER] &cThis item name is blocked by the chat filter." item-lore-blocked: "&c&l[FILTER] &cThis item's lore is blocked by the chat filter." staff-notification: "&c&l[FILTER] &e%player% &ctriggered filter: &f%reason%" spam-detected: "&c&l[ANTI-SPAM] &cYou are sending messages too quickly! Please slow down." duplicate-message: "&c&l[ANTI-SPAM] &cYou have already sent this message recently." # Advanced settings advanced: # Check for similar messages (uses Levenshtein distance) check-similar-messages: true # Similarity threshold (0.0 to 1.0, where 1.0 is identical) similarity-threshold: 0.8 # Maximum message length max-message-length: 256 # Minimum message length min-message-length: 1 # Block messages that are only numbers block-number-only: false # Block messages that are only special characters block-special-chars-only: true # Block messages with excessive capitalization block-excessive-caps: true # Maximum percentage of caps allowed max-caps-percentage: 70 # Block repeated characters block-repeated-chars: true # Maximum repeated characters allowed max-repeated-chars: 3 # Block excessive punctuation block-excessive-punctuation: true # Maximum punctuation characters allowed max-punctuation: 10 # Whitelist for allowed domains/IPs (won't be filtered) whitelisted-domains: - "minecraft.net" - "mojang.com" - "github.com" - "pastebin.com" - "imgur.com" - "gyazo.com" - "youtube.com" - "youtu.be" # Players exempt from filtering (by permission) exempt-permission: "ryzenstaff.chat.bypass" # Log detailed information about filter matches debug-logging: false
ADD YAML (messages.yml)
YAML:chatfilter: usage-add: "&cUsage: /chatfilter add <word>" usage-remove: "&cUsage: /chatfilter remove <word>" usage-test: "&cUsage: /chatfilter test <message>" word-already-exists: "&cThe word '%word%' is already in the blacklist." word-added: "&aThe word '%word%' has been added to the blacklist." word-not-found: "&cThe word '%word%' is not in the blacklist." word-removed: "&aThe word '%word%' has been removed from the blacklist." list-empty: "&eThe blacklist is currently empty." list-format: - "&8&m--------------------------------" - "&c&lBlacklisted Words &7(&e%count%&7)" - "&8&m--------------------------------" list-footer: "&8&m--------------------------------" word-format: "&c{word}" word-separator: "&7, " words-per-line: 5 test-header: - "&8&m--------------------------------" - "&e&lChat Filter Test" - "&8&m--------------------------------" test-original: "&eOriginal Message: &f%message%" test-allowed: "&aResult: &fAllowed (no changes)" test-modified: "&eResult: &fModified" test-filtered: "&eFiltered Message: &f%message%" test-blocked: "&cResult: &fBlocked" test-reason: "&cReason: &f%reason%" test-footer: "&8&m--------------------------------" status-header: - "&8&m--------------------------------" - "&c&lChat Filter Status" - "&8&m--------------------------------" status-enabled: "&aYes" status-disabled: "&cNo" status-filter-enabled: "&eFilter Enabled: %status%" status-blacklisted-words: "&eBlacklisted Words: &f%count%" status-filter-signs: "&eFilter Signs: %status%" status-filter-books: "&eFilter Books: %status%" status-filter-anvil: "&eFilter Anvil: %status%" status-footer: "&8&m--------------------------------" help: - "&8&m--------------------------------" - "&7- &b/chatfilter add <word> &8- &7Add a word to blacklist" - "&7- &b/chatfilter remove <word> &8- &7Remove a word from blacklist" - "&7- &b/chatfilter list &8- &7List all blacklisted words" - "&7- &b/chatfilter test <message> &8- &7Test a message against the filter" - "&7- &b/chatfilter status &8- &7Show filter status information" - "&8&m--------------------------------"
Update v1.1.0
FiXED
1. Staff and admin chat variables
NEW
1. Equip armor in staff mode
2. Mention the staff (permission ryzenstaff.mention)
3.
freeze-settings:
helmet-ice: true (new)
ADD YAML (CONFIG.YML):
YAML:staff-mention: enabled: true # Detect mentions without using @ (only the staff name) detect-name-without-at: true # Allow staff to mention themselves allow-self-mention: true # - "auto": Automatically selects the best sound for the version # - Specific sound name (e.g., "NOTE_PLING", "BLOCK_NOTE_BLOCK_PLING") sound: "auto" sound-volume: 1.0 sound-pitch: 1.0 # Notification messages send-notification-message: true notification-message: |- &3&m---------------------------- &b{sender} &7mentioned you in the chat &bMessage: &7{message} &3&m---------------------------- # ActionBar notification send-actionbar: true actionbar-message: "&e&lMENTION &8» &7{sender} has mentioned you"
YAML:staff-armor: enabled: true helmet: material: "NONE" name: "&9&lStaff &7Helmet" lore: - "&7You are in staff mode" - "&7This armor identifies you as staff" chestplate: material: "NONE" name: "&9&lStaff &7Chestplate" lore: - "&7You are in staff mode" - "&7This armor identifies you as staff" leggings: material: "CHAINMAIL_LEGGINGS" # Pants material (use "NONE" to not equip) name: "&9&lStaff &7Leggings" # Custom name (optional) lore: # Custom Lore (optional) - "&7You are in staff mode" - "&7This armor identifies you as staff" # data-value: 0 # Only for pre-1.13 versions if necessary boots: material: "NONE" name: "&9&lStaff &7Boots" lore: - "&7You are in staff mode" - "&7This armor identifies you as staff"
