ScreenInChat
Render images directly inside Minecraft chat using a custom resource pack font
Paper 1.21.x, 1.20.x • Java 21 • Free + Premium License Support
Join our Discord Support
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Video Preview
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Free Version:
https://www.spigotmc.org/resources/screeninchat.135982/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
What is ScreenInChat?
ScreenInChat is a Minecraft Paper plugin that allows you to display real images directly inside the Minecraft chat.
This allows your server to show:
- Player avatars
- Custom profile cards
- Images from URLs
- Local images from the plugin folder
- Pixel-art previews
- Server announcements with images
- Roleplay IDs, cards, photos, documents, posters, and more
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Example Images
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Main Features
- Render images directly in chat
- Generated resource pack with custom pixel glyphs
- No texture pack update required per image
- Local image support from the plugin images folder
- Web image support for premium users
- Player placeholders inside URLs
- Automatic resizing for large images
- Custom image size support for premium users
- Send images to yourself, a player, or the whole server
- Language system with 5 included languages
- Remote license system with free and premium mode
- Clean Paper 1.21.1 support
- Java 21 ready
- Async web image loading to avoid blocking the main server thread
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
How It Works
ScreenInChat creates a custom resource pack with a special font. This font contains small pixel glyphs used to build images in the chat.
The plugin reads an image, resizes it if needed, converts each pixel into a colored text component, and sends it to the player as chat lines.
Technical rendering flow:
Code:
Image file or URL
↓
Image is loaded asynchronously
↓
Image is resized according to limits
↓
Pixels are converted into colored Adventure Components
↓
Custom font glyphs render the pixels in chat
↓
Player sees the image directly inside the chat
This means the resource pack is static. You do not need to update the resource pack every time you send a new image.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Free vs Premium
| Feature | Free Version | Premium Version |
|---|---|---|
| Local images | Yes | Yes |
| /sic test | Yes | Yes |
| /sic send <file> | Yes | Yes |
| /sic card | Yes | Yes |
| Automatic resizing | Yes | Yes |
| Maximum image size | 64x64 | 256x256 and more |
| Web images from URL | No | Yes |
| Send to all players | No | Yes |
| Custom manual size | No | Yes |
| Player placeholders in web URLs | No | Yes |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Free Version
The free version is fully usable for basic local image rendering.
Free includes:
- Render local images from the plugin folder
- Use sample images
- Create image cards
- Automatic image resizing
- Maximum image size: 64x64
Free does not include:
- Web image rendering
- Sending images to the entire server
- Custom manual image sizes
- Premium size limits
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Premium Version
Premium unlocks advanced image delivery features.
Premium can unlock:
- Web images from any supported image URL
- Dynamic player avatars
- Send images to all players
- Custom image sizes
- Higher maximum image size
- URL placeholders such as %player%
- Better roleplay and profile-card workflows
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Use Cases
- Roleplay servers: player IDs, documents, character photos, profile cards
- Survival servers: announcements, event banners, staff messages
- Minigame servers: match previews, icons, winner images
- Networks: lobby promotions, store images, server information
- Cosmetic servers: show item previews or avatar cards
- Community servers: display player heads and custom images in chat
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Requirements
- Minecraft server: Paper 1.2x.x
- Java: Java 21
- Players must load the generated resource pack, or resourcepack gestor
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Installation
- Download the plugin jar.
- Place it inside your server /plugins folder.
- Start the server once.
- The plugin will generate its folders and resource pack.
- Upload or merge the generated resource pack with your server resource pack.
- Configure config.yml.
- Restart the server.
- Test with /sic test checker.
Generated folders:
Code:
plugins/ScreenInChat/
plugins/ScreenInChat/images/
plugins/ScreenInChat/lang/
plugins/ScreenInChat/license.yml
plugins/ScreenInChat/ScreenInChat-pack.zip
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Resource Pack Setup
The plugin generates:
Code:
plugins/ScreenInChat/ScreenInChat-pack.zip
You can use it in three ways:
- Manually place it in your Minecraft client resource packs folder for testing.
- Merge it with your main server resource pack.
- Host it online and send it with the server resource-pack system.
If hosted online, configure:
YAML:
resource-pack:
public-url: 'https://your-domain.com/ScreenInChat-pack.zip'
auto-send-on-join: true
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Commands
Main Commands
Code:
/sic help
/sic pack
/sic list
/sic test <gradient|avatar|checker>
/sic send <file>
/sic card <file> <title> | <subtitle>
/sic sendpack <player>
Premium Web Commands
Code:
/sic webview <url>
/sic webview <url> <player>
/sic webview <url> all
/sic webview <url> <player> <size>
/sic webview <url> all <size>
License Commands
Code:
/sic license activate <key>
/sic license status
/sic license unlink
Shortcut:
Code:
/sic license <key>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Command Examples
Test Images
Code:
/sic test checker
/sic test avatar
/sic test gradient
Local Images
Put your image here:
Code:
plugins/ScreenInChat/images/my-image.png
Then run:
Code:
/sic send my-image.png
Image Card
Code:
/sic card avatar.png Character_Name | Age_18_-_Roleplay_Profile
Premium WebView
Code:
/sic webview https://mc-heads.net/avatar/androneko/64.png
Send to a specific player:
Code:
/sic webview https://mc-heads.net/avatar/androneko/64.png Steve
Send to all players:
Code:
/sic webview https://mc-heads.net/avatar/%player%/64.png all
Custom premium size:
Code:
/sic webview https://mc-heads.net/avatar/androneko/128.png all 128
/sic webview https://mc-heads.net/avatar/androneko/128.png Steve 96x96
/sic webview https://mc-heads.net/avatar/androneko/128.png Steve 96 64
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Player Placeholders in URLs
Premium webview supports dynamic placeholders inside the URL.
Available placeholders:
Code:
%player%
%player_name%
{player}
{player_name} <player>
%player_uuid%
{player_uuid}
<player_uuid>
%sender%
%sender_name%
{sender}
{sender_name} <sender>
%sender_uuid%
{sender_uuid}
<sender_uuid>
Example:
Code:
/sic webview https://mc-heads.net/avatar/%player%/64.png all
Each player receives their own avatar image.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Supported Image Sources
- Local PNG images
- Local JPG/JPEG images
- Remote PNG images
- Remote JPG/JPEG images
- Minecraft skin/avatar services
Recommended avatar services:
Code:
https://mc-heads.net/avatar/%player%/64.png
https://mc-heads.net/player/%player%/128.png
https://minotar.net/avatar/%player%/64.png
https://crafthead.net/avatar/%player%/64.png
Note: WebP and GIF not support
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Permissions
| Permission | Description | Default |
|---|---|---|
| screeninchat.use | Allows basic image commands | OP |
| screeninchat.admin | Allows administrative commands | OP |
| screeninchat.license.activate | Allows license activation | OP |
| screeninchat.license.status | Allows checking license status | OP |
| screeninchat.license.unlink | Allows unlinking local license data | OP |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Configuration
YAML:
# ScreenInChat by MCByte
# Support Discord:
# https://discord.com/invite/HeMT8p7UCy
# Plugin language.
# Available languages:
# en_US, es_ES, pt_BR, fr_FR, de_DE
language: en_US
image:
# Default maximum image width when no custom size is provided.
# Free version is limited to 64x64.
# Premium licenses can increase this limit through entitlements.
default-max-width: 64
# Default maximum image height when no custom size is provided.
default-max-height: 64
# Absolute safety cap for image width.
# This prevents extremely large chat messages.
absolute-max-width: 128
# Absolute safety cap for image height.
absolute-max-height: 128
# If true, images smaller than the max size keep their original dimensions.
# If false, images are always resized to the configured target.
keep-original-if-smaller: true
# Pixels with alpha below this value are treated as transparent.
alpha-threshold: 16
# Transparent pixels are blended over this color because chat text cannot render alpha.
transparent-background: '#000000'
# RGB rounding value.
# Lower = more accurate colors.
# Higher = fewer unique colors and lighter messages.
# Recommended: 8
color-step: 8
# Resize mode.
# nearest = best for pixel art
# bilinear = better for photos
resize-mode: nearest
# Normal spaces between image and card text.
card-gap-spaces: 3
resource-pack:
# Generate the resource pack when the server starts.
generate-on-start: true
# Name of the generated resource pack zip.
output-file: ScreenInChat-pack.zip
# Resource pack format for Minecraft 1.21/1.21.1.
pack-format: 34
# Public URL for the resource pack, if you host it externally.
public-url: ''
# If true, the plugin asks players to load the configured resource pack on join.
auto-send-on-join: false
web:
# Connection timeout for remote image URLs.
connect-timeout-ms: 7000
# Read timeout for remote image URLs.
read-timeout-ms: 15000
# User-Agent used when downloading remote images.
user-agent: 'ScreenInChat/1.2 (Paper 1.21.1)'
support:
# Support Discord link shown in license/support messages.
discord: 'https://discord.com/invite/HeMT8p7UCy'
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Language System
ScreenInChat includes 5 language files:
Code:
lang/en_US.yml
lang/es_ES.yml
lang/pt_BR.yml
lang/fr_FR.yml
lang/de_DE.yml
To change the language:
YAML:
language: es_ES
Then restart the server or reload the plugin configuration.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
License System
ScreenInChat supports a simple remote license system.
How it behaves:
- If no license is applied, the plugin automatically runs as Free.
- If a valid license is applied, Premium features are unlocked.
- If a license is applied but does not work, the plugin asks the user to contact Discord support.
License data is stored locally in:
Code:
plugins/ScreenInChat/license.yml
There is no public license configuration in config.yml.
Activate:
Code:
/sic license activate YOUR-LICENSE-KEY
Check status:
Code:
/sic license status
Unlink local license data:
Code:
/sic license unlink
Support:
https://discord.com/invite/HeMT8p7UCy
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Support
Need help installing, configuring, or activating your license?
Join our Discord Support Server
Thank you for using ScreenInChat by MCByte.
