Tidak hidup Data Pemain
Mungkin diperlukan untuk plugin untuk mengakses data pemain bahkan ketika pemain sedang offline. Anda mungkin berpikir bahwa Sponge.getServer().getPlayer()
kembali :javadoc:`Pemain` dapat digunakan untuk ini. Tapi karena Pemain
benda-benda yang ada hanya untuk pemain online, solusi lain harus digunakan.
Beberapa plugin menyimpan data mereka sendiri yang relevan dan mengaitkan pengguna dengan menggunakan GameProfileManager. Namun menulis kode yang berbeda untuk pengguna luring dan daring tidak diperlukan. ServiceManager secara native menyediakan layanan yang dikenal sebagai UserStorageService yang mampu mengembalikan User contoh untuk Player
s yang sedang luring. Sejak Player
antarmuka diperluas User
sebagian besar metode yang anda panggil pada Player
juga tersedia.
Sabagai contoh:
#hasPermission(String permission)
tersedia dari kedua contoh.
Contoh kode
Berikut ini adalah contoh untuk utilitas metode yang dapat digunakan untuk mendapatkan User
:
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.
Catatan
UserStorageService
hanya bisa kembali User
s yang sebelumnya tidak terhubung.
Catatan
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.