Mineuniverse
Log in Register
Mods

ChatChannels

**ChatChannels** is an advanced, server‑side chat channels system for **Minecraft 1.20.1 (Forge)**.
by Sharkman96
Download Claim this project
2,146 downloads
0 likes
Updated Jul 6, 2026
0 hypes
Server Utility Utility & QoL
# ChatChannels

**ChatChannels** is an advanced, both‑side chat channels system for **Minecraft 1.20.1 (Forge)**.
It adds configurable global/local/trade/staff channels, private messages, rate limiting, logging, and integration with popular permission systems.

---

## ✨ Features

- **Multiple chat channels out of the box**
  - `global` – server‑wide chat
  - `local` – proximity chat with configurable radius
  - `trade` – trading / market channel
  - `staff` – staff‑only channel (permission‑gated)
  - `pm` – private messages channel (used internally)
- **Fully configurable channels**
  - Custom `id`, display `name`, `type`, `prefix`, color, radius and default channel
  - Per‑channel **permission node** (optional) – restrict who can see/use each channel
- **Permission system integration**
  - **LuckPerms** support (via official API)
  - **FTB Ranks** support (`ranks.snbt` permissions)
  - Fallback to **vanilla op level 4** if no permission plugin is available
- **Per‑player chat state**
  - Remember last used channel per player
  - Mute specific channels
  - Ignore specific players
- **Rate limiting / anti‑spam**
  - Configurable messages‑per‑time window per player
- **Logging**
  - All channel messages can be logged for moderation (server‑side)
- **Server config options**
  - Local chat radius
  - Rate limit (messages / seconds)
  - Optional **“joined/left channel”** system messages

---

## 🔌 Installation / Sides

ChatChannels is a **server‑focused mod**, but it must be installed on **both the server and all connecting clients**.

- **Singleplayer / Open to LAN**
  - Install the mod on the client. The integrated server will automatically run with the same mod.

- **Dedicated servers**
  - Put the mod JAR into the `mods` folder on the **server**.
  - Also include the same JAR in the **client modpack** for all players who join the server.

The mod is built as a standard Forge mod with `side = BOTH`:
it contains server‑side logic (channels, permissions, configs, logging) and client‑side code for handling network packets and displaying chat channels.

---

## 🧩 Requirements & Compatibility

- **Minecraft:** 1.20.1  
- **Loader:** Forge 47.x (built and tested against **Forge 47.4.0**)  
- **Java:** 17

**Works on:**

- **Dedicated servers** – core logic runs server‑side
- **Clients:** the mod is intended to be installed on both **server and client** for best experience (channel UI, packets, etc.)

**Optional integrations (not required, but supported):**

- **LuckPerms** – for permission checks like `chat.channels.global`
- **FTB Ranks** – for permission nodes and rank‑based name formatting:
  - Permission nodes in `ranks.snbt` such as:
    - `chat.channels.global`
    - `chat.channels.local`
    - `chat.channels.trade`
    - `chat.channels.staff`
  - Rank name formats via `ftbranks.name_format` (used as privilege tags)

If neither LuckPerms nor FTB Ranks are present, the mod falls back to vanilla operator level checks (`hasPermissions(4)`).

---

## ⚙️ Configuration Overview

The mod generates its configs on first run. There are **three main config files**:

### 1. `config/chatchannels.json`

Defines all chat channels and global rate limiting.

**Fields per channel:**

- `id` – internal channel ID (e.g. `"global"`, `"local"`, `"trade"`, `"staff"`, `"pm"`)
- `name` – display name shown in the UI (e.g. `"Global"`, `"Local"`)
- `type` – how the channel behaves:
  - `GLOBAL`, `LOCAL`, `TRADE`, `STAFF`, `TEAM`, `PRIVATE`, `CUSTOM`
