ArCountryBlocker
Bu yazılımın vers
Hakkında
ArCountryBlocker, Minecraft Velocity proxy sunucuları için geliştirilmiş bir ülke bazlı erişim kontrol eklentisidir. Oyuncuların IP adreslerini kullanarak gerçek zamanlı olarak ülke tespiti yapar ve yapılandırmaya göre belirli ülkelerden gelen bağlantıları engeller veya yalnızca belirli ülkelere izin verir.
Eklenti, ip-api.com ücretsiz GeoIP API servisini kullanarak IP adreslerinden ülke bilgisi sorgular ve sonuçları performans için önbelleğe alır.
Özellikler
- Beyaz Liste / Kara Liste Modu -- Yalnızca belirli ülkelere izin ver (whitelist) veya belirli ülkeleri engelle (blacklist)
- Gerçek Zamanlı GeoIP Sorgusu -- ip-api.com üzerinden oyuncunun IP adresinden ülke tespiti
- Önbellek Sistemi -- Tekrarlanan API çağrılarını önlemek için yapılandırılabilir süreli önbellek (
ConcurrentHashMaptabanlı) - Yerel IP Atlama -- Localhost ve özel ağ IP adresleri (
127.0.0.1,192.168.x.x,10.x.x.x,172.16-31.x.x,::1,fe80:) otomatik olarak atlanır - Bypass İzni -- Belirli oyuncuların ülke kontrolünü atlamasına izin veren yetki sistemi
- MiniMessage Desteği -- Tüm mesajlar Kyori Adventure MiniMessage formatıyla renkli ve biçimli olarak yapılandırılabilir
- Yönetici Komutları -- Yapılandırmayı yeniden yükleme, oyuncu ülke sorgulama ve durum görüntüleme
- Sekme Tamamlama -- Komutlar için otomatik tamamlama desteği
- Debug Modu -- Sorun giderme için detaylı konsol çıktısı
- Sıcak Yeniden Yükleme -- Sunucuyu yeniden başlatmadan yapılandırmayı güncelleme
Gereksinimler
| Gereksinim | Minimum Sürüm |
|---|---|
| Java | 17 |
| Velocity Proxy | 3.3.0+ |
Not: Eklenti harici bir veritabanına veya ek eklentiye ihtiyaç duymaz. GeoIP sorguları için internet bağlantısı gereklidir.
Kurulum
- Projeyi derleyin veya hazır JAR dosyasını indirin (bkz. Derleme bölümü).
- Elde edilen
ArCountryBlocker-1.0.0.jardosyasını Velocity sunucunuzunplugins/klasörüne kopyalayın. - Velocity sunucusunu başlatın veya yeniden başlatın.
- Eklenti ilk çalıştırmada
plugins/arcountryblocker/config.ymldosyasını otomatik olarak oluşturacaktır. config.ymldosyasını ihtiyaçlarınıza göre düzenleyin.- Değişiklikleri uygulamak için
/countryblocker reloadkomutunu kullanın veya sunucuyu yeniden başlatın.
Komutlar ve İzinler
Komutlar
Ana komut: /countryblocker (Kısayollar: /cb, /acb)
| Komut | Açıklama |
|---|---|
/countryblocker reload |
Yapılandırma dosyasını yeniden yükler ve önbelleği temizler |
/countryblocker check <oyuncu> |
Belirtilen oyuncunun ülkesini sorgular |
/countryblocker status |
Eklentinin mevcut durumunu gösterir (aktiflik, mod, ülkeler, debug) |
İzinler
| İzin | Açıklama |
|---|---|
arcountryblocker.admin |
Tüm yönetici komutlarına erişim sağlar |
arcountryblocker.bypass |
Ülke kontrolünü atlamasına izin verir (yapılandırmada değiştirilebilir) |
Yapılandırma
Eklenti ilk çalıştırıldığında plugins/arcountryblocker/config.yml dosyasını oluşturur. Aşağıda tüm yapılandırma seçenekleri açıklanmıştır:
# ArCountryBlocker Yapılandırması (Velocity)
# Eklenti ayarları
settings:
# Eklentiyi etkinleştir/devre dışı bırak
enabled: true
# Mod: "whitelist" veya "blacklist"
# whitelist = Yalnızca listedeki ülkelere izin ver
# blacklist = Listedeki ülkeleri engelle
mode: "whitelist"
# Önbellek süresi (dakika) - Tekrarlanan API çağrılarını önler
cache-duration: 60
# Debug modu - Konsola detaylı log yazar
debug: false
# Ülke kodları listesi (ISO 3166-1 alpha-2)
# Örnek: TR = Türkiye, AZ = Azerbaycan, US = ABD, DE = Almanya
# Tam liste: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
countries:
- "TR"
- "AZ"
# Mesajlar (MiniMessage formatını destekler)
# MiniMessage dokümantasyonu: https://docs.advntr.dev/minimessage/format.html
messages:
kick-message: |
<red><bold>Erişim Engellendi!</bold></red>
<gray>Bu sunucuya sadece belirli ülkelerden giriş yapılabilir.</gray>
<gray>Ülkeniz: <white>%country%</white> (<white>%country_code%</white>)</gray>
unknown-country-kick: |
<red><bold>Ülke Tespit Edilemedi!</bold></red>
<gray>IP adresinizden ülkeniz tespit edilemedi.</gray>
reload-success: "<green><bold>ArCountryBlocker</bold></green> ... <green>Konfigürasyon yeniden yüklendi!</green>"
no-permission: "<red><bold>ArCountryBlocker</bold></red> ... <red>Bu komutu kullanma yetkiniz yok!</red>"
player-not-found: "<red>Oyuncu bulunamadı!</red>"
check-result: "<green>%player% oyuncusunun ülkesi: %country% (%country_code%)</green>"
check-failed: "<red>%player% oyuncusunun ülkesi tespit edilemedi.</red>"
# Bypass ayarları
bypass:
permission: "arcountryblocker.bypass"
Yapılandırma Seçenekleri Detayı
| Anahtar | Tür | Varsayılan | Açıklama |
|---|---|---|---|
settings.enabled |
boolean | true |
Eklentinin aktif olup olmadığını belirler |
settings.mode |
string | "whitelist" |
whitelist: yalnızca listedekilere izin ver; blacklist: listedekileri engelle |
settings.cache-duration |
long | 60 |
GeoIP sorgu sonuçlarının önbellekte tutulma süresi (dakika) |
settings.debug |
boolean | false |
Konsola detaylı debug mesajları yazılmasını sağlar |
countries |
liste | ["TR", "AZ"] |
ISO 3166-1 alpha-2 ülke kodları listesi |
bypass.permission |
string | "arcountryblocker.bypass" |
Kontrolü atlama izni |
Mesaj Değişkenleri
Mesajlarda kullanılabilecek yer tutucular:
| Değişken | Açıklama | Kullanıldığı Mesajlar |
|---|---|---|
%country% |
Ülke adı (örneğin: Turkey) | kick-message, check-result |
%country_code% |
Ülke kodu (örneğin: TR) | kick-message, check-result |
%player% |
Oyuncu adı | check-result, check-failed |
Nasıl Çalışır
- Bağlantı Dinleme: Bir oyuncu Velocity proxy'sine bağlandığında, eklenti
LoginEventolayını yakalar. - Ön Kontroller:
- Eklenti devre dışıysa bağlantıya izin verilir.
- Oyuncu bypass iznine sahipse kontrol atlanır.
- IP adresi yerel/özel bir ağdan geliyorsa (
127.0.0.1,192.168.x.x,10.x.x.xvb.) kontrol atlanır.
- GeoIP Sorgusu: Oyuncunun IP adresi
ip-api.comAPI'sine gönderilir ve ülke bilgisi elde edilir. - Önbellek: Sorgu sonucu yapılandırılabilir süreli olarak önbelleğe alınır. Aynı IP'den gelen sonraki bağlantılar için API çağrısı yapılmaz.
- Ülke Kontrolü:
- Whitelist modu: Oyuncunun ülke kodu listede varsa bağlantıya izin verilir, yoksa engellenir.
- Blacklist modu: Oyuncunun ülke kodu listede varsa engellenir, yoksa bağlantıya izin verilir.
- Sonuç: Engellenen oyunculara MiniMessage formatıyla biçimlendirilmiş özelleştirilebilir bir mesaj gösterilir ve bağlantıları reddedilir.
API Limitleri
Eklenti, ip-api.com ücretsiz katmanını kullanır ve bu katman dakikada 45 istek ile sınırlıdır. Önbellek sistemi bu limiti aşmamak için kritik öneme sahiptir. Yüksek oyunculu sunucularda cache-duration değerini uygun şekilde ayarlamanız önerilir.