AnimationMetadataSection.java

net.minecraft.client.resources.metadata.animation.AnimationMetadataSection

信息

  • 全限定名:net.minecraft.client.resources.metadata.animation.AnimationMetadataSection
  • 类型:public record
  • 包:net.minecraft.client.resources.metadata.animation
  • 源码路径:src/main/java/net/minecraft/client/resources/metadata/animation/AnimationMetadataSection.java
  • 起始行号:L13
  • 职责:

    TODO

字段/常量

  • CODEC

    • 类型: Codec<AnimationMetadataSection>
    • 修饰符: public static final
    • 源码定位: L16
    • 说明:

      TODO

  • TYPE

    • 类型: MetadataSectionType<AnimationMetadataSection>
    • 修饰符: public static final
    • 源码定位: L26
    • 说明:

      TODO

内部类/嵌套类型

构造器

方法

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

public FrameSize calculateFrameSize(int spriteWidth, int spriteHeight) @ L28

  • 方法名:calculateFrameSize
  • 源码定位:L28
  • 返回类型:FrameSize
  • 修饰符:public

参数:

  • spriteWidth: int
  • spriteHeight: int

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public record AnimationMetadataSection(
    Optional<List<AnimationFrame>> frames, Optional<Integer> frameWidth, Optional<Integer> frameHeight, int defaultFrameTime, boolean interpolatedFrames
) {
    public static final Codec<AnimationMetadataSection> CODEC = RecordCodecBuilder.create(
        i -> i.group(
                AnimationFrame.CODEC.listOf().optionalFieldOf("frames").forGetter(AnimationMetadataSection::frames),
                ExtraCodecs.POSITIVE_INT.optionalFieldOf("width").forGetter(AnimationMetadataSection::frameWidth),
                ExtraCodecs.POSITIVE_INT.optionalFieldOf("height").forGetter(AnimationMetadataSection::frameHeight),
                ExtraCodecs.POSITIVE_INT.optionalFieldOf("frametime", 1).forGetter(AnimationMetadataSection::defaultFrameTime),
                Codec.BOOL.optionalFieldOf("interpolate", false).forGetter(AnimationMetadataSection::interpolatedFrames)
            )
            .apply(i, AnimationMetadataSection::new)
    );
    public static final MetadataSectionType<AnimationMetadataSection> TYPE = new MetadataSectionType<>("animation", CODEC);
 
    public FrameSize calculateFrameSize(int spriteWidth, int spriteHeight) {
        if (this.frameWidth.isPresent()) {
            return this.frameHeight.isPresent()
                ? new FrameSize(this.frameWidth.get(), this.frameHeight.get())
                : new FrameSize(this.frameWidth.get(), spriteHeight);
        } else if (this.frameHeight.isPresent()) {
            return new FrameSize(spriteWidth, this.frameHeight.get());
        } else {
            int minDimension = Math.min(spriteWidth, spriteHeight);
            return new FrameSize(minDimension, minDimension);
        }
    }
}

引用的其他类