1. MSPT’yi Ölçme
Spigot’un yerleşikQuery API’si yanıt süresini döndürür.
Kod:
int msp = Bukkit.getServer().getServerListPing().getPings(); // ms cinsinden
Essentials veya LiteAPI gibi ücretsiz plugin’ler /query komutunu verir.2. Görüş Mesafesi Değeri
spigot.yml’deki view-distance değeri 2‑20 arasında değişebilir.mspt < 80⇒ 1080 ≤ mspt < 120⇒ 8120 ≤ mspt < 200⇒ 6mspt ≥ 200⇒ 4
3. Değişikliği Uygulama
Spigot’unViewDistance parametresi sunucu yeniden başlatmadan değiştirilemez.Bu nedenle dinamik ayarlama için bir plugin yazılır.
Kod:
public class ViewDistanceUpdater implements Listener {
private final JavaPlugin plugin;
public ViewDistanceUpdater(JavaPlugin plugin) {
this.plugin = plugin;
Bukkit.getServer().getScheduler().runTaskTimer(plugin, this::update, 0, 20 * 5);
}
private void update() {
int msp = Bukkit.getServer().getServerListPing().getPings();
int newDist = switch (msp) {
case <= 80 -> 10;
case <= 120 -> 8;
case <= 200 -> 6;
default -> 4;
};
String cmd = "view-distance " + newDist;
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), cmd);
}
}
view-distance komutu, Spigot API’sinin Server sınıfında bulunur ve anında uygulanır.4. Güvenlik ve Performans Dikkatleri
- Çok sık değişim (her 5 saniyede) CPU üzerindeki yükü artırabilir.
- Değişiklikler genellikle tek oyunculu test ortamında denetlenmeli; üretime geçmeden önce yedek alın.
core-spawnbloklarının yoğun olduğu bölgelerde yüksek MSPT, düşük mesafeyle yavaşlatma riskini azaltır.
5. Örnek Plugin Yapısı
| Dosya | İçerik |
|---|---|
plugin.yml | ``name: DynamicViewDistance\ntag: viewdist-plugin\nmain: com.example.viewdist.DynamicViewDistanceUpdater\nversion: 1.0\napi-version: 1.20`` |
DynamicViewDistanceUpdater.java | Yukarıdaki kod bloğu |
Bu adımları uygulayarak sunucu MSPT’sine göre otomatik görüş mesafesi ayarlayabilirsiniz.
Dinamik mesafe değişikliğinin oyuncu deneyimine etkisi hakkında ne düşünüyorsunuz?