ArmorModelSet.java

net.minecraft.client.renderer.entity.ArmorModelSet

信息

  • 全限定名:net.minecraft.client.renderer.entity.ArmorModelSet
  • 类型:public record
  • 包:net.minecraft.client.renderer.entity
  • 源码路径:src/main/java/net/minecraft/client/renderer/entity/ArmorModelSet.java
  • 起始行号:L15
  • 职责:

    TODO

字段/常量

内部类/嵌套类型

构造器

方法

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

public T get(EquipmentSlot slot) @ L16

  • 方法名:get
  • 源码定位:L16
  • 返回类型:T
  • 修饰符:public

参数:

  • slot: EquipmentSlot

说明:

TODO

public <U> ArmorModelSet<U> map(Function<?super T,?extends U> mapper) @ L26

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

参数:

  • mapper: Function<?super T,?extends U>

说明:

TODO

public void putFrom(ArmorModelSet<LayerDefinition> values, Builder<T,LayerDefinition> output) @ L30

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

参数:

  • values: ArmorModelSet
  • output: Builder<T,LayerDefinition>

说明:

TODO

public static <M extends HumanoidModel<?>> ArmorModelSet<M> bake(ArmorModelSet<ModelLayerLocation> locations, EntityModelSet modelSet, Function<ModelPart,M> factory) @ L37

  • 方法名:bake
  • 源码定位:L37
  • 返回类型:<M extends HumanoidModel<?>> ArmorModelSet
  • 修饰符:public static

参数:

  • locations: ArmorModelSet
  • modelSet: EntityModelSet
  • factory: Function<ModelPart,M>

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public record ArmorModelSet<T>(T head, T chest, T legs, T feet) {
    public T get(EquipmentSlot slot) {
        return (T)(switch (slot) {
            case HEAD -> this.head;
            case CHEST -> this.chest;
            case LEGS -> this.legs;
            case FEET -> this.feet;
            default -> throw new IllegalStateException("No model for slot: " + slot);
        });
    }
 
    public <U> ArmorModelSet<U> map(Function<? super T, ? extends U> mapper) {
        return (ArmorModelSet<U>)(new ArmorModelSet<>(mapper.apply(this.head), mapper.apply(this.chest), mapper.apply(this.legs), mapper.apply(this.feet)));
    }
 
    public void putFrom(ArmorModelSet<LayerDefinition> values, Builder<T, LayerDefinition> output) {
        output.put(this.head, values.head);
        output.put(this.chest, values.chest);
        output.put(this.legs, values.legs);
        output.put(this.feet, values.feet);
    }
 
    public static <M extends HumanoidModel<?>> ArmorModelSet<M> bake(
        ArmorModelSet<ModelLayerLocation> locations, EntityModelSet modelSet, Function<ModelPart, M> factory
    ) {
        return locations.map(id -> factory.apply(modelSet.bakeLayer(id)));
    }
}

引用的其他类