Variant.java

net.minecraft.client.renderer.block.dispatch.Variant

信息

  • 全限定名:net.minecraft.client.renderer.block.dispatch.Variant
  • 类型:public record
  • 包:net.minecraft.client.renderer.block.dispatch
  • 源码路径:src/main/java/net/minecraft/client/renderer/block/dispatch/Variant.java
  • 起始行号:L15
  • 实现:BlockStateModelPart.Unbaked
  • 职责:

    TODO

字段/常量

  • MAP_CODEC

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

      TODO

  • CODEC

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

      TODO

内部类/嵌套类型

  • net.minecraft.client.renderer.block.dispatch.Variant.SimpleModelState
    • 类型: record
    • 修饰符: public
    • 源码定位: L65
    • 说明:

      TODO

构造器

public Variant(Identifier modelLocation) @ L22

  • 构造器名:Variant
  • 源码定位:L22
  • 修饰符:public

参数:

  • modelLocation: Identifier

说明:

TODO

方法

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

public Variant withXRot(Quadrant x) @ L26

  • 方法名:withXRot
  • 源码定位:L26
  • 返回类型:Variant
  • 修饰符:public

参数:

  • x: Quadrant

说明:

TODO

public Variant withYRot(Quadrant y) @ L30

  • 方法名:withYRot
  • 源码定位:L30
  • 返回类型:Variant
  • 修饰符:public

参数:

  • y: Quadrant

说明:

TODO

public Variant withZRot(Quadrant z) @ L34

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

参数:

  • z: Quadrant

说明:

TODO

public Variant withUvLock(boolean uvLock) @ L38

  • 方法名:withUvLock
  • 源码定位:L38
  • 返回类型:Variant
  • 修饰符:public

参数:

  • uvLock: boolean

说明:

TODO

public Variant withModel(Identifier modelLocation) @ L42

  • 方法名:withModel
  • 源码定位:L42
  • 返回类型:Variant
  • 修饰符:public

参数:

  • modelLocation: Identifier

说明:

TODO

public Variant withState(Variant.SimpleModelState modelState) @ L46

  • 方法名:withState
  • 源码定位:L46
  • 返回类型:Variant
  • 修饰符:public

参数:

  • modelState: Variant.SimpleModelState

说明:

TODO

public Variant with(VariantMutator mutator) @ L50

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

参数:

  • mutator: VariantMutator

说明:

TODO

public BlockStateModelPart bake(ModelBaker modelBakery) @ L54

  • 方法名:bake
  • 源码定位:L54
  • 返回类型:BlockStateModelPart
  • 修饰符:public

参数:

  • modelBakery: ModelBaker

说明:

TODO

public void resolveDependencies(ResolvableModel.Resolver resolver) @ L59

  • 方法名:resolveDependencies
  • 源码定位:L59
  • 返回类型:void
  • 修饰符:public

参数:

  • resolver: ResolvableModel.Resolver

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public record Variant(Identifier modelLocation, Variant.SimpleModelState modelState) implements BlockStateModelPart.Unbaked {
    public static final MapCodec<Variant> MAP_CODEC = RecordCodecBuilder.mapCodec(
        i -> i.group(Identifier.CODEC.fieldOf("model").forGetter(Variant::modelLocation), Variant.SimpleModelState.MAP_CODEC.forGetter(Variant::modelState))
            .apply(i, Variant::new)
    );
    public static final Codec<Variant> CODEC = MAP_CODEC.codec();
 
    public Variant(Identifier modelLocation) {
        this(modelLocation, Variant.SimpleModelState.DEFAULT);
    }
 
    public Variant withXRot(Quadrant x) {
        return this.withState(this.modelState.withX(x));
    }
 
    public Variant withYRot(Quadrant y) {
        return this.withState(this.modelState.withY(y));
    }
 
    public Variant withZRot(Quadrant z) {
        return this.withState(this.modelState.withZ(z));
    }
 
    public Variant withUvLock(boolean uvLock) {
        return this.withState(this.modelState.withUvLock(uvLock));
    }
 
    public Variant withModel(Identifier modelLocation) {
        return new Variant(modelLocation, this.modelState);
    }
 
    public Variant withState(Variant.SimpleModelState modelState) {
        return new Variant(this.modelLocation, modelState);
    }
 
    public Variant with(VariantMutator mutator) {
        return mutator.apply(this);
    }
 
    @Override
    public BlockStateModelPart bake(ModelBaker modelBakery) {
        return SimpleModelWrapper.bake(modelBakery, this.modelLocation, this.modelState.asModelState());
    }
 
    @Override
    public void resolveDependencies(ResolvableModel.Resolver resolver) {
        resolver.markDependency(this.modelLocation);
    }
 
    @OnlyIn(Dist.CLIENT)
    public record SimpleModelState(Quadrant x, Quadrant y, Quadrant z, boolean uvLock) {
        public static final MapCodec<Variant.SimpleModelState> MAP_CODEC = RecordCodecBuilder.mapCodec(
            i -> i.group(
                    Quadrant.CODEC.optionalFieldOf("x", Quadrant.R0).forGetter(Variant.SimpleModelState::x),
                    Quadrant.CODEC.optionalFieldOf("y", Quadrant.R0).forGetter(Variant.SimpleModelState::y),
                    Quadrant.CODEC.optionalFieldOf("z", Quadrant.R0).forGetter(Variant.SimpleModelState::z),
                    Codec.BOOL.optionalFieldOf("uvlock", false).forGetter(Variant.SimpleModelState::uvLock)
                )
                .apply(i, Variant.SimpleModelState::new)
        );
        public static final Variant.SimpleModelState DEFAULT = new Variant.SimpleModelState(Quadrant.R0, Quadrant.R0, Quadrant.R0, false);
 
        public ModelState asModelState() {
            BlockModelRotation rotation = BlockModelRotation.get(Quadrant.fromXYZAngles(this.x, this.y, this.z));
            return (ModelState)(this.uvLock ? rotation.withUvLock() : rotation);
        }
 
        public Variant.SimpleModelState withX(Quadrant x) {
            return new Variant.SimpleModelState(x, this.y, this.z, this.uvLock);
        }
 
        public Variant.SimpleModelState withY(Quadrant y) {
            return new Variant.SimpleModelState(this.x, y, this.z, this.uvLock);
        }
 
        public Variant.SimpleModelState withZ(Quadrant z) {
            return new Variant.SimpleModelState(this.x, this.y, z, this.uvLock);
        }
 
        public Variant.SimpleModelState withUvLock(boolean uvLock) {
            return new Variant.SimpleModelState(this.x, this.y, this.z, uvLock);
        }
    }
}

引用的其他类