COWMODSКаталог модов

CrossChat

CrossChat the links all Messages as one

Автор: ethan089214491обновлён 27 сент. 2026 г.
УправлениеОбщениеУтилиты

Описание

Simple, lightweight cross-server chat for Velocity.

CrossChat is a Velocity 3.x proxy plugin that connects chat across your network, allowing players on different backend servers to communicate through a single global chat channel in real time.

Whether your network has a lobby, survival, farming, minigame, or multiple game servers, CrossChat keeps everyone connected.


✨ Features

  • 🌐 Cross-server chat — Messages sent from any participating backend server are broadcast to players across your network in real time.
  • 🎨 Fully customisable chat format — Configure your global chat appearance directly from config.yml.
  • 🖌️ Legacy & MiniMessage support — Use traditional & colour codes or modern Adventure MiniMessage formatting.
  • 👑 LuckPerms integration — Automatically display LuckPerms prefixes when LuckPerms is installed on your proxy.
  • 🖥️ Server filtering — Choose exactly which backend servers participate in global chat.
  • ⚡ Lightweight — Runs on the proxy with minimal overhead and no unnecessary features.
  • 🔒 Safe message handling — Player messages are inserted as plain text, preventing players from injecting formatting codes.
  • 🔌 Backend placeholder support — Extend CrossChat with the CrossChat Backend Placeholders addon to use placeholder values provided by backend plugins.

📋 Requirements

RequirementVersion
Java17 or later
Velocity3.x
LuckPerms (optional)5.x
SignedVelocity1.4.x

CrossChat runs on the Velocity proxy. You do not need to install CrossChat on every backend server.


📥 Installation

  1. Download the latest crosschat-x.x.x.jar.
  2. Place it into your Velocity plugins/ folder.
  3. Restart your Velocity proxy.
  4. CrossChat will automatically create its configuration.
  5. Open plugins/velocityglobalchat/config.yml.
  6. Configure your chat format and participating servers.
  7. Restart the proxy.

That's it — CrossChat is ready to use.


⚙️ Configuration

The configuration file is located at:

plugins/velocityglobalchat/config.yml

Example:

# Enable or disable CrossChat
enabled: true

# Global chat format
#
# Placeholders:
#   {server}  - backend server name
#   {player}  - player's Minecraft username
#   {prefix}  - LuckPerms prefix
#   {message} - chat message
#
# Use either & colour codes OR MiniMessage.
# Do not mix both styles.
format: "&8[&b{server}&8] &7{prefix}{player}&f: {message}"

# Backend servers participating in global chat.
#
# Players on servers not listed here will not
# send or receive global chat messages.
#
# Leave empty to include every server.
servers:
  - hub
  - survival
  - farming

🎨 Chat Formatting

CrossChat supports both traditional Minecraft colour codes and Adventure MiniMessage.

Legacy & Codes

&8[&b{server}&8] &7{prefix}{player}&f: {message}

Example:

[ SURVIVAL ] [Admin] Ethan: Hello everyone!

MiniMessage

<dark_gray>[<aqua>{server}</aqua>]</dark_gray> <gray>{prefix}{player}</gray><white>: {message}</white>

Available Placeholders

PlaceholderDescription
{server}The backend server the player is currently connected to
{player}The player's Minecraft username
{prefix}The player's LuckPerms prefix
{message}The player's chat message

Security: Player message content is always inserted as plain text, regardless of the selected formatting system. Players cannot inject additional colour codes or MiniMessage tags into global chat.


🔌 Backend Placeholders

Want to use information from plugins running on your backend servers?

Use CrossChat Backend Placeholders to extend CrossChat with backend-provided placeholder values.

This can allow you to display things such as:

  • Player ranks
  • Economy balances
  • Current worlds
  • Levels
  • Factions
  • Statistics
  • Server-specific information
  • Other PlaceholderAPI values

The addon works alongside CrossChat rather than replacing it.


🖥️ Server Filtering

You can control exactly which servers participate in global chat.

For example:

servers:
  - hub
  - survival
  - farming

Players on hub, survival, and farming can send and receive global messages.

Servers that aren't listed are excluded from global chat.

To include all connected servers, leave the list empty:

servers: []

This is useful for networks where certain servers should remain isolated, such as private instances, admin servers, or standalone minigames.


🔄 How It Works

CrossChat operates entirely on the Velocity proxy.

  1. A player sends a chat message.
  2. CrossChat receives the PlayerChatEvent on the proxy.
  3. CrossChat determines the player's current backend server.
  4. The configured chat format is rendered using Adventure.
  5. The message is sent to players on participating servers.
  6. The original chat event is denied, preventing the backend server from receiving and duplicating the message.

This means CrossChat does not need to forward the same message through every backend server.


🧩 Designed for Velocity

CrossChat is built specifically around the Velocity proxy and Adventure API.

Your backend servers don't need a separate CrossChat installation — the proxy handles the global chat system.


🛠️ Troubleshooting

Players can't see global messages

Check that:

  • CrossChat is installed on Velocity.
  • The player's server is included in the servers list.
  • The plugin is enabled.
  • There are no conflicting chat plugins cancelling or modifying the chat event.

The {prefix} placeholder is empty

Make sure LuckPerms is installed and running on the Velocity proxy, and that the player has a prefix assigned.

LuckPerms is optional, so {prefix} will simply be empty when LuckPerms isn't available.

My formatting isn't working

Make sure you're using one formatting system at a time.

Use either:

&8[&b{server}&8] ...

or:

<dark_gray>[<aqua>{server}</aqua>] ...

Do not mix legacy colour codes and MiniMessage tags in the same format.


📜 Licence

CrossChat is released under the MIT License.

See the repository's LICENSE file for the full licence text.

Последние версии

Все версии →
release

CrossChat 1.3.7

1.3.7
27 сент. 2026 г.92Minecraft: 26.2velocity
Скачать
Что нового
### Fixed - Fixed players being disconnected because Velocity cannot deny signed chat messages. CrossChat now forwards the message unsigned. - Restored the `crosschat:suppress` signal for the Paper/Purpur companion. If the companion is unavailable, CrossChat leaves the source server's local chat alone and broadcasts only to other participating servers, avoiding a duplicate proxy broadcast on the source server. - The sender is excluded from the proxy broadcast to avoid duplicating the client's optimistic local chat render. - SignedVelocity is no longer required for CrossChat's chat handling. ### Changed - Updated the proxy version to `1.3.7`. - Documented the Paper unsigned-chat setting and companion behavior for source-server formatting and local echo suppression.
release

CrossChat 1.3.6

1.3.6
27 сент. 2026 г.4Minecraft: 26.2velocity
Скачать
Что нового
## [1.3.6] ### Fixed - CrossChat now processes `PlayerChatEvent` last so its cancellation cannot be overwritten by another proxy chat listener, preventing duplicate local-backend messages. ### Changed - Updated the proxy version to `1.3.6`. ### Fixed - Fixed mixed legacy `&` color codes and MiniMessage formatting so a prefix/suffix can safely combine both styles without losing or bleeding color state. - The parser now correctly closes legacy styling before switching into a MiniMessage segment, which fixes cases like legacy prefix + MiniMessage suffix.
release

CrossChat 1.3.4

1.3.4
4 сент. 2026 г.65Minecraft: 26.2velocity
Скачать
Что нового
## [1.3.5] — 2026-09-04 ### Fixed - Fixed mixed legacy `&` color codes and MiniMessage formatting so a prefix/suffix can safely combine both styles without losing or bleeding color state. - The parser now correctly closes legacy styling before switching into a MiniMessage segment, which fixes cases like legacy prefix + MiniMessage suffix. ### Changed - Updated the proxy version to `1.3.5`.
release

CrossChat 1.3.4

1.3.4
9 авг. 2026 г.66Minecraft: 26.1, 26.1.1, 26.1.2, 26.2velocity
Скачать
Что нового
## [1.3.4] — 2026-08-09 ### Fixed - PlaceholderAPI values inside LuckPerms suffixes are now resolved on Paper and forwarded to the proxy for chat, matching tablist output. ### Changed - Updated the proxy and optional backend companion to `1.3.4`. - The backend companion now optionally integrates with PlaceholderAPI and LuckPerms; both remain optional.
release

CrossChat 1.3.3

1.3.3
8 авг. 2026 г.11Minecraft: 26.2velocity
Скачать
Что нового
## [1.3.3] — 2026-08-08 ### Added - Added `{suffix}` and `{group}` placeholders backed by LuckPerms metadata. ### Changed - Renamed the proxy plugin and jar to `Crosschat`, with configuration stored in `plugins/Crosschat/`. - Updated the proxy build target to the stable Velocity 3.4.0 API.
release

CrossChat 1.3.2

1.3.2
27 июн. 2026 г.61Minecraft: 26.2velocity
Скачать
Что нового
## [1.3.2] — 2026-06-26 ### Fixed - **Sender no longer sees their own message** — the 1.3.1 workaround that excluded the sender from the broadcast was too aggressive; it was only needed because the client-side optimistic render doubled the message for the sender without [SignedVelocity](https://modrinth.com/plugin/signedvelocity) installed - With SignedVelocity on the proxy, Velocity properly completes the Minecraft 1.19+ chat-signing handshake so `ChatResult.denied()` fully suppresses the client-side render — no double message occurs - The sender exclusion has been removed; all eligible players including the sender now receive the formatted broadcast exactly once ### Notes - **[SignedVelocity](https://modrinth.com/plugin/signedvelocity) must be installed on the proxy** (not the backend). This is required for `ChatResult.denied()` to work correctly with signed chat on Velocity 3.x / Minecraft 1.19.3+. Installing it on backend servers is not needed and may cause issues.
release

CrossChat 1.3.1

1.3.1
27 июн. 2026 г.11Minecraft: 26.2velocity
Скачать
Что нового
## [1.3.1] ### Fixed - **Double-message for the sender** — in Minecraft 1.19.3+ the client renders the sender's own chat message locally the instant they press Enter (client-side optimistic display), before the server processes the packet; the proxy's formatted broadcast then arrived on top of that local render, producing two visible messages for the sender only - Fix: the sender is now excluded from the `broadcast()` loop — they see their message exactly once via the client-side render; all other players continue to receive the formatted broadcast as normal
release

CrossChat 1.2.1

1.2.1
24 июн. 2026 г.14Minecraft: 26.2velocity
Скачать
Что нового
## [1.3.0] — 2026-06-24 ### Fixed - **Double-message bug** — players were seeing every global-chat message twice (once from the proxy broadcast and once echoed by the backend server) - Root cause: the `ChatResult.message()` + `crosschat:suppress` plugin-message approach introduced in 1.2.0 had a race condition on Velocity 3.5.0-SNAPSHOT; the suppress signal could arrive at the backend *after* the chat packet, causing `SuppressListener` to miss the event and Paper to echo the message locally - Fix: replaced `ChatResult.message()` with `ChatResult.denied()` — Velocity drops the packet entirely so the backend never receives it and cannot echo it - `ChatResult.denied()` is safe on Velocity 3.3+ / Minecraft 1.19.3+; the 1.19.1–1.19.2 strict-signing concern that motivated the 1.2.0 workaround no longer applies to modern server builds ### Removed - **`crosschat:suppress` plugin-message channel** — no longer sent - **`CrossChatBackend` companion plugin** is no longer required; it can be removed from backend servers (leaving it installed is harmless but it will never receive a suppress signal)
release

CrossChat 1.2.0

1.2.0
18 апр. 2026 г.98Minecraft: 1.21.11velocity
Скачать
Что нового
### Fixed - **Critical: players kicked with "A proxy plugin caused an illegal protocol state"** on Minecraft 1.19.1+ - Root cause: `ChatResult.denied()` cannot cancel a cryptographically-signed chat message at the proxy level (Velocity/Minecraft protocol restriction introduced in 1.19.1) - Fix: replaced `ChatResult.denied()` with `ChatResult.message(text)` which strips the signature (making the message "unsigned") instead of attempting to cancel it — this prevents the disconnect entirely ### Added - **`crosschat:suppress` plugin-message channel** — the proxy sends the sender's UUID to the backend over this channel immediately before forwarding the unsigned echo; the companion backend plugin uses this to silently cancel local display - **`CrossChatBackend` companion Paper plugin** (`backend/`) — drop into each Paper/Purpur backend's `plugins/` directory to suppress the local-chat echo of messages already broadcast globally: - Listens on `crosschat:suppress` - Cancels `AsyncChatEvent` for the flagged player via a one-shot `ConcurrentHashMap` set - Compatible with Paper 1.19.1+, Java 17+ - If the backend plugin is absent, global broadcast still works but the message will also appear in local backend chat ### Notes - In `config/paper-global.yml` on each backend, ensure `enforce-secure-profiles: false` so that the signature-stripped message forwarded by Velocity is accepted rather than rejected with a "Chat message delivery failed" system message
release

CrossChat 1.1.0

1.1.0
18 апр. 2026 г.27Minecraft: 1.21.11velocity
Скачать
Что нового
- servers block in config.yml now uses key: "Display" format instead of a plain list, allowing each server to have its own coloured/formatted name shown in {server} - Backwards-compatible: old ' - name' list entries still load (display defaults to uppercased server name) - Config internally uses Map<String, String> with getDisplayName() - Bump version to 1.1.0