{"id":133534,"date":"2026-06-08T00:08:34","date_gmt":"2026-06-07T21:08:34","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/riotchat\/"},"modified":"2026-06-08T00:08:34","modified_gmt":"2026-06-07T21:08:34","slug":"riotchat","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/riotchat\/","title":{"rendered":"RiotChat"},"content":{"rendered":"<p># RiotChat<\/p>\n<p>RiotChat is a lightweight, moderation-focused chat plugin for Spigot\/Paper. It provides formatted chat, mentions, a persistent ignore system, clear\/announce utilities, tablist headers\/footers, and a persistent mute system with database backing and tab-completion for moderation commands.<\/p>\n<p>This README documents features, installation (binary\/JAR), configuration, database, commands, permissions and how to report issues.<\/p>\n<p>&#8212;<\/p>\n<p>## Features<\/p>\n<p>&#8211; Formatted chat with prefix\/suffix support (LuckPerms integration)<br \/>\n&#8211; Mentions highlighting and processing<br \/>\n&#8211; Private messages (`\/msg`, `\/reply`)<br \/>\n&#8211; Persistent ignore system (database-backed)<br \/>\n&#8211; Clear chat with optional announcement and sound<br \/>\n&#8211; Server-wide announcements using MiniMessage templates<br \/>\n&#8211; Tablist header\/footer support<br \/>\n&#8211; Persistent mute system with DB storage:<br \/>\n  &#8211; `\/mute <player> [duration] [reason]`<br \/>\n  &#8211; `\/unmute <player>`<br \/>\n  &#8211; Mutes stored in `riotchat_mutes` table<br \/>\n  &#8211; Tab-completion for `\/mute` (player names + durations)<br \/>\n&#8211; Config-driven behavior and H2\/MySQL support<\/p>\n<p>&#8212;<\/p>\n<p>## Installation (JAR \/ release repository)<\/p>\n<p>This repository is intended to host the plugin releases (JAR files) and does not necessarily include the source code. To install the plugin on your server:<\/p>\n<p>1. Download the release JAR from this repository&#8217;s Releases page or Modrinth, SpigotMC, Hangar.<br \/>\n2. Copy the JAR file into your Paper\/Spigot server&#8217;s `plugins\/` directory.<br \/>\n3. Start or restart the server. The plugin will generate default configuration files on first run.<\/p>\n<p>If a compiled JAR is not present in the repository, check the Releases tab or the project&#8217;s website for binary downloads.<\/p>\n<p>&#8212;<\/p>\n<p>## Configuration<\/p>\n<p>Main config file (generated on first run): `config.yml` in the plugin folder. Important config keys (examples):<\/p>\n<p>&#8211; `enable-chat` (boolean) \u2014 Global switch for chat features.<br \/>\n&#8211; `chat.separator` (string) \u2014 Separator between name and message.<br \/>\n&#8211; `chat.name-hover` \/ `chat.name-click` (boolean) \u2014 Enable hover\/click behaviour on player names.<br \/>\n&#8211; `clearchat.lines` (int) \u2014 Number of blank lines to send for `\/clearchat`.<br \/>\n&#8211; `announce.format` (MiniMessage block) \u2014 Template used for broadcast announcements.<br \/>\n&#8211; `database.type` \u2014 `H2` or `MYSQL`.<br \/>\n&#8211; `database.h2.file` \u2014 H2 file path (without `.mv.db`).<br \/>\n&#8211; `database.mysql.*` \u2014 MySQL connection settings.<\/p>\n<p>Example excerpt:<\/p>\n<p>&#8220;`yaml<br \/>\ndatabase:<br \/>\n  type: &#8220;H2&#8221;<br \/>\n  h2:<br \/>\n    file: &#8220;plugins\/RiotChat\/riotchat&#8221;<\/p>\n<p>clearchat:<br \/>\n  lines: 120<br \/>\n  message: |<br \/>\n    <dark_gray>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501<\/dark_gray><br \/>\n    <gradient:#00ffff:#00bcd4><bold>CHAT CLEARED<\/bold><\/gradient><br \/>\n    <gray>The chat has been cleared by <b><cyan>%player_name%<\/cyan><\/b><\/gray><br \/>\n    <dark_gray>\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501<\/dark_gray><br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p>## Commands<\/p>\n<p>&#8211; `\/msg <player> <message>` \u2014 Send a private message.<br \/>\n&#8211; `\/reply <message>` \u2014 Reply to last private message.<br \/>\n&#8211; `\/announce <message>` \u2014 Broadcast an announcement (permission: `riotchat.announce`).<br \/>\n&#8211; `\/clearchat [silent]` \u2014 Clears chat; `silent` suppresses broadcast (permission: `riotchat.clearchat`).<br \/>\n&#8211; `\/togglechat` \u2014 Toggle global chat state (permission: `riotchat.chat.toggle`).<br \/>\n&#8211; `\/ignore <player>` \u2014 Toggle ignoring a player (permission: `riotchat.ignore`).<br \/>\n&#8211; `\/ignorelist` \u2014 Show the players you currently ignore.<br \/>\n&#8211; `\/mute <player> [duration] [reason]` \u2014 Mute a player (permission: `riotchat.mute`).<br \/>\n  &#8211; Duration examples: `10s`, `5m`, `1h`, `1d`, or `perm` for permanent.<br \/>\n  &#8211; The plugin provides a `MuteTabCompleter` that suggests players and common durations.<br \/>\n&#8211; `\/unmute <player>` \u2014 Unmute a player (permission: `riotchat.unmute`).<\/p>\n<p>&#8212;<\/p>\n<p>## Permissions<\/p>\n<p>Suggested default permission nodes (adjust in your permissions system):<\/p>\n<p>&#8211; `riotchat.color` \u2014 Use color codes in chat (default: op)<br \/>\n&#8211; `riotchat.reload` \u2014 Reload configuration (default: op)<br \/>\n&#8211; `riotchat.announce` \u2014 Use `\/announce` (default: op)<br \/>\n&#8211; `riotchat.ignore` \u2014 Use ignore commands (default: op)<br \/>\n&#8211; `riotchat.clearchat` \u2014 Clear chat (default: op)<br \/>\n&#8211; `riotchat.clearchat.bypass` \u2014 Bypass clear chat effects (default: false)<br \/>\n&#8211; `riotchat.chat.bypass` \u2014 Bypass global chat-disabled state (default: op)<br \/>\n&#8211; `riotchat.chat.toggle` \u2014 Toggle chat on\/off (default: op)<br \/>\n&#8211; `riotchat.mute` \u2014 Mute players (default: op)<br \/>\n&#8211; `riotchat.unmute` \u2014 Unmute players (default: op)<br \/>\n&#8211; `riotchat.mute.bypass` \u2014 Bypass mutes (for staff) (default: op)<\/p>\n<p>&#8212;<\/p>\n<p>## Troubleshooting<\/p>\n<p>&#8211; DB connection errors: verify your `config.yml` database settings and reachability.<\/p>\n<p>If you need further help, open an issue on the repository with server logs and configuration excerpts.<\/p>\n<p>&#8212;<\/p>\n<p>## Contributing &#038; Source<\/p>\n<p>This repository is intended to host plugin releases (binary JARs). It may not contain the plugin source code. If you want to contribute or request the source, please open an issue or check the project page for a link to the source repository. Pull requests against compiled-release repositories are not accepted.<\/p>\n<p>&#8212;<\/p>\n<p>## License<\/p>\n<p>This project is provided under the MIT License by default. <\/p>\n<p>&#8212;<\/p>\n<p>## Changelog (short)<\/p>\n<p>&#8211; v0.1 \u2014 Core chat formatting, ignore, messaging, announce, clear-chat, tablist<br \/>\n&#8211; v0.2 \u2014 Persistent mute system, `\/mute`\/`\/unmute`, `MuteTabCompleter`<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A Basic general purpose chat and Tablist plugin with Luckperms and PlaceholderAPI Support<\/p>\n","protected":false},"featured_media":0,"template":"","meta":{"_minecraft_slug":"riotchat","_minecraft_project_id":"j2dHFjSR","_minecraft_author":"lb-acey","_minecraft_license":"LicenseRef-All-Rights-Reserved","_minecraft_downloads":7,"_minecraft_follows":1,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"riotchat.zip","_minecraft_size_bytes":6670211,"_minecraft_version_count":1,"_minecraft_updated_at":"2026-05-16T12:28:00.103870Z","_minecraft_date_created":"2026-04-15T02:12:11.227712Z","_minecraft_date_modified":"2026-04-02T12:17:15.624165Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/riotchat","_minecraft_icon_attachment_id":0,"_minecraft_imported_at":"2026-06-07T21:08:35+00:00","_minecraft_import_hash":"18ce3eea1e49a062690bbc600d98e3be","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[127],"mod_loader":[132],"minecraft_version":[62,37,40,41,73,74,38,78,79,80,81,82],"class_list":["post-133534","mod","type-mod","status-publish","hentry","mod_category-paper","mod_loader-paper","minecraft_version-1-21","minecraft_version-1-21-1","minecraft_version-1-21-10","minecraft_version-1-21-11","minecraft_version-1-21-2","minecraft_version-1-21-3","minecraft_version-1-21-4","minecraft_version-1-21-5","minecraft_version-1-21-6","minecraft_version-1-21-7","minecraft_version-1-21-8","minecraft_version-1-21-9"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>RiotChat - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/riotchat\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RiotChat - Minecraft\" \/>\n<meta property=\"og:description\" content=\"A Basic general purpose chat and Tablist plugin with Luckperms and PlaceholderAPI Support\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/riotchat\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/riotchat\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/riotchat\\\/\",\"name\":\"RiotChat - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"datePublished\":\"2026-06-07T21:08:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/riotchat\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/riotchat\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/riotchat\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"RiotChat\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"RiotChat - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/riotchat\/","og_locale":"en_US","og_type":"article","og_title":"RiotChat - Minecraft","og_description":"A Basic general purpose chat and Tablist plugin with Luckperms and PlaceholderAPI Support","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/riotchat\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/riotchat\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/riotchat\/","name":"RiotChat - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"datePublished":"2026-06-07T21:08:34+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/riotchat\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/riotchat\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/riotchat\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"RiotChat"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/133534","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=133534"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=133534"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=133534"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=133534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}