ClientPackSource.java

net.minecraft.client.resources.ClientPackSource

信息

  • 全限定名:net.minecraft.client.resources.ClientPackSource
  • 类型:public class
  • 包:net.minecraft.client.resources
  • 源码路径:src/main/java/net/minecraft/client/resources/ClientPackSource.java
  • 起始行号:L31
  • 继承:BuiltInPackSource
  • 职责:

    TODO

字段/常量

  • VERSION_METADATA_SECTION

    • 类型: PackMetadataSection
    • 修饰符: private static final
    • 源码定位: L32
    • 说明:

      TODO

  • BUILT_IN_METADATA

    • 类型: ResourceMetadata
    • 修饰符: private static final
    • 源码定位: L35
    • 说明:

      TODO

  • HIGH_CONTRAST_PACK

    • 类型: String
    • 修饰符: public static final
    • 源码定位: L36
    • 说明:

      TODO

  • SPECIAL_PACK_NAMES

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

      TODO

  • VANILLA_PACK_INFO

    • 类型: PackLocationInfo
    • 修饰符: private static final
    • 源码定位: L43
    • 说明:

      TODO

  • VANILLA_SELECTION_CONFIG

    • 类型: PackSelectionConfig
    • 修饰符: private static final
    • 源码定位: L46
    • 说明:

      TODO

  • BUILT_IN_SELECTION_CONFIG

    • 类型: PackSelectionConfig
    • 修饰符: private static final
    • 源码定位: L47
    • 说明:

      TODO

  • PACKS_DIR

    • 类型: Identifier
    • 修饰符: private static final
    • 源码定位: L48
    • 说明:

      TODO

  • externalAssetDir

    • 类型: Path
    • 修饰符: private final
    • 源码定位: L49
    • 说明:

      TODO

内部类/嵌套类型

构造器

public ClientPackSource(Path externalAssetSource, DirectoryValidator validator) @ L51

  • 构造器名:ClientPackSource
  • 源码定位:L51
  • 修饰符:public

参数:

  • externalAssetSource: Path
  • validator: DirectoryValidator

说明:

TODO

方法

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

private static PackLocationInfo createBuiltInPackLocation(String id, Component title) @ L56

  • 方法名:createBuiltInPackLocation
  • 源码定位:L56
  • 返回类型:PackLocationInfo
  • 修饰符:private static

参数:

  • id: String
  • title: Component

说明:

TODO

private Path findExplodedAssetPacks(Path externalAssetSource) @ L60

  • 方法名:findExplodedAssetPacks
  • 源码定位:L60
  • 返回类型:Path
  • 修饰符:private

参数:

  • externalAssetSource: Path

说明:

TODO

private static VanillaPackResources createVanillaPackSource(Path externalAssetRoot) @ L71

  • 方法名:createVanillaPackSource
  • 源码定位:L71
  • 返回类型:VanillaPackResources
  • 修饰符:private static

参数:

  • externalAssetRoot: Path

说明:

TODO

protected Component getPackTitle(String id) @ L81

  • 方法名:getPackTitle
  • 源码定位:L81
  • 返回类型:Component
  • 修饰符:protected

参数:

  • id: String

说明:

TODO

protected Pack createVanillaPack(PackResources resources) @ L87

  • 方法名:createVanillaPack
  • 源码定位:L87
  • 返回类型:Pack
  • 修饰符:protected

参数:

  • resources: PackResources

说明:

TODO

protected Pack createBuiltinPack(String id, Pack.ResourcesSupplier resources, Component name) @ L92

  • 方法名:createBuiltinPack
  • 源码定位:L92
  • 返回类型:Pack
  • 修饰符:protected

参数:

  • id: String
  • resources: Pack.ResourcesSupplier
  • name: Component

说明:

TODO

protected void populatePackList(BiConsumer<String,Function<String,Pack>> discoveredPacks) @ L97

  • 方法名:populatePackList
  • 源码定位:L97
  • 返回类型:void
  • 修饰符:protected

参数:

  • discoveredPacks: BiConsumer<String,Function<String,Pack>>

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class ClientPackSource extends BuiltInPackSource {
    private static final PackMetadataSection VERSION_METADATA_SECTION = new PackMetadataSection(
        Component.translatable("resourcePack.vanilla.description"), SharedConstants.getCurrentVersion().packVersion(PackType.CLIENT_RESOURCES).minorRange()
    );
    private static final ResourceMetadata BUILT_IN_METADATA = ResourceMetadata.of(PackMetadataSection.CLIENT_TYPE, VERSION_METADATA_SECTION);
    public static final String HIGH_CONTRAST_PACK = "high_contrast";
    private static final Map<String, Component> SPECIAL_PACK_NAMES = Map.of(
        "programmer_art",
        Component.translatable("resourcePack.programmer_art.name"),
        "high_contrast",
        Component.translatable("resourcePack.high_contrast.name")
    );
    private static final PackLocationInfo VANILLA_PACK_INFO = new PackLocationInfo(
        "vanilla", Component.translatable("resourcePack.vanilla.name"), PackSource.BUILT_IN, Optional.of(CORE_PACK_INFO)
    );
    private static final PackSelectionConfig VANILLA_SELECTION_CONFIG = new PackSelectionConfig(true, Pack.Position.BOTTOM, false);
    private static final PackSelectionConfig BUILT_IN_SELECTION_CONFIG = new PackSelectionConfig(false, Pack.Position.TOP, false);
    private static final Identifier PACKS_DIR = Identifier.withDefaultNamespace("resourcepacks");
    private final @Nullable Path externalAssetDir;
 
    public ClientPackSource(Path externalAssetSource, DirectoryValidator validator) {
        super(PackType.CLIENT_RESOURCES, createVanillaPackSource(externalAssetSource), PACKS_DIR, validator);
        this.externalAssetDir = this.findExplodedAssetPacks(externalAssetSource);
    }
 
    private static PackLocationInfo createBuiltInPackLocation(String id, Component title) {
        return new PackLocationInfo(id, title, PackSource.BUILT_IN, Optional.of(KnownPack.vanilla(id)));
    }
 
    private @Nullable Path findExplodedAssetPacks(Path externalAssetSource) {
        if (SharedConstants.IS_RUNNING_IN_IDE && externalAssetSource.getFileSystem() == FileSystems.getDefault()) {
            Path devAssetDir = externalAssetSource.getParent().resolve("resourcepacks");
            if (Files.isDirectory(devAssetDir)) {
                return devAssetDir;
            }
        }
 
        return null;
    }
 
    private static VanillaPackResources createVanillaPackSource(Path externalAssetRoot) {
        return new VanillaPackResourcesBuilder()
            .setMetadata(BUILT_IN_METADATA)
            .exposeNamespace("minecraft", "realms")
            .applyDevelopmentConfig()
            .pushJarResources()
            .pushAssetPath(PackType.CLIENT_RESOURCES, externalAssetRoot)
            .build(VANILLA_PACK_INFO);
    }
 
    @Override
    protected Component getPackTitle(String id) {
        Component title = SPECIAL_PACK_NAMES.get(id);
        return (Component)(title != null ? title : Component.literal(id));
    }
 
    @Override
    protected @Nullable Pack createVanillaPack(PackResources resources) {
        return Pack.readMetaAndCreate(VANILLA_PACK_INFO, fixedResources(resources), PackType.CLIENT_RESOURCES, VANILLA_SELECTION_CONFIG);
    }
 
    @Override
    protected @Nullable Pack createBuiltinPack(String id, Pack.ResourcesSupplier resources, Component name) {
        return Pack.readMetaAndCreate(createBuiltInPackLocation(id, name), resources, PackType.CLIENT_RESOURCES, BUILT_IN_SELECTION_CONFIG);
    }
 
    @Override
    protected void populatePackList(BiConsumer<String, Function<String, Pack>> discoveredPacks) {
        super.populatePackList(discoveredPacks);
        if (this.externalAssetDir != null) {
            this.discoverPacksInPath(this.externalAssetDir, discoveredPacks);
        }
    }
}

引用的其他类

  • SharedConstants

    • 引用位置: 方法调用
    • 关联成员: SharedConstants.getCurrentVersion()
  • Component

    • 引用位置: 参数/字段/方法调用/返回值
    • 关联成员: Component.literal(), Component.translatable()
  • Identifier

    • 引用位置: 字段/方法调用
    • 关联成员: Identifier.withDefaultNamespace()
  • PackLocationInfo

    • 引用位置: 字段/构造调用/返回值
    • 关联成员: PackLocationInfo()
  • PackResources

    • 引用位置: 参数
  • PackSelectionConfig

    • 引用位置: 字段/构造调用
    • 关联成员: PackSelectionConfig()
  • VanillaPackResources

    • 引用位置: 返回值
  • VanillaPackResourcesBuilder

    • 引用位置: 构造调用
    • 关联成员: VanillaPackResourcesBuilder()
  • PackMetadataSection

    • 引用位置: 字段/构造调用
    • 关联成员: PackMetadataSection()
  • BuiltInPackSource

    • 引用位置: 继承
  • KnownPack

    • 引用位置: 方法调用
    • 关联成员: KnownPack.vanilla()
  • Pack

    • 引用位置: 参数/方法调用/返回值
    • 关联成员: Pack.readMetaAndCreate()
  • ResourceMetadata

    • 引用位置: 字段/方法调用
    • 关联成员: ResourceMetadata.of()
  • DirectoryValidator

    • 引用位置: 参数