ResourceMetadata.java

net.minecraft.server.packs.resources.ResourceMetadata

信息

  • 全限定名:net.minecraft.server.packs.resources.ResourceMetadata
  • 类型:public interface
  • 包:net.minecraft.server.packs.resources
  • 源码路径:src/main/java/net/minecraft/server/packs/resources/ResourceMetadata.java
  • 起始行号:L20
  • 职责:

    TODO

字段/常量

  • EMPTY

    • 类型: ResourceMetadata
    • 修饰符: public
    • 源码定位: L21
    • 说明:

      TODO

  • EMPTY_SUPPLIER

    • 类型: IoSupplier<ResourceMetadata>
    • 修饰符: package-private
    • 源码定位: L27
    • 说明:

      TODO

内部类/嵌套类型

  • net.minecraft.server.packs.resources.ResourceMetadata.MapBased
    • 类型: class
    • 修饰符: public static
    • 源码定位: L69
    • 说明:

      TODO

构造器

方法

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

static ResourceMetadata fromJsonStream(InputStream inputStream) @ L29

  • 方法名:fromJsonStream
  • 源码定位:L29
  • 返回类型:ResourceMetadata
  • 修饰符:static

参数:

  • inputStream: InputStream

说明:

TODO

<T> Optional<T> getSection(MetadataSectionType<T> serializer) @ L51

  • 方法名:getSection
  • 源码定位:L51
  • 返回类型: Optional
  • 修饰符:package-private

参数:

  • serializer: MetadataSectionType

说明:

TODO

default <T> Optional<MetadataSectionType.WithValue<T>> getTypedSection(MetadataSectionType<T> type) @ L53

  • 方法名:getTypedSection
  • 源码定位:L53
  • 返回类型: Optional<MetadataSectionType.WithValue>
  • 修饰符:default

参数:

  • type: MetadataSectionType

说明:

TODO

static <T> ResourceMetadata of(MetadataSectionType<T> k, T v) @ L57

  • 方法名:of
  • 源码定位:L57
  • 返回类型: ResourceMetadata
  • 修饰符:static

参数:

  • k: MetadataSectionType
  • v: T

说明:

TODO

static <T1,T2> ResourceMetadata of(MetadataSectionType<T1> k1, T1 v1, MetadataSectionType<T2> k2, T2 v2) @ L61

  • 方法名:of
  • 源码定位:L61
  • 返回类型:<T1,T2> ResourceMetadata
  • 修饰符:static

参数:

  • k1: MetadataSectionType
  • v1: T1
  • k2: MetadataSectionType
  • v2: T2

说明:

TODO

default List<MetadataSectionType.WithValue<?>> getTypedSections(Collection<MetadataSectionType<?>> types) @ L65

  • 方法名:getTypedSections
  • 源码定位:L65
  • 返回类型:List<MetadataSectionType.WithValue<?>>
  • 修饰符:default

参数:

  • types: Collection<MetadataSectionType<?>>

说明:

TODO

代码

public interface ResourceMetadata {
    ResourceMetadata EMPTY = new ResourceMetadata() {
        @Override
        public <T> Optional<T> getSection(MetadataSectionType<T> serializer) {
            return Optional.empty();
        }
    };
    IoSupplier<ResourceMetadata> EMPTY_SUPPLIER = () -> EMPTY;
 
    static ResourceMetadata fromJsonStream(InputStream inputStream) throws IOException {
        ResourceMetadata var3;
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8))) {
            final JsonObject metadata = GsonHelper.parse(reader);
            var3 = new ResourceMetadata() {
                @Override
                public <T> Optional<T> getSection(MetadataSectionType<T> serializer) {
                    String name = serializer.name();
                    JsonElement rawSection = metadata.get(name);
                    if (rawSection != null) {
                        T section = serializer.codec().parse(JsonOps.INSTANCE, rawSection).getOrThrow(JsonParseException::new);
                        return Optional.of(section);
                    } else {
                        return Optional.empty();
                    }
                }
            };
        }
 
        return var3;
    }
 
    <T> Optional<T> getSection(MetadataSectionType<T> serializer);
 
    default <T> Optional<MetadataSectionType.WithValue<T>> getTypedSection(MetadataSectionType<T> type) {
        return this.getSection(type).map(type::withValue);
    }
 
    static <T> ResourceMetadata of(MetadataSectionType<T> k, T v) {
        return new ResourceMetadata.MapBased(Map.of(k, v));
    }
 
    static <T1, T2> ResourceMetadata of(MetadataSectionType<T1> k1, T1 v1, MetadataSectionType<T2> k2, T2 v2) {
        return new ResourceMetadata.MapBased(Map.of(k1, v1, k2, (T1)v2));
    }
 
    default List<MetadataSectionType.WithValue<?>> getTypedSections(Collection<MetadataSectionType<?>> types) {
        return types.stream().map(this::getTypedSection).flatMap(Optional::stream).collect(Collectors.toUnmodifiableList());
    }
 
    public static class MapBased implements ResourceMetadata {
        private final Map<MetadataSectionType<?>, ?> values;
 
        private MapBased(Map<MetadataSectionType<?>, ?> values) {
            this.values = values;
        }
 
        @Override
        public <T> Optional<T> getSection(MetadataSectionType<T> serializer) {
            return Optional.ofNullable((T)this.values.get(serializer));
        }
    }
}

引用的其他类