Ana sayfaya dön
SkriptMinecraftJava

Skript'te ana iş parçacığını bekletmeden: MundoSK-Async

Hazar Akbuz · · 1 dk okuma · Güncellendi

MundoSK'nin asenkron özelliğini güncel Skript sürümlerine taşıyan MundoSK-Async ile async ve sync bölümleri nasıl kullanılır?

Skript, sunucu yöneticilerinin eklenti yazmadan ya da yazdırmadan sunucularını özelleştirmesini sağlayan bir Bukkit eklentisi. Komutlar ve olaylar varsayılan olarak sunucunun ana iş parçacığında çalışır; uzun süren bir iş (dosya ya da ağ erişimi, ağır bir sorgu) orada koşarsa sunucunun tamamı o işi bekler.

MundoSK-Async, MundoSK'nin asenkron çalışma özelliğinin güncel Skript sürümleri için yeniden ele alınmış hâli; projects.gg GitHub organizasyonunda açık kaynak olarak duruyor.

Bölüm olarak: async: ve sync:

command /dispatchmeasync:
  trigger:
    set {_sender} to sender
    async:
      send "Hello %{_sender}%!"
      sync:
        send "Sync section!"

async: bölümü ana iş parçacığının dışında çalışır; içine yerleştirilen sync: bölümü ise ana iş parçacığına geri döner. Bölümler arasında kullanılacak yerel değişkeni (örnekteki {_sender}) bölümden önce tanımlayın.

Etki olarak: async ve sync

command /dispatchmeasynceffect:
  trigger:
    send "This is not async!"
    async
    send "This is async!"
    sync
    send "Welcome back to sync!"

Etki biçiminde girinti gerekmez: async satırından sonraki satırlar asenkron çalışır, sync satırıyla ana iş parçacığına dönülür.

Ne zaman geri dönmeli?

Bukkit API'sinin büyük kısmı ana iş parçacığı dışından güvenle çağrılamaz. Dünyaya, oyunculara ya da envantere dokunan her adımı bir sync bölümüne bırakmak, asenkron kısmı yalnız bekleten işlere ayırmak en güvenli yoldur.

Derleme ve teşekkür

Proje kök dizininde ./gradlew build komutuyla derlenir; çıktı ./build/libs klasörüne düşer. Teşekkürler: MundoSK'nin yaratıcısı Tlatoani, MundoSK'yi MundoSK-Async olarak çatallayan nanodn ve Skript 2.6+ uyumluluğu için TPGamesNL.