Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
Link2It links a player's Minecraft account to their Discord account and uses that link to protect your server. When a staff member joins, a confirmation card goes to their Discord. Until they approve it, they can't move, chat or run commands. Linked players get their Discord role and rewards, and LuckPerms groups stay in sync with Discord roles in both directions.
The same jar runs on Paper and Spigot.
Language: the plugin ships in Turkish. Chat messages, screens and Discord cards come from messages.yml and can be translated. Discord slash command names and a few fixed replies stay in Turkish. A Turkish version of this page is at the bottom.
Account linking
The player types /esle (or /link) in game and a 6-digit code appears on screen. In the linking channel on Discord, they press the link button and type the code into the form that opens. The code is never posted in the channel, so nobody else sees it. The /esle <code> slash command works as well.
Once linked, the player gets the Discord role, their nickname changes to their in-game name, and the reward commands run. Rewards are given once per account; unlinking and linking again doesn't pay out a second time.
Two optional settings:
link.required: unlinked players can join but can't move. They stay in so they can take the code to Discord, and the lock lifts by itself once the link is made.link.confirm-in-game: after the code is entered on Discord, the player is asked in game whether that Discord account is theirs. If a staff member shows their code on stream, a viewer can't bind the account to their own Discord.
Two-factor login for staff
Operators and anyone with link2it.2fa.required are frozen when they join. A card with approve, deny and "deny and block IP" buttons arrives in their Discord DMs, or in the security channel if their DMs are closed. If the login is denied, the defense commands from the config run and the player is kicked.
If Discord can't be reached, there are two fallbacks: a TOTP code from an authenticator app, or single-use backup codes. During TOTP setup the QR code is drawn on a map in the player's hand and scanned with a phone. The map carries the secret, so it can't be dropped, put in a chest or lost on death.
Commands such as /op, /ban and /stop need Discord approval before they run; the list is in the config. A staff member who comes back from an approved connection isn't asked again for 30 days.
TOTP secrets are encrypted with AES-256-GCM. The key lives in plugins/Link2It/.key, so a leaked database backup doesn't expose anyone's TOTP. IP addresses are never stored as they are, only their hashes.
Role sync and boost rewards
With LuckPerms installed, you can pair an in-game group with a Discord role. A group given in game appears as a role on Discord, a role given on Discord appears as a group in game, and removals carry over both ways.
Members who boost your Discord server join a group in game and unlock a three-tier reward menu. Each tier can be claimed once. Discord doesn't tell bots how many boosts a member has, so the tier is read from roles on your server such as "2x Booster". If you don't set any, every booster counts as tier 1.
Management
/link2it panel changes nearly every setting from inside the game, with channel and role lists pulled live from Discord. Saving a setting rewrites only its own line in config.yml; your comments stay where they are.
Each section of the panel has its own permission, so a moderator can edit linking settings while 2FA stays locked. Settings that run console commands (rewards, deny commands, role mappings) can only be changed with link2it.admin. The panel also has player cards and an audit log.
Screens use the dialog windows added in Minecraft 1.21.6. With ui.mode: CHEST they switch to chest menus; when a code or value is needed, the player types it in chat and the message isn't shown to anyone.
Setup
- Create an application in the Discord Developer Portal and copy the token from the Bot tab.
- If you'll use role sync or boost rewards, turn on the Server Members Intent. Linking and 2FA work without it.
- Invite the bot with the
botandapplications.commandsscopes and the Send Messages, Manage Roles and Manage Nicknames permissions. Move the bot's role above the roles it will give out. - Put the jar in
plugins/and start the server. On the first start the server downloads JDA and the database drivers from Maven Central. - Fill in the token, server ID and channel IDs in
plugins/Link2It/config.yml, then run/link2it yenile. - Post the linking panel to its channel with
/link2it panel-gonder.
Commands
| Who | Commands |
|---|---|
| Players | /esle (/link), /esle coz, /dogrula <code> (/verify), /2fa (/twofactor), /boost |
| Staff | /link2it panel, durum, yenile, panel-gonder, bilgi, coz, liste, odul, onayla, ip-engel-kaldir, /2fa sifirla <player> |
| Discord | /esle <code>, /hesabim, /coz, /l2i kim, /l2i coz, /l2i durum, /l2i senkron |
What the Turkish words mean: coz = unlink, durum = status, yenile = reload, panel-gonder = post panel, bilgi = info, liste = list, odul = reward, onayla = approve, ip-engel-kaldir = lift IP block, sifirla = reset, hesabim = my account, kim = who, senkron = sync.
PlaceholderAPI: %link2it_linked%, %link2it_discord%, %link2it_discord_id%, %link2it_date%, %link2it_2fa%, %link2it_boost%, %link2it_total%. The Turkish names (esli, tarih, toplam) work too.
Requirements
- Paper or Spigot 26.2, Java 25
- A Discord bot
- Optional: LuckPerms, PlaceholderAPI
- SQLite (no setup needed), or MySQL/MariaDB to share data between servers
- Access to Maven Central on the first start
Türkçe
Link2It oyuncunun Minecraft hesabını Discord hesabına bağlar ve bu bağı sunucunu korumak için kullanır. Yetkili biri sunucuya girdiğinde Discord'una bir onay kartı gider; onaylamadan yürüyemez, konuşamaz, komut çalıştıramaz. Eşleyen oyuncu Discord rolünü ve ödüllerini alır, LuckPerms grupları da Discord rolleriyle iki yönde eşitlenir.
Aynı jar Paper'da ve Spigot'ta çalışır. Bütün metinler Türkçe ve messages.yml dosyasından değiştirilebilir.
Hesap eşleme
Oyuncu oyunda /esle yazar, ekranda 6 haneli bir kod çıkar. Discord'daki eşleme kanalında "Hesabını Eşle" butonuna basar ve kodu açılan pencereye girer. Kod kanala hiç yazılmaz, başkası göremez. Buton yerine Discord'da /esle <kod> komutu da çalışır.
Eşleme kurulunca oyuncu Discord rolünü alır, takma adı oyun adıyla değişir ve ödül komutları çalışır. Ödül hesap başına bir kez verilir; eşlemeyi kaldırıp yeniden eşlemek ikinci ödülü getirmez.
İki ayar isteğe bağlı:
link.requiredaçıksa eşlemeyen oyuncu sunucuya girer ama yerinden kıpırdayamaz. Kodu alıp Discord'da girebilsin diye içeride bekler; eşleme tamamlanınca kilit kendiliğinden açılır.link.confirm-in-gameaçıksa kod Discord'da girilince oyuncuya "bu hesap senin mi?" diye sorulur. Yayında kodunu gösteren bir yetkilinin hesabını, kodu gören biri kendi Discord'una bağlayamaz.
Yetkililer için iki adımlı doğrulama
OP'ler ve link2it.2fa.required izni olanlar girişte donar. Discord'larına Onayla, Reddet ve Reddet + IP engelle butonlu bir kart gelir. Giriş reddedilirse config'teki savunma komutları çalışır ve oyuncu atılır.
Discord'a ulaşılamazsa iki yol daha var: Authenticator uygulamasından TOTP kodu ya da tek kullanımlık yedek kodlar. TOTP kurulumunda QR kod oyuncunun eline verilen bir haritaya basılır, telefonla okutulur. Harita gizli anahtarı taşıdığı için yere atılamaz, sandığa konamaz, ölünce düşmez.
/op, /ban, /stop gibi komutlar çalışmadan önce Discord onayı ister; liste config'ten değiştirilir. Onaylanmış bir bağlantıdan yeniden giren yetkiliye 30 gün boyunca tekrar sorulmaz.
TOTP anahtarları AES-256-GCM ile şifrelenir. Şifreleme anahtarı plugins/Link2It/.key dosyasında durur, veritabanı yedeği sızsa bile TOTP kurulumları açılamaz. IP adresleri veritabanına ham yazılmaz, yalnızca özetleri tutulur.
Rol senkronu ve takviye ödülleri
LuckPerms kuruluysa bir oyun grubunu bir Discord rolüne bağlayabilirsin. Oyunda verilen grup Discord'da rol olarak gelir, Discord'da verilen rol oyunda grup olarak; alınan rol de iki tarafta alınır.
Sunucuyu takviye (boost) edenler oyunda bir gruba girer ve üç kademeli bir ödül menüsü açar. Her kademe bir kez alınır. Discord kimin kaç takviye bastığını söylemediği için kademe, sunucundaki "2x Booster" gibi rollerden okunur. Hiç rol tanımlamazsan takviye yapan herkes 1. kademe sayılır.
Yönetim
/link2it panel ayarların neredeyse hepsini oyunun içinden değiştirir; kanal ve rol listeleri Discord'dan canlı gelir. Kaydedilen ayar config.yml'de yalnızca kendi satırını değiştirir, yorumlar yerinde kalır.
Panelin her bölümünün kendi izni var; bir moderatöre eşleme ayarlarını açıp 2FA'yı kapalı tutabilirsin. Konsol komutu çalıştıran ayarları (ödüller, reddetme komutları, rol eşleşmeleri) yalnızca link2it.admin değiştirebilir. Panelde ayrıca oyuncu kartları ve denetim kaydı var.
Ekranlar Minecraft 1.21.6 ile gelen pencerelerdir. ui.mode: CHEST ile sandık menüsüne geçilebilir; kod ya da değer gereken yerde oyuncu cevabını sohbete yazar, mesaj kimseye gitmez.
Kurulum
- Discord Developer Portal'da bir uygulama aç, Bot sekmesinden tokeni al.
- Rol senkronu ya da takviye ödülleri kullanacaksan Server Members Intent'i aç. Eşleme ve 2FA için gerekmez.
- Botu
botveapplications.commandskapsamlarıyla, Send Messages, Manage Roles ve Manage Nicknames yetkileriyle sunucuna davet et. Botun rolünü, vereceği rollerin üstüne taşı. - Jar'ı
plugins/klasörüne at, sunucuyu başlat. İlk açılışta JDA ve veritabanı sürücüleri Maven Central'dan iner. plugins/Link2It/config.ymliçine tokeni, sunucu ve kanal kimliklerini yaz, sonra/link2it yenile./link2it panel-gonderile eşleme panelini kanala gönder.
Komutlar
| Kim | Komutlar |
|---|---|
| Oyuncu | /esle, /esle coz, /dogrula <kod>, /2fa, /boost |
| Yetkili | /link2it panel, durum, yenile, panel-gonder, bilgi, coz, liste, odul, onayla, ip-engel-kaldir, /2fa sifirla <oyuncu> |
| Discord | /esle <kod>, /hesabim, /coz, /l2i kim, /l2i coz, /l2i durum, /l2i senkron |
PlaceholderAPI: %link2it_esli%, %link2it_discord%, %link2it_discord_id%, %link2it_tarih%, %link2it_2fa%, %link2it_boost%, %link2it_toplam%. İngilizce adlar da çalışır (linked, date, total).
Gereksinimler
- Paper ya da Spigot 26.2, Java 25
- Bir Discord botu
- İsteğe bağlı: LuckPerms, PlaceholderAPI
- SQLite (kurulum istemez) ya da birden fazla sunucu için MySQL/MariaDB
- İlk açılışta Maven Central'a erişim