- `prefix` – short prefix before messages, e.g. `"[G]"`, `"[Local]"`, `"[Trade]"`
- `color` – hex color string, e.g. `"#FFFFFF"`, `"#FFD700"`
- `radius` – for `LOCAL` channels: radius in blocks; `0` = global‑like broadcast
- `default` – `true` if this should be the default channel for new players
- `permission` – **permission node required** to use the channel
  - Example defaults:
    - `chat.channels.global`
    - `chat.channels.local`
    - `chat.channels.trade`
    - `chat.channels.staff`
  - If set to an empty string `""`, **no permission is required** for that channel.

**Rate limit section:**

```json
"rate_limit": {
  "messages": 5,
  "per_seconds": 3
}
```

- `messages` – how many messages a player may send
- `per_seconds` – time window in seconds  
If the limit is exceeded, the player receives a system message like "You are sending messages too fast."

---

### 2. `serverconfig/chatchannels-server.toml`

Server‑side gameplay settings:

- `localChat.radius`  
  Default radius (in blocks) for the default `LOCAL` channel.

- `rateLimit.messages`  
  Same as in `chatchannels.json`, but exposed as Forge server config.

- `rateLimit.seconds`  
  Time window for rate limiting.

- `channels.showSwitchMessages`  
  - `true` (default) – show server messages when a player joins or leaves a channel:
    - `Joined channel <id>`
    - `Left channel <id>`
  - `false` – do not send these system messages.

These messages are sent when the player uses the channel command / UI that triggers **JOIN/LEAVE** actions.

---

### 3. `config/chatchannels_privileges.json`

Controls **colors for privilege tags** (rank labels) shown before player names in chat.

- `defaultColor` – hex color for unknown/unspecified tags (e.g. `"#FFD700"`)
- `tags` – map from **privilege tag string** to a hex color:
  - The tag is derived from:
    1. LuckPerms prefix (if available), OR  
    2. `ftbranks.name_format` (if available), OR  
    3. `"OP"` for server operators

**Default example:**

```json
{
  "defaultColor": "#FFD700",
  "tags": {
    "Игрок": "#AAAAAA",
    "VIP": "#55FFFF",
    "Модератор": "#55FF55",
    "Админ": "#FF5555",
    "OP": "#FF5555"
  }
}
```

You can customize this file to match your server’s rank names and colors.

---

## 🔑 Permissions

By default, the following permission nodes are used:

- `chat.channels.global` – talk in the global channel
- `chat.channels.local` – talk in the local channel
- `chat.channels.trade` – talk in the trade channel
- `chat.channels.staff` – access the staff channel (for moderators/admins)

These nodes can be controlled via:

- **LuckPerms** (assign them to users/groups), or
- **FTB Ranks** (`ranks.snbt`), for example:

```snbt
default: {
  ...
  chat.channels.global: true
  chat.channels.local: true
  chat.channels.trade: true
}

vip: {
  ...
  chat.channels.global: true
  chat.channels.local: true
  chat.channels.trade: true
}
```

If you want a channel to be available to everyone without permissions, simply set its `permission` field in `chatchannels.json` to an empty string `""`.

---

## 📝 Notes

- All config files are **generated automatically** on first server start.
- Safe to customize and reload between server restarts.
- The mod does **not** add commands for channel creation yet — custom channels are defined purely through `chatchannels.json`.
ChatChannels-1.20.1-forgeV1.2.jar
MC Client, 1.20.1, Forge, Server
Release 2025-11-21 Get

You Might Also Like

Liberty's Villagers
Quality of Life and AI improvements for Villagers
9,968,428
No More Pop-ups
A Minecraft mod to remove in-game pop-ups
996,708
BetterRandomSourceConcurrencyCrash
Improved logging of crashes caused by mods accessing RandomSources from the wrong thread
99,371
Exit Confirmation
Often accidentally closed Minecraft? This mod might help!
99,067
NoDynamicFps
Adds an option to disable Vanilla's Dynamic FPS implementation
99,004
Immersive Crafting
Adds crafting recipes to immersive portals
9,998