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();
        }
    }
}

引用的其他类