Çevrim dışı oyuncu verisi
Eklentiler için, oyuncu çevrimdışı olsa bile, oyuncu verilerine erişmek gerekli olabilir. Sponge.getServer().getPlayer()``metodu bir :javadoc:`Player` döner ve bunun için kullanılabilir diye düşünüyor olabilirsiniz. Ancak ``Player
nesneleri yalnızca çevrimiçi oyuncular içindir, başka bir çözüm kullanılması gerekir.
Bazı eklentiler ilgili verileri kendileri depolarlar ve GameProfileManager kullanarak kullanıcıyı ilişkilendirirler. Ancak çevrimdışı ve çevrimiçi kullanıcılar için farklı kod yazmak gerekli değildir. ServiceManager , UserStorageService olarak bilinen, offline Player
lar için :javadoc: User oluşumunu dönebilen servisi sağlar. Player` arayüzü User
metodlarını genişlettiğinden dolayı, Player
da çağırabilirsiniz.
Örneğin:
Bütün örnek oluşumlar için
#hasPermission(String permission)
uygundur.
Örnek kod
Burada bir User
‘ın alınması için kullanılan yardımcı metodun örneği bulunmaktadır:
import java.util.Optional;
import java.util.UUID;
import org.spongepowered.api.Sponge;
import org.spongepowered.api.entity.living.player.User;
import org.spongepowered.api.service.user.UserStorageService;
public Optional<User> getUser(UUID uuid) {
Optional<UserStorageService> userStorage = Sponge.getServiceManager().provide(UserStorageService.class);
return userStorage.get().get(uuid);
}
This code will get the UserStorageService
from the ServiceManager
and then retrieve the User
from there.
Not
UserStorageService
, yalnızca bundan önce bağlanmış olan User
ları döner.
Not
This solution will not return Player
instances. This makes it safe to store the returned User
objects,
but you will need to use the User.getPlayer()
method to retrieve the online entity.