CloudChatMC
Общайтесь с друзьями на любом сервере Minecraft — плагины не нужны. Работает на бесплатном бэкенде Cloudflare Worker с идентификацией по токенам, глобальным чатом и личными сообщениями.
- Загрузчики
- Fabric
- Скачиваний на Modrinth
- 163
- Подписчиков на Modrinth
- 5
- версия
- 1
- Обновлён
- 26 марта 202626 мар.
- Опубликован
- в 2026
Коротко о моде
Ставится только в игру; на сервер ставить не нужно
CloudChatMC
CloudChatMC — это клиентский мод для Fabric, который создаёт приватный постоянный чат-туннель между вами и вашими друзьями — полностью независимо от того, на каком сервере Minecraft вы все играете. Будь вы на разных серверах, в разных мирах или кто-то из вас в одиночной игре — CloudChatMC поддерживает связь через бесплатный бэкенд Cloudflare Worker.
Возможности
- Глобальный чат — отправляйте сообщения всем подключённым друзьям сразу
- Личные сообщения — отправляйте сообщения конкретным игрокам
- Отслеживание онлайна — смотрите, кто сейчас подключён, с помощью
/ccmc online - Идентификация по токену — у каждого игрока уникальный токен, вход не требуется
- Шифрование сообщений — все сообщения кодируются перед отправкой
- Автопереподключение — автоматически переподключается при обрыве связи
- Очередь сообщений — сообщения, полученные во время загрузки игры, не теряются
- Команда конфигурации — обновляйте токен и URL сервера прямо в игре без перезапуска
Команды
| Команда | Описание |
|---|---|
/ccmc msg <message> | Отправить глобальное сообщение всем подключённым игрокам |
/ccmc pm <player> <message> | Отправить личное сообщение конкретному игроку |
/ccmc online | Показать всех подключённых игроков |
/ccmc status | Показать текущий статус подключения |
/ccmc config <token> <url> | Обновить токен и URL WebSocket во время работы |
/ccmc help | Показать все доступные команды |
Настройка
CloudChatMC требует бэкенд Cloudflare Worker для передачи сообщений. Следуйте шагам ниже, чтобы разместить свой собственный — это полностью бесплатно.
Шаг 1 — Создайте Cloudflare Worker
- Перейдите на Cloudflare Dashboard и зарегистрируйтесь бесплатно
- Перейдите в Workers & Pages → Create
- Создайте новый Worker с любым именем (например,
cloudchatmc)
Шаг 2 — Настройте Wrangler CLI
npm install -g wrangler
wrangler login
mkdir cloudchatmc-worker
cd cloudchatmc-workerШаг 3 — Создайте wrangler.toml
name = "your-worker-name"
main = "worker.js"
compatibility_date = "2024-01-01"
[[durable_objects.bindings]]
name = "CHAT_ROOM"
class_name = "ChatRoom"
[[migrations]]
tag = "v1"
new_sqlite_classes = ["ChatRoom"]Замените your-worker-name на имя, которое вы дали своему Worker.
Шаг 4 — Создайте worker.js
// Добавьте сюда свои токены и имена игроков // Формат: "TOKEN": "PlayerName" // Генерируйте надёжные случайные токены — избегайте спецсимволов // Пример: используйте буквенно-цифровые строки из 32+ символов const TOKENS = { "token_for_player1": "Player1", "token_for_player2": "Player2", "token_for_player3": "Player3", "token_for_admin": "Admin" };
export class ChatRoom { constructor(state, env) { this.clients = new Map(); }
async fetch(request) { if (request.headers.get("Upgrade") !== "websocket") { return new Response("WebSocket only", { status: 400 }); }
const url = new URL(request.url); const token = url.searchParams.get("token");
if (!token || !TOKENS[token]) { return new Response("Unauthorized", { status: 401 }); }
const username = TOKENS[token];
const existing = this.clients.get(username); if (existing) { try { existing.close(1000, "Replaced by new connection"); } catch {} this.clients.delete(username); }
const [client, server] = new WebSocketPair(); server.accept();
this.clients.set(username, server); this.broadcast({ type: "join", user: username });
server.addEventListener("message", (event) => { let data; try { data = JSON.parse(event.data); } catch { return; }
if (data.type === "broadcast") { this.broadcast({ type: "msg", from: username, data: data.data });
} else if (data.type === "private") { const target = this.clients.get(data.to); if (target) { try { target.send(JSON.stringify({ type: "pm", from: username, data: data.data })); } catch { this.clients.delete(data.to); this.safeSend(server, { type: "error", message: "Player not online" }); } } else { this.safeSend(server, { type: "error", message: "Player not online" }); }
} else if (data.type === "list") { this.safeSend(server, { type: "list", users: [...this.clients.keys()] }); } });
server.addEventListener("close", () => { this.clients.delete(username); this.broadcast({ type: "leave", user: username }); });
server.addEventListener("error", () => { this.clients.delete(username); });
return new Response(null, { status: 101, webSocket: client }); }
broadcast(obj) { const msg = JSON.stringify(obj); const dead = []; for (const [name, ws] of this.clients) { try { ws.send(msg); } catch { dead.push(name); } } for (const name of dead) this.clients.delete(name); }
safeSend(ws, obj) { try { ws.send(JSON.stringify(obj)); } catch {} } }
export default { async fetch(request, env) { if (request.headers.get("Upgrade") !== "websocket") { return new Response("WebSocket only", { status: 400 }); }
const url = new URL(request.url); const token = url.searchParams.get("token");
if (!token || !TOKENS[token]) { return new Response("Unauthorized", { status: 401 }); }
const id = env.CHAT_ROOM.idFromName("global"); const room = env.CHAT_ROOM.get(id); return room.fetch(request); } };
***
### Шаг 5 — Деплойwrangler deploy
URL вашего Worker будет таким: `wss://your-worker-name.your-subdomain.workers.dev`
***
### Шаг 6 — Настройка мода
Укажите свой токен и URL Worker в файле: `.minecraft/config/cloudchatmc.json`{ "token": "YOUR_TOKEN_HERE", "url": "wss://your-worker-name.your-subdomain.workers.dev" }
Или используйте команду в игре:/ccmc config YOUR_TOKEN wss://your-worker-name.your-subdomain.workers.dev
***
### Советы по токенам
* У каждого игрока свой уникальный токен — никогда не делитесь токенами между игроками
* Используйте длинные буквенно-цифровые строки (32+ символов) без спецсимволов
* Держите токены в секрете — любой, у кого есть токен, может подключиться как этот игрок
* Безопасные токены можно сгенерировать на [String Generator](https://www.random.org/strings/)
***
## Требования
* Minecraft 1.21.4-1.21.11
* Fabric Loader 0.16.10+
* Fabric API
## Почему CloudChatMC?
Большинство модов для межсерверного общения требуют выделенного сервера или платного хостинга. CloudChatMC использует Cloudflare Workers с Durable Objects, у которых щедрый бесплатный тариф — так что для небольших групп друзей это полностью бесплатно и не требует обслуживания.
## Лицензия
GPL-3.0 — свободно для использования, изменения и распространения.Частые вопросы
Как установить CloudChatMC?
Установите Fabric под свою версию Minecraft, скачайте CloudChatMC под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть CloudChatMC?
У CloudChatMC есть сборки для Minecraft 1.21.4–1.21.11.
Нужен ли CloudChatMC на сервере?
Ставится только в игру; на сервер ставить не нужно