promotional bannermobile promotional banner

DiscordScreenMaster (DSM)

Minecraft screenshots straight to Discord

### What it is

DiscordScreenMaster sends Minecraft screenshots straight to a Discord channel — no Alt+Tab, no digging through folders, no manual uploading. The mod goes on both client and server, while the Discord bot runs on the server only, so the bot token never reaches players.

v1.0.1 RUSSIAN LANGUAGE ONLY

### How it works

1. Press **F4** in-game (rebindable in *Options → Controls*). The client captures a screenshot and sends it to the server.
2. A chat message appears with **[Publish]** and **[Discard]** buttons.
3. Clicking "Publish" posts the image to your Discord channel and displays it there as an embed right inside the message.

### Features

- **No disk writes.** The screenshot is encoded to JPEG in memory and sent to the server — no file is written on the client or the server.
- **Session tokens.** Every player gets a random token on join, bound to their UUID and removed on disconnect. You cannot upload someone else's screenshot or act as another player.
- **Upload cooldown.** Flood protection, configurable (60 seconds by default). `0` disables it.
- **Server-side validation.** The server never trusts the client: only JPEG up to 4 MB is accepted, one pending screenshot per player, and file names are sanitized.
- **Configurable quality.** JPEG quality and maximum width/height are set in the config.
- **Server-side bot only.** Clients just need the mod, Fabric API and Fabric Language Kotlin — no tokens on the client.
- **Clean in Discord.** The image arrives as an embed, not as a bare file link.

### Configuration

`config/discordscreenmaster.json` is created on first launch:

```json
{
  "botToken": "YOUR_BOT_TOKEN",
  "discordChannelId": 0,
  "cooldownSeconds": 60,
  "compressionQuality": 75,
  "maxWidth": 1920,
  "maxHeight": 1080
}
```

| Field | Description |
| --- | --- |
| `botToken` | Discord bot token. Required, otherwise the bot stays disabled. |
| `discordChannelId` | ID of the channel to post screenshots to. |
| `cooldownSeconds` | Delay between uploads in seconds. `0` disables the limit. |
| `compressionQuality` | JPEG quality, `1`–`100`. |
| `maxWidth` / `maxHeight` | Maximum image width and height in pixels. `0` or `-1` removes the limit for that axis. |

**What to put in `maxWidth` / `maxHeight`.** This is the pixel ceiling for a screenshot — not the game resolution and not the window size. The mod captures the screen as-is and downscales the image to these values: a shot from a 4K monitor becomes Full HD with `1920` / `1080`. Aspect ratio is preserved and smaller images are never upscaled.

| Goal | `maxWidth` | `maxHeight` |
| --- | --- | --- |
| Regular screenshots (default) | `1920` | `1080` |
| Save bandwidth and space | `1280` | `720` |
| Extra detail | `2560` | `1440` |
| Keep the original size | `0` | `0` |

If unsure, keep `1920` and `1080` — good enough for readability and for the 4 MiB limit. Resizing happens before JPEG encoding, so `compressionQuality` applies to the already downscaled image.

> The config contains your bot token. Do not publish or commit this file.

### Requirements

- **Minecraft**, any supported version (see the table) with Fabric Loader and Fabric API.
- **Fabric Language Kotlin** — a required dependency: JDA, OkHttp and Okio are built on it.
- A Discord bot token with **Send Messages**, **Attach Files**, **Embed Links** permissions and access to the target channel.
- The mod must be installed on **both client and server**.

### Supported versions

A separate jar is built for every game version. Download the file whose name contains your Minecraft version:

| Minecraft | Fabric Loader | Java |
| --- | --- | --- |
| 1.16.5 | 0.14+ | 8+ |
| 1.18.2 – 1.19.2 | 0.14+ | 17+ |
| 1.20.1 – 1.20.4 | 0.14+ | 17+ |
| 1.21.1 – 1.21.11 | 0.16.9+ | 21+ |
| 26.1 – 26.3 | 0.19.5+ | 25+ |

The exact Fabric API and Fabric Language Kotlin versions are listed on the download page — the mod tells you if something is missing.

### ViaVersion and mixed client/server versions

You can run the mod on a server of one version while players join from clients of other supported versions through **ViaVersion / ViaBackwards / ViaFabric**. The mod protocol is identical in every build: channels `discordscreenmaster:screenshot_chunk` and `discordscreenmaster:session_token`, the same field order and the same chunking. So a 1.16.5 client and a 26.3 server (or the other way round) understand each other.

The rules are simple:

- **Server**: one jar matching the server version.
- **Client**: a jar matching the client version.
- The mod version must match (1.0.1) on both sides.
- Configure ViaVersion as usual; DiscordScreenMaster needs no special settings.

### Installation

1. Download the jar for your Minecraft version and drop it into `mods/` — on both client and server. The server needs the jar for the server version.
2. Start the server once: `config/discordscreenmaster.json` will be created.
3. Fill in `botToken` and `discordChannelId`.
4. Restart the server — you should see `Discord bot connected!` in the log.
5. Join the game, press F4 and start sharing screenshots.

### Large screenshots

The screenshot is sent to the server in 30 KB chunks, so the vanilla packet size limit is not a problem even for 4K shots. The server assembles the chunks in memory, verifies the JPEG signature and the total size (up to 4 MiB), and only then shows the publish button.

### F4 does nothing?

- The mod must be installed on **both client and server**, and the mod version (1.0.1) must match. Use the jar built for each side's Minecraft version.
- The session token is issued by the server: if the mod is missing on the server, the client cannot send a screenshot.
- Check the key bind in *Options → Controls* — F4 must be assigned to "Upload screenshot to Discord" and not taken by another mod.
- Failure reasons are written to `latest.log` (lines containing `DiscordScreenMaster`).

---

*DiscordScreenMaster is not affiliated with or endorsed by Discord Inc.*

DiscordScreenMaster (DSM) Team

profile avatar
  • 1
    Projects
  • 116
    Downloads