ArCountryBlocker

Bu yazılımın vers

schedule
01

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.


02

Ö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 (ConcurrentHashMap tabanlı)
  • 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

03

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.


04

Kurulum

  1. Projeyi derleyin veya hazır JAR dosyasını indirin (bkz. Derleme bölümü).
  2. Elde edilen ArCountryBlocker-1.0.0.jar dosyasını Velocity sunucunuzun plugins/ klasörüne kopyalayın.
  3. Velocity sunucusunu başlatın veya yeniden başlatın.
  4. Eklenti ilk çalıştırmada plugins/arcountryblocker/config.yml dosyasını otomatik olarak oluşturacaktır.
  5. config.yml dosyasını ihtiyaçlarınıza göre düzenleyin.
  6. Değişiklikleri uygulamak için /countryblocker reload komutunu kullanın veya sunucuyu yeniden başlatın.

05

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)

06

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

07

Nasıl Çalışır

  1. Bağlantı Dinleme: Bir oyuncu Velocity proxy'sine bağlandığında, eklenti LoginEvent olayını yakalar.
  2. Ö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.x vb.) kontrol atlanır.
  3. GeoIP Sorgusu: Oyuncunun IP adresi ip-api.com API'sine gönderilir ve ülke bilgisi elde edilir.
  4. Ö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.
  5. Ü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.
  6. 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.


auto_awesome Benzer Projeler