@Override protected Object getValue(String choice) throws IllegalArgumentException { return Sponge.getGame().getServiceManager().provideUnchecked(UserStorageService.class).get(choice) .orElseThrow(() -> new IllegalArgumentException("Input value '" + choice + "' was not a user!")); }
Mockito.when(u2.getPlayer()).thenAnswer(g -> Optional.empty()); Mockito.when(mockUss.get(Mockito.any(GameProfile.class))).thenAnswer(invocation -> { GameProfile arg = invocation.getArgumentAt(0, GameProfile.class); if ("test".equalsIgnoreCase(arg.getName().orElse(null))) { Mockito.when(mockUss.get(Mockito.anyString())).thenAnswer( (Answer<Optional<User>>) invocation -> { String arg = (String) invocation.getArguments()[0];
@Override public void parse(CommandSource source, CommandArgs args, CommandContext context) throws ArgumentParseException { // If we're not completing, then we want to use the UserStorageService directly // to get any direct match. @Nullable Text key = getKey(); if (key != null && !context.hasAny(CommandContext.TAB_COMPLETION)) { if (this.returnSource && !args.hasNext()) { context.putArg(key, tryReturnSource(source, args)); return; } CommandArgs.Snapshot state = args.getSnapshot(); String element = args.next(); try { Optional<User> match = Sponge.getServiceManager().provideUnchecked(UserStorageService.class).get(element); if (match.isPresent()) { context.putArg(key, match.get()); return; } } catch (IllegalArgumentException ignored) { // Intentionally ignored // If it's not an exact match, we just let this carry on to parse using the pattern element } args.applySnapshot(state); } super.parse(source, args, context); }
@Override public UUID getUUID(String name) { Optional<Player> player = Sponge.getServer().getPlayer(name); if (player.isPresent()) { return player.get().getUniqueId(); } Optional<User> user = userStorageService.get(name); return user.map(Identifiable::getUniqueId).orElse(null); }
@Override public OfflinePlotPlayer getOfflinePlayer(UUID uuid) { Optional<Player> player = Sponge.getServer().getPlayer(uuid); if (player.isPresent()) { return new SpongeOfflinePlayer(player.get()); } Optional<User> user = userStorageService.get(uuid); return user.map(SpongeOfflinePlayer::new).orElse(null); }
@JsonIgnore public Optional<User> getUser() { Optional<UserStorageService> optSrv = Sponge.getServiceManager().provide(UserStorageService.class); return optSrv.flatMap(srv -> srv.get(uuid)); }
@Override public OfflinePlotPlayer getOfflinePlayer(String name) { Optional<Player> player = Sponge.getServer().getPlayer(name); if (player.isPresent()) { return new SpongeOfflinePlayer(player.get()); } Optional<User> user = userStorageService.get(name); return user.map(SpongeOfflinePlayer::new).orElse(null); }
/** * Gets the {@link User} who owns this home. * * @return The {@link User} */ default User getUser() { return Sponge.getServiceManager().provideUnchecked(UserStorageService.class).get(getOwnersUniqueId()).orElseThrow(() -> new IllegalStateException("user")); } }
default void createHome(Cause cause, UUID user, String name, Location<World> location, Vector3d rotation) throws NucleusException, NoSuchPlayerException { createHome(cause, Sponge.getServiceManager().provideUnchecked(UserStorageService.class).get(user).orElseThrow(NoSuchPlayerException::new), name, location, rotation); }
@Override protected Object getValue(String choice) throws IllegalArgumentException { return Sponge.getGame().getServiceManager().provideUnchecked(UserStorageService.class).get(choice).get(); } }
/** * Modifies a home's location, if it exists, otherwise creates a home. This is subject to Nucleus' standard checks. * * @param cause The {@link Cause} of the change. The {@link PluginContainer} must be the root cause. * @param user The {@link UUID} of the user to modify the home for. * @param name The name of the home to modify or create. * @param location The location of the home. * @param rotation The rotation of the player when they return to this home. * @throws NucleusException if the home could not be created, due to home limits, or a plugin cancelled the event. * @throws NoSuchPlayerException if the supplied UUID does not map to a known user */ default void modifyOrCreateHome(Cause cause, UUID user, String name, Location<World> location, Vector3d rotation) throws NucleusException, NoSuchPlayerException { modifyOrCreateHome(cause, Sponge.getServiceManager().provideUnchecked(UserStorageService.class).get(user).orElseThrow(NoSuchPlayerException::new), name, location, rotation); }
/** * Gets a specific player by name or UUID. * * @param nameOrUuid Either the name or UUID of the player. Use {@link #getPlayer(UUID)}} if the UUID is * already parsed. * @return An optional containing the player, or empty if not found. */ public Optional<CachedPlayer> getPlayer(String nameOrUuid) { if (Util.isValidUUID(nameOrUuid)) { return getPlayer(UUID.fromString(nameOrUuid)); } Optional<CachedPlayer> player = players.values().stream().filter(p -> p.getName().equalsIgnoreCase(nameOrUuid)).findAny(); if (player.isPresent()) return player.flatMap(p -> getPlayer(p.getUUID())); return WebAPI.runOnMain(() -> { Optional<UserStorageService> optSrv = Sponge.getServiceManager().provide(UserStorageService.class); if (!optSrv.isPresent()) throw new InternalServerErrorException("User storage service is not available"); Optional<User> optUser = optSrv.get().get(nameOrUuid); return optUser.<CachedPlayer>map(CachedPlayer::new); }); }
/** * Gets a specific player by UUID. * @param uuid The UUID of the player. * @return An optional containing the cached player if found, or empty otherwise. */ public Optional<CachedPlayer> getPlayer(UUID uuid) { if (!players.containsKey(uuid)) { return WebAPI.runOnMain(() -> { Optional<UserStorageService> optSrv = Sponge.getServiceManager().provide(UserStorageService.class); if (!optSrv.isPresent()) throw new InternalServerErrorException("User storage service is not available"); Optional<User> optUser = optSrv.get().get(uuid); return optUser.<CachedPlayer>map(CachedPlayer::new); }); } final CachedPlayer res = players.get(uuid); if (res.isExpired()) { return WebAPI.runOnMain(() -> { Optional<Player> player = Sponge.getServer().getPlayer(uuid); return player.map(this::updatePlayer); }); } else { return Optional.of(res); } }