KnownPacksManager.java

net.minecraft.client.multiplayer.KnownPacksManager

信息

  • 全限定名:net.minecraft.client.multiplayer.KnownPacksManager
  • 类型:public class
  • 包:net.minecraft.client.multiplayer
  • 源码路径:src/main/java/net/minecraft/client/multiplayer/KnownPacksManager.java
  • 起始行号:L20
  • 职责:

    TODO

字段/常量

  • repository

    • 类型: PackRepository
    • 修饰符: private final
    • 源码定位: L21
    • 说明:

      TODO

  • knownPackToId

    • 类型: Map<KnownPack,String>
    • 修饰符: private final
    • 源码定位: L22
    • 说明:

      TODO

内部类/嵌套类型

构造器

public KnownPacksManager() @ L24

  • 构造器名:KnownPacksManager
  • 源码定位:L24
  • 修饰符:public

参数:

说明:

TODO

方法

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

public List<KnownPack> trySelectingPacks(List<KnownPack> packsToSelect) @ L34

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

参数:

  • packsToSelect: List

说明:

TODO

public CloseableResourceManager createResourceManager() @ L50

  • 方法名:createResourceManager
  • 源码定位:L50
  • 返回类型:CloseableResourceManager
  • 修饰符:public

参数:

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class KnownPacksManager {
    private final PackRepository repository = ServerPacksSource.createVanillaTrustedRepository();
    private final Map<KnownPack, String> knownPackToId;
 
    public KnownPacksManager() {
        this.repository.reload();
        Builder<KnownPack, String> knownPacks = ImmutableMap.builder();
        this.repository.getAvailablePacks().forEach(pack -> {
            PackLocationInfo location = pack.location();
            location.knownPackInfo().ifPresent(knownPack -> knownPacks.put(knownPack, location.id()));
        });
        this.knownPackToId = knownPacks.build();
    }
 
    public List<KnownPack> trySelectingPacks(List<KnownPack> packsToSelect) {
        List<KnownPack> response = new ArrayList<>(packsToSelect.size());
        List<String> selectedPacks = new ArrayList<>(packsToSelect.size());
 
        for (KnownPack knownPack : packsToSelect) {
            String knownPackId = this.knownPackToId.get(knownPack);
            if (knownPackId != null) {
                selectedPacks.add(knownPackId);
                response.add(knownPack);
            }
        }
 
        this.repository.setSelected(selectedPacks);
        return response;
    }
 
    public CloseableResourceManager createResourceManager() {
        List<PackResources> openedPacks = this.repository.openAllSelected();
        return new MultiPackResourceManager(PackType.SERVER_DATA, openedPacks);
    }
}

引用的其他类