RealmsServerPlayerLists.java

com.mojang.realmsclient.dto.RealmsServerPlayerLists

信息

  • 全限定名:com.mojang.realmsclient.dto.RealmsServerPlayerLists
  • 类型:public record
  • 包:com.mojang.realmsclient.dto
  • 源码路径:src/main/java/com/mojang/realmsclient/dto/RealmsServerPlayerLists.java
  • 起始行号:L24
  • 职责:

    TODO

字段/常量

  • LOGGER
    • 类型: Logger
    • 修饰符: private static final
    • 源码定位: L25
    • 说明:

      TODO

内部类/嵌套类型

构造器

方法

下面的方法块按源码顺序生成。

public static RealmsServerPlayerLists parse(String json) @ L27

  • 方法名:parse
  • 源码定位:L27
  • 返回类型:RealmsServerPlayerLists
  • 修饰符:public static

参数:

  • json: String

说明:

TODO

private static List<ResolvableProfile> parsePlayers(JsonArray array) @ L58

  • 方法名:parsePlayers
  • 源码定位:L58
  • 返回类型:List
  • 修饰符:private static

参数:

  • array: JsonArray

说明:

TODO

public List<ResolvableProfile> getProfileResultsFor(long serverId) @ L73

  • 方法名:getProfileResultsFor
  • 源码定位:L73
  • 返回类型:List
  • 修饰符:public

参数:

  • serverId: long

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public record RealmsServerPlayerLists(Map<Long, List<ResolvableProfile>> servers) {
    private static final Logger LOGGER = LogUtils.getLogger();
 
    public static RealmsServerPlayerLists parse(String json) {
        Builder<Long, List<ResolvableProfile>> elements = ImmutableMap.builder();
 
        try {
            JsonObject object = GsonHelper.parse(json);
            if (GsonHelper.isArrayNode(object, "lists")) {
                for (JsonElement jsonElement : object.getAsJsonArray("lists")) {
                    JsonObject node = jsonElement.getAsJsonObject();
                    String playerListString = JsonUtils.getStringOr("playerList", node, null);
                    List<ResolvableProfile> players;
                    if (playerListString != null) {
                        JsonElement element = LenientJsonParser.parse(playerListString);
                        if (element.isJsonArray()) {
                            players = parsePlayers(element.getAsJsonArray());
                        } else {
                            players = Lists.newArrayList();
                        }
                    } else {
                        players = Lists.newArrayList();
                    }
 
                    elements.put(JsonUtils.getLongOr("serverId", node, -1L), players);
                }
            }
        } catch (Exception var10) {
            LOGGER.error("Could not parse RealmsServerPlayerLists", (Throwable)var10);
        }
 
        return new RealmsServerPlayerLists(elements.build());
    }
 
    private static List<ResolvableProfile> parsePlayers(JsonArray array) {
        List<ResolvableProfile> profiles = new ArrayList<>(array.size());
 
        for (JsonElement element : array) {
            if (element.isJsonObject()) {
                UUID playerId = JsonUtils.getUuidOr("playerId", element.getAsJsonObject(), null);
                if (playerId != null && !Minecraft.getInstance().isLocalPlayer(playerId)) {
                    profiles.add(ResolvableProfile.createUnresolved(playerId));
                }
            }
        }
 
        return profiles;
    }
 
    public List<ResolvableProfile> getProfileResultsFor(long serverId) {
        List<ResolvableProfile> profileResults = this.servers.get(serverId);
        return profileResults != null ? profileResults : List.of();
    }
}

引用的其他类

  • JsonUtils

    • 引用位置: 方法调用
    • 关联成员: JsonUtils.getLongOr(), JsonUtils.getStringOr(), JsonUtils.getUuidOr()
  • Minecraft

    • 引用位置: 方法调用
    • 关联成员: Minecraft.getInstance()
  • GsonHelper

    • 引用位置: 方法调用
    • 关联成员: GsonHelper.isArrayNode(), GsonHelper.parse()
  • LenientJsonParser

    • 引用位置: 方法调用
    • 关联成员: LenientJsonParser.parse()
  • ResolvableProfile

    • 引用位置: 方法调用/返回值
    • 关联成员: ResolvableProfile.createUnresolved()