SyncShield - 2FA login & Chat sync
SyncShield provides Minecraft 2FA login approvals and Telegram chat sync, with rich inventory/item renders and admin controls for safer, faster server management [Discord functionality is being developed]
SyncShield - 2FA login & Chat sync
Discord support soon!
Discord 2FA, Chat sync and RCON functionality will be released after some minor updates
Overview SyncShield adds Telegram‑based 2FA to Minecraft logins, blocks unverified joins, and lets admins approve logins via inline buttons. It also provides Telegram ↔ Minecraft chat sync and can render inventories, items, and ender chests as images in Telegram.
Advantages - Strong 2FA for OPs and optionally for linked non‑OP players. - Security modes: `always`, `session`, `whitelist`, `disabled`. - Session expiry control in hours. - IP approval + blacklist management. - Admin notifications for joins/quits, commands, and security events. - Optional Telegram RCON with allowlisted commands. - Private‑only bot mode for security. - English/Russian message packs with full customization and safe reload. - Inventory/item/ender chest rendering in Telegram. (Credits to Advantages for background images)
Quick Setup 1. Create a Telegram bot with `@BotFather` and copy the token. 2. Get your Telegram user ID (owner) and optional admin IDs. 3. Put the plugin in the `plugins` folder and start the server once. 4. Edit `config.yml` with token and IDs, then run `/syncshield reload`. 5. In‑game, run `/syncshield link` to pair your Minecraft account. 6. Approve logins from Telegram when prompted.
Commands
Minecraft Commands
- `/syncshield link` Starts account linking and gives a one‑time code to send to the Telegram bot.
- `/syncshield reload` Reloads the plugin configuration and messages. Requires `syncshield.admin` permission or console.
- `/syncshield settings <always|session|whitelist|disabled>` Sets the 2FA mode for the player who runs the command.
- `/syncshield config <variable> <value>` Sets the specified variable in `config.yml`. Requires `syncshield.admin` permission or console.
- `/syncshield debug rebake-textures` Forces a fresh block/item texture bake. Do not use unless you have issues with item/inventory rendering. (Requires `syncshield.debug` permission)
Aliases
- `/ss` → `/syncshield`
Telegram Commands
- `/start` Shows the start menu with buttons (for admins and/or linked users).
- `/mclink <code>` Links your Telegram to your Minecraft account using the code from `/syncshield link`.
- `/players` Lists players and quick actions (admins only).
- `/settings` Opens the 2FA settings menu (admins only).
- `/cancel` Clears the current input state and cancels the action (admins only).
- `/rcon <command>` Runs a console command on the server (admins only, when `rcon-enabled: true` and command is allowlisted).
- `/<command>` Any `/...` command is also sent to console as RCON (admins only, when `rcon-enabled: true` and allowlisted).
Config Example
```yaml
SyncShield Configuration File
---------------------------------------------------------
This plugin provides 2FA security and Telegram chat sync for Minecraft.
It protects OP accounts, supports command feedback, and can notify admins about server events.
Supported server versions: 1.16.X - 1.21.X (Paper/Spigot API).
Telegram Bot Token (REQUIRED)
You can get this by chatting with @BotFather on Telegram.
Use the /newbot command and follow instructions.
After editing, run /syncshield reload or restart the server.
bot-token: "YOUR_BOT_TOKEN_HERE"
Telegram Owner ID (Superuser, overrides all)
This ID has full access to the bot regardless of permissions.
You can get your ID from @userinfobot or similar bots.
Use a single numeric ID, not a username.
owner-id: 0
Telegram Admin IDs for monitoring and RCON access
List of IDs that can manage the bot and receive notifications.
Example: admin-ids: [123456789, 987654321]
You can leave it empty and use only owner-id.
admin-ids: []
Default Language for the plugin
Supported languages: en (English), ru (Russian)
This will determine which messages_*.yml file to use.
Changing this will replace messages.yml with the selected language template.
language: en
2FA mode for Operators (OPs): always, session, whitelist, disabled
always: Approval is required for every login attempt (highest security).
session: Approval is remembered for the duration of session-expiry-hours.
whitelist: Approval is permanent for the IP address until manual removal.
disabled: 2FA is disabled for OPs by default (not recommended).
op-2fa-mode: session
2FA mode for non-OP players who have linked their account: always, session, whitelist, disabled
This applies to regular players who use /syncshield link.
Default: disabled
Recommendation: keep disabled unless you need 2FA for everyone.
non-op-2fa-mode: disabled
Session expiry in hours (only for 'session' mode)
After this period, the player must re-approve their login from Telegram.
Shorter values are more secure but less convenient.
session-expiry-hours: 12
Enable RCON access via Telegram for admins
If true, admins can run console commands directly from the bot.
This is powerful; restrict admin-ids and keep bot-token private.
rcon-enabled: true
Restrict bot to private chats only (Highly recommended for security)
If true, the bot will ignore any commands or messages from group chats.
Set to false only if you use chat sync in groups.
private-only: true
Enable debug outputs in the console
Use this only for troubleshooting; it can generate a lot of log output.
Debug logs never show your bot-token.
debug: false
Data storage encryption
Data is stored in syncshield_data.db (SQLite). When encryption is enabled,
the plugin generates a random 16-digit key on first launch and stores it
in syncshield_data.key. If this key is lost, data cannot be recovered.
You cannot change the key after first launch.
data-encryption: true
Telegram <-> Minecraft chat sync
Add chat IDs where you want chat sync to happen (group or private).
Make sure the bot is added to the chat and has permission to read messages.
chat-sync-enabled: false
List of Telegram chat IDs that will receive/forward chat.
Example: ["123456789", "-1009876543210"]
chat-sync-chat-ids: []
Optional: map chat IDs to topic IDs for supergroups.
Format: ["-1001234567890:42", "-1009876543210:7"]
If a chat ID has a topic mapping, messages will be sent to that topic.
chat-sync-topics: []
Enable/disable MC -> Telegram chat sync for plain chat messages.
If disabled, only special tags like [inv]/[item] will be processed.
This does not affect Telegram -> Minecraft sync.
chat-sync-chat-enabled: true
Enable/disable MC -> Telegram join/leave messages.
Use this if you want chat sync but no system join/leave spam.
chat-sync-join-leave-enabled: true
Enable/disable MC -> Telegram death messages.
Death messages are pulled from Minecraft and sent to Telegram.
chat-sync-death-enabled: true
Forward Minecraft chat to Telegram.
Turn this off if you only want Telegram -> Minecraft.
Requires chat-sync-enabled to be true.
chat-sync-from-mc: true
Forward Telegram chat to Minecraft.
Turn this off if you only want Minecraft -> Telegram.
Requires chat-sync-enabled to be true.
chat-sync-from-tg: true
Enable [inv] and [ender] rendering.
If disabled, [inv] and [ender] tags are ignored.
chat-sync-render-inventory: true
Enable [ender] rendering.
If disabled, [ender] tags are ignored even if inventory rendering is on.
chat-sync-render-ender: true
Enable [item] rendering.
If disabled, [item] tags are ignored.
chat-sync-render-items: true
Enable book rendering when holding a written book and using [item].
If disabled, books will be sent as text only.
chat-sync-render-books: true
Enable advancement rendering.
If disabled, advancement images are not sent.
chat-sync-render-advancements: true
Block item baking (for accurate 3D block item renders)
If enabled, the plugin will download official assets and bake item renders on first startup per version.
This can cause CPU spikes and short lag during the first bake.
The baked cache is stored under plugins/SyncShield/cache/
bake-block-items-on-startup: true
Log progress while baking block items.
Disable if you want a quieter console during the bake.
bake-block-items-log-progress: true ```
Roadmap
| Status | Feature | Key Task | | :---: | :--- | :--- | | ❌ (Planned for 1.7/1.8) | Discord RCON | Support Quilt, Fabric, Forge, and NeoForge | | WIP (Planned for 1.4/1.5) | Discord RCON | Implement a ticket/report system in Minercaft & Telegram | | ✅ | Discord RCON | Port logic to older Minecraft versions | | ✅ | Discord RCON | Add command feedback to Telegram RCON | | ✅ | Discord RCON | Integrate Telegram <-> Minecraft chat | | WIP (Planned for 1.5/1.6) | Discord RCON | Add Discord login approval functions | | ❌ (Planned for 1.6/1.7) | Discord RCON | Support Google Auth, Authy, etc. | | WIP (Planned for 1.5/1.6) | Discord RCON | Integrate Discord <-> Minecraft chat | | WIP (Planned for 1.5/1.6) | Discord RCON | Integrate Discord RCON functionality |
WIP - Work in progress ❌ - Not implemented ✅ - Done