Données du Joueur Hors-Ligne
Avertissement
These docs were written for SpongeAPI 7 and are likely out of date. If you feel like you can help update them, please submit a PR!
Il peut être nécessaire pour les plugins d’accéder aux données du joueur même si le joueur est déconnecté. Vous pourriez penser que Sponge.getServer().getPlayer()
qui retourne un Player peut être utilisé pour ça. Mais puisque les objets Player
n’existent que pour les joueurs en ligne, une autre solution doit être utilisée.
Certains plugins stockent les données elles-mêmes et les associent aux utilisateurs en utilisant le GameProfileManager. Mais écrire différents codes pour les joueurs connectés et déconnectés n’est pas nécessaire. Le ServiceManager fournit nativement un service connu en tant que UserStorageService qui est capable de retourner des instances de User pour des Player
s qui sont actuellement déconnectés. Puisque l’interface Player
hérite d”User
la plupart des méthodes que vous appelez sur un Player
sont disponibles.
Par exemple :
#hasPermission(String permission)
est disponible depuis les deux instances.
Exemple de Code
Voici un exemple d’une méthode utilitaire qui peut être utilisée pour récupérer un 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);
}
Ce code va récupérer le UserStorageService
à partir du ServiceManager
puis récupérer le User
à partir d’ici.
Note
Le UserStorageService
peut seulement retourner des User
s qui se sont déjà connectés.
Note
Cette solution ne va pas retourner d’instance de Player
. Cela rend sécurisé de stocker les objets User
retournés, mais vous pouvez utiliser la méthode User.getPlayer()
pour récupérer l’entité en ligne.