ServerNameResolver.java
net.minecraft.client.multiplayer.resolver.ServerNameResolver
信息
- 全限定名:net.minecraft.client.multiplayer.resolver.ServerNameResolver
- 类型:public class
- 包:net.minecraft.client.multiplayer.resolver
- 源码路径:src/main/java/net/minecraft/client/multiplayer/resolver/ServerNameResolver.java
- 起始行号:L9
- 职责:
TODO
字段/常量
-
DEFAULT- 类型:
ServerNameResolver - 修饰符:
public static final - 源码定位:
L10 - 说明:
TODO
- 类型:
-
resolver- 类型:
ServerAddressResolver - 修饰符:
private final - 源码定位:
L13 - 说明:
TODO
- 类型:
-
redirectHandler- 类型:
ServerRedirectHandler - 修饰符:
private final - 源码定位:
L14 - 说明:
TODO
- 类型:
-
addressCheck- 类型:
AddressCheck - 修饰符:
private final - 源码定位:
L15 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
ServerNameResolver(ServerAddressResolver resolver, ServerRedirectHandler redirectHandler, AddressCheck addressCheck) @ L17
- 构造器名:ServerNameResolver
- 源码定位:L17
- 修饰符:package-private
参数:
- resolver: ServerAddressResolver
- redirectHandler: ServerRedirectHandler
- addressCheck: AddressCheck
说明:
TODO
方法
下面的方法块按源码顺序生成。
public Optional<ResolvedServerAddress> resolveAddress(ServerAddress address) @ L24
- 方法名:resolveAddress
- 源码定位:L24
- 返回类型:Optional
- 修饰符:public
参数:
- address: ServerAddress
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class ServerNameResolver {
public static final ServerNameResolver DEFAULT = new ServerNameResolver(
ServerAddressResolver.SYSTEM, ServerRedirectHandler.createDnsSrvRedirectHandler(), AddressCheck.createFromService()
);
private final ServerAddressResolver resolver;
private final ServerRedirectHandler redirectHandler;
private final AddressCheck addressCheck;
@VisibleForTesting
ServerNameResolver(ServerAddressResolver resolver, ServerRedirectHandler redirectHandler, AddressCheck addressCheck) {
this.resolver = resolver;
this.redirectHandler = redirectHandler;
this.addressCheck = addressCheck;
}
public Optional<ResolvedServerAddress> resolveAddress(ServerAddress address) {
Optional<ResolvedServerAddress> resolvedAddress = this.resolver.resolve(address);
if ((!resolvedAddress.isPresent() || this.addressCheck.isAllowed(resolvedAddress.get())) && this.addressCheck.isAllowed(address)) {
Optional<ServerAddress> redirectedAddress = this.redirectHandler.lookupRedirect(address);
if (redirectedAddress.isPresent()) {
resolvedAddress = this.resolver.resolve(redirectedAddress.get()).filter(this.addressCheck::isAllowed);
}
return resolvedAddress;
} else {
return Optional.empty();
}
}
}引用的其他类
-
- 引用位置:
参数/字段/方法调用 - 关联成员:
AddressCheck.createFromService()
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
参数/字段/方法调用 - 关联成员:
ServerRedirectHandler.createDnsSrvRedirectHandler()
- 引用位置: