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 Players 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 Users 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.