ProfileResolver.java
net.minecraft.server.players.ProfileResolver
信息
- 全限定名:net.minecraft.server.players.ProfileResolver
- 类型:public interface
- 包:net.minecraft.server.players
- 源码路径:src/main/java/net/minecraft/server/players/ProfileResolver.java
- 起始行号:L16
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
net.minecraft.server.players.ProfileResolver.Cached- 类型:
class - 修饰符:
public static - 源码定位:
L25 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
Optional<GameProfile> fetchByName(String name) @ L17
- 方法名:fetchByName
- 源码定位:L17
- 返回类型:Optional
- 修饰符:package-private
参数:
- name: String
说明:
TODO
Optional<GameProfile> fetchById(UUID id) @ L19
- 方法名:fetchById
- 源码定位:L19
- 返回类型:Optional
- 修饰符:package-private
参数:
- id: UUID
说明:
TODO
default Optional<GameProfile> fetchByNameOrId(Either<String,UUID> nameOrId) @ L21
- 方法名:fetchByNameOrId
- 源码定位:L21
- 返回类型:Optional
- 修饰符:default
参数:
- nameOrId: Either<String,UUID>
说明:
TODO
代码
public interface ProfileResolver {
Optional<GameProfile> fetchByName(String name);
Optional<GameProfile> fetchById(UUID id);
default Optional<GameProfile> fetchByNameOrId(Either<String, UUID> nameOrId) {
return nameOrId.map(this::fetchByName, this::fetchById);
}
public static class Cached implements ProfileResolver {
private final LoadingCache<String, Optional<GameProfile>> profileCacheByName;
private final LoadingCache<UUID, Optional<GameProfile>> profileCacheById;
public Cached(MinecraftSessionService sessionService, UserNameToIdResolver nameToIdCache) {
this.profileCacheById = CacheBuilder.newBuilder()
.expireAfterAccess(Duration.ofMinutes(10L))
.maximumSize(256L)
.build(new CacheLoader<UUID, Optional<GameProfile>>() {
{
Objects.requireNonNull(Cached.this);
}
public Optional<GameProfile> load(UUID profileId) {
ProfileResult result = sessionService.fetchProfile(profileId, true);
return Optional.ofNullable(result).map(ProfileResult::profile);
}
});
this.profileCacheByName = CacheBuilder.newBuilder()
.expireAfterAccess(Duration.ofMinutes(10L))
.maximumSize(256L)
.build(new CacheLoader<String, Optional<GameProfile>>() {
{
Objects.requireNonNull(Cached.this);
}
public Optional<GameProfile> load(String name) {
return nameToIdCache.get(name).flatMap(nameAndId -> Cached.this.profileCacheById.getUnchecked(nameAndId.id()));
}
});
}
@Override
public Optional<GameProfile> fetchByName(String name) {
return StringUtil.isValidPlayerName(name) ? this.profileCacheByName.getUnchecked(name) : Optional.empty();
}
@Override
public Optional<GameProfile> fetchById(UUID id) {
return this.profileCacheById.getUnchecked(id);
}
}
}引用的其他类
- StringUtil
- 引用位置:
方法调用 - 关联成员:
StringUtil.isValidPlayerName()
- 引用位置: