Skip to content

kAuth v1.0.3 - Bossbar, Countdown, Optimize

Choose a tag to compare

@KEYDALTR KEYDALTR released this 09 Apr 11:12

kAuth v1.0.3

Yeni Özellikler

Görsel Bekleme Ekranı

  • Bossbar countdown (effects.waiting.bossbar) - kalan süre progress bar ile
  • Title/subtitle countdown (effects.waiting.title-countdown) - dialog açıkken de görünür, her saniye güncellenir
  • Arka plan ses döngüsü (effects.waiting.sound-loop) - oyuncu sıkılmasın diye
  • Actionbar/bossbar/title mesajlarında %time% placeholder (kalan saniye)

Yapılandırma

  • Şifre tekrarı aç/kapa (auth.require-password-confirmation)
    • true → /kayit <şifre> <tekrar> (varsayılan)
    • false → /kayit <şifre> (tek şifre, dialog'da ikinci alan gizlenir)
  • Max login attempts varsayılan 5 → 3 (configurable)
  • IP temp ban prelogin kontrolü (auth.ip-ban-on-prelogin)
    • Bloklanan IP AsyncPlayerPreLoginEvent'te kick edilir
    • Sunucu kaynağı harcamadan engellenir
    • Kick mesajında kalan süre gösterilir

Düzeltmeler

  • /cikis sonrası countdown/bossbar/title task'ları yeniden başlamıyordu → beginAuthFlow tam akış yeniden başlatır
  • Auth başarılı olunca title ekrandan temizlenmiyordu → clearTitle() + boş actionbar
  • Manuel logout sonrası session cache temizlenmiyor, reconnect'te auto-login oluyordu → session temizliği eklendi
  • Admin kayitsil/sifredegistir sonrası hedef oyuncu için tam auth flow yeniden başlatılıyor

Optimizasyonlar

  • Global Settings cache (config/Settings.java) - 20+ hot-path config değeri volatile field'larda, /kauth reload'da yenilenir
  • PlayerProtectionListener tamamen Settings kullanıyor, her event'te config okuma yok
  • Allowed commands O(1) Set lookup (önceden List traverse)
  • PlayerMoveEvent event.hasChangedBlock() shortcut + ignoreCancelled=true
  • Session state tek Map<UUID, SessionEntry> (önceden 2 ayrı map)
  • JoinListener unified update task - actionbar + bossbar + title countdown tek timer'a birleşti (6 task → 3 task)
  • Per-join AuthSession config cache - her tick config lookup yok
  • DB + PBKDF2 async - LoginCommand, RegisterCommand, ChangePasswordCommand, dialog callback'leri async thread'de

Performans Sonuçları (Spark Profiler)

60 saniye profil, 3 bot sürekli login/logout/wrong-password yük altında:

  • Main thread kAuth CPU: %1.7
  • Server genel: %94 idle
  • DB toplam: 24ms / 60s (query başına ~0.4ms)
  • PBKDF2 main thread'de sıfır (async çalışıyor)

Test Sonuçları

  • 38/38 unit test (PasswordUtil, AuthMessage, SQLiteDatabase)
  • 15/15 entegrasyon testi (Paper 1.21.11 sunucusunda mineflayer bot)

Kurulum

Dosya Nereye
kAuth-1.0.3.jar Paper sunucusu plugins/
kAuth-Velocity-1.0.3.jar Velocity proxy plugins/

Config otomatik oluşturulur. Velocity plugin kullanıyorsan plugins/kauth/config.properties'te ignored-servers=limbo,filter ayarını yapabilirsin (LimboFilter uyumluluğu).