Oyun Profili Yöneticisi

Bir GameProfile veriyi UUID``ismi gibi kapsayan bir oyuncu profilini ve özellikler olarak bilinen diğer rastgele seçilmiş veriyi temsil eder.SpongeAPI ``GameProfileları almak,oluşturmak ve doldurmak için :javadoc:`GameProfileManager`sınıfı sağlar.Sıradaki kodu kullanarak ``GameProfileManager`` örneğini edinebilirsiniz.

import org.spongepowered.api.Sponge;
import org.spongepowered.api.profile.GameProfileManager;

GameProfileManager profileManager = Sponge.getServer().getGameProfileManager();

Oyun Profilleri alınıyor

Her GameProfileisteğinde, Mojang API’sine bir istek yapmak için kullanılacak Sponge’ın GameProfile nin önbelleğini sağladığının farkında olmak önemlidir. ``GameProfile`almak için kullanılan yöntemler önbellek kullanılıp kullanılmayacağını belirleyen ikinci bir boolean değişkeni saptar. Varsayılanda, önbellek mümkün olduğunda kullanılacak.

Bir GameProfile``ı, bir ``UUID ya da bir kullanıcı adı kullanılarak aranabilir. Aynı profili UUID olarak bakıldığında her zaman geri gönderileceğini unutmayın, fakat kullanıcı adları değiştirilebileceğinden, kullanıcı adı olarak arandığında bu durum her seferinde geçerli olmayabilir.

Kullanıcı adı ile alınıyor

import org.spongepowered.api.profile.GameProfile;

import java.util.concurrent.CompletableFuture;

CompletableFuture<GameProfile> futureGameProfile = profileManager.get("Notch");

UUID ile alınıyor

import java.util.UUID;

CompletableFuture<GameProfile> futureGameProfile =
    profileManager.get(UUID.fromString("069a79f4-44e9-4726-a5be-fca90e38aaf5"));

Tüyo

Ayrıca GameProfileManager#getAllById(Iterable<UUID>, boolean) veya GameProfileManager#getAllByName(Iterable<String>, boolean) kullanarak bir çok GameProfile geri getirebilirsiniz.Bu tekniklerin her ikisi de ``CompletableFuture<Collection<GameProfile>>``i geri getirir.

Bu tekniklerin her birinin bir tür CompletableFuture geri getirdiğini dikkate alınız.Bu durum GameProfile (veya Collection<GameProfile>) Mojang API için askıda kalan istekler yüzünden hemen mevcut durumda olmayabileceğini gösterir.

CompletableFuture<GameProfile den GameProfile almak için kolaylıkla CompletableFuture#get yöntemini kullanabilirsin.

GameProfile gameProfile = futureGameProfile.get();

Uyarı

Eğer GameProfile hemen kullanılabilir olmazsa (örneğin önbellek kullanılmıyor veya GameProfile içermiyorsa) o zaman get daha sonra tamamlamak için bekleyecek. Bu sebeple sunucuyu durduracağından bunu ana başlıkta kullanmanız tavsiye edilmez. Buna alternatif olarak tamamlama üzerinden çalıştırılacak bir Consumer belirlemek için CompletableFuture#thenAccept(Consumer<? super T>) kullanabilirsiniz.

OyunProfilleri oluşturuluyor

GameProfile#of(UUID, String) kullanarak yeni bir GameProfile oluşturabilirsiniz.Kullanıcı adının o oyuncunun UUID``si ile muhakkak uyuşma zorunluluğu olmadığını dikkate alınız.Aynı şekilde ``UUID de geçerli bir oyuncuya ait olmak zorunda değildir.

GameProfile gameProfile = GameProfile.of(
        UUID.fromString("00000000-0000-0000-0000-000000000000"),
        "Herobrine");

Not

GameProfile``adını belirtmek zorunlu değildir (``null geçerli bir değişkendir).

Oyun Profilleri Dolduruluyor

Bir GameProfile doldurmak, oyuncunun dış görünüşü gibi bilgileri Mojang API’sinden alarak profili tamamlar. Kullanıcı adı gibi sahte veri belirli bir UUID ile ilişkilendirilmişse, bunun yerine Mojang API’sındaki gerçek verilerle değiştirileceğini unutmayın.

GameProfile filledProfile = profileManager.fill(gameProfile).get();

Profil Özellikleri

GameProfile, bir oyuncuyla ilgili keyfi verileri saklamak için ProfileProperty ile kullanılabilir. Ancak bu durum kalıcı veri saklama olarak kullanılamaz, çünkü veriler sunucu yeniden başladığında yerinde kalmayacaktır. Bir GameProfile’in özelliklerini almak için, Multimap döndüren GameProfile#getPropertyMap() yöntemini kullanabiliriz. Buradan, varolan bir değeri alabilir veya yeni bir ProfileProperty depolayabilir, bunlar bir anahtar değerin çifti olarak temsil edilir. Yeni bir ProfileProperty üretmek için ProfileProperty#of(String, String) yöntemini çağırmanız yeterlidir. Üçüncü argüman olan (imza) isteğe bağlıdır. Bununla birlikte, bazı özellikler için geçerli bir Mojang imzası belirtilmelidir.

import org.spongepowered.api.profile.property.ProfileProperty;

import java.util.Collection;

profile.getPropertyMap().put(
    "key", ProfileProperty.of("foo", "bar", null));
Collection<ProfileProperty> customProperties = profile.getPropertyMap().get("key");

GameProfileCache

Ayrıca``GameProfile``lar depolamak için Sponge tarafından kullanılan the :javadoc:`GameProfileCache`e direkt olarak erişebilirsiniz.Bunu yapmak için basit bir şekilde the :javadoc:`GameProfileManager#getCache()` tekniğini çağırın. GameProfileCache kullanarak,``GameProfile``a bakabilir,yeni yapılmış ``GameProfile``lar ekleyebilir ve profilleri önbellekte depolanmış verilerle doldurabilirsiniz.

import org.spongepowered.api.profile.GameProfileCache;

GameProfile fakeProfile =
    GameProfile.of(UUID.fromString("00000000-0000-0000-0000-000000000000"),
    "Herobrine");
GameProfileCache cache = profileManager.getCache();
cache.add(profile);

Tüyo

Ayrıca GameProfileCache#add(GameProfile) var olan önbelleğin girdilerinin üstüne yazılmış olup olmayacağını belirleyen bir boolean ikincil argüman ve GameProfile``ın bitiş zamanını ayarlayan bir``Date üçüncü argüman onaylar.

Eğer hiç önbellekten bir GameProfile silmeniz gerektiğine karar verirseniz GameProfileCache#remove(GameProfile) çağırabilirsiniz.Eğer bütün ``GameProfile``larını önbellekten silmeniz gerekiyorsa GameProfileCache#clear() çağırabilirsiniz.

GameProfileCache ayrıca :javadoc:`GameProfileManager#setCache(GameProfileCache)`tekniği ile birlikte eklentiler tarafından kurulabilir. Orijinal önbelleği iyileştirmek için aynı yöntemi kullanın, :javadoc:`GameProfileManager#getDefaultCache()`in sonuçlarını geçmek.