CommandLogger

Versiyon: 1.0.0 Platform: Velocity Proxy (3.4.0-SNAPSHOT) Java Sürümü: 17+

schedule
01

Açıklama

CommandLogger, Velocity proxy sunucusu üzerinde çalışan hafif bir eklentidir. Oyuncuların çalıştırdığı tüm komutları zaman damgası, sunucu adresi, oyuncu adı ve komut detayıyla birlikte bir log dosyasına kaydeder. Konsol komutları filtrelenir; yalnızca oyuncu kaynaklı komutlar loglanır.


02

Özellikler

  • Oyuncuların çalıştırdığı tüm komutları otomatik olarak yakalar
  • Her log satırına tarih ve saat damgası ekler (yyyy-MM-dd HH:mm:ss formatında)
  • Oyuncunun o an bağlı olduğu backend sunucusunun IP adresini ve portunu kaydeder
  • Oyuncu adını log kaydına dahil eder
  • Komut içindeki satır sonu karakterlerini (\n, \r) temizleyerek log enjeksiyonunu önler
  • Konsol kaynaklı komutları filtreler, yalnızca gerçek oyuncu komutlarını loglar
  • Thread-safe yazma mekanizması (synchronized blok) ile eş zamanlı erişim güvenliği sağlar
  • Log dosyası ve dizin yapısı otomatik olarak oluşturulur
  • UTF-8 karakter kodlaması ile yazma desteği
  • Herhangi bir yapılandırma dosyası gerektirmez; kur ve çalıştır mantığıyla çalışır

03

Gereksinimler

Gereksinim Minimum Sürüm
Java 17
Velocity Proxy 3.4.0-SNAPSHOT veya uyumlu bir sürüm
Maven (derleme için) 3.x

04

Kurulum

  1. Projeyi derleyin veya hazır JAR dosyasını edinin (bkz. Derleme bölümü)
  2. Oluşan commandlogger-1.0.0.jar dosyasını Velocity sunucunuzun plugins/ klasörüne kopyalayın
  3. Velocity sunucusunu yeniden başlatın veya yeniden yükleyin
  4. Eklenti otomatik olarak etkinleşecek ve komutları loglamaya başlayacaktır

05

Komutlar ve İzinler

Bu eklenti herhangi bir komut veya izin sistemi içermez. Tamamen pasif çalışır; oyuncu komutlarını arka planda dinler ve loglar.


06

Yapılandırma

CommandLogger herhangi bir config.yml veya yapılandırma dosyası kullanmaz. Eklenti, yüklenir yüklenmez varsayılan ayarlarıyla çalışmaya başlar.

Log dosyası şu konumda otomatik olarak oluşturulur:

plugins/commandlogger/commands.log

07

Log Dosyası Formatı

Her komut çalıştırıldığında commands.log dosyasına şu formatta bir satır eklenir:

yyyy-MM-dd HH:mm:ss | server=<sunucu_ip>:<port> | player=<oyuncu_adı> | cmd=/<komut>

Örnek çıktı:

2026-04-05 14:32:10 | server=192.168.1.50:25565 | player=Arcania | cmd=/gamemode creative
2026-04-05 14:32:45 | server=192.168.1.50:25565 | player=Notch | cmd=/tp Arcania
2026-04-05 14:33:01 | server=10.0.0.2:25566 | player=Steve | cmd=/msg Arcania merhaba

Eğer oyuncu henüz bir backend sunucusuna bağlı değilse, sunucu adresi unknown olarak kaydedilir.


08

Nasıl Çalışır

  1. Olay Dinleme: Eklenti, Velocity API'nin CommandExecuteEvent olayını @Subscribe anotasyonu ile dinler.
  2. Kaynak Filtreleme: Komut kaynağının bir Player (oyuncu) olup olmadığı kontrol edilir. Konsol komutları görmezden gelinir.
  3. Komut Temizleme: Komut metni sanitizeCommand() yöntemi ile işlenir; satır sonu karakterleri (\n, \r) boşlukla değiştirilerek log enjeksiyonu önlenir.
  4. Sunucu Bilgisi: Oyuncunun o an bağlı olduğu backend sunucusunun IP adresi ve portu formatAddress() ile okunur.
  5. Log Satırı Oluşturma: Zaman damgası, sunucu adresi, oyuncu adı ve komut bir formatlı string olarak birleştirilir.
  6. Dosyaya Yazma: writeLine() yöntemi synchronized blok içinde çalışır. Bu sayede birden fazla thread aynı anda dosyaya yazmaya çalıştığında veri bozulması engellenir. Dosya ve üst dizini yoksa otomatik olarak oluşturulur.

auto_awesome Benzer Projeler