WolfArmorLayer.java

net.minecraft.client.renderer.entity.layers.WolfArmorLayer

信息

  • 全限定名:net.minecraft.client.renderer.entity.layers.WolfArmorLayer
  • 类型:public class
  • 包:net.minecraft.client.renderer.entity.layers
  • 源码路径:src/main/java/net/minecraft/client/renderer/entity/layers/WolfArmorLayer.java
  • 起始行号:L25
  • 继承:RenderLayer<WolfRenderState,WolfModel>
  • 职责:

    TODO

字段/常量

  • adultModel

    • 类型: WolfModel
    • 修饰符: private final
    • 源码定位: L26
    • 说明:

      TODO

  • equipmentRenderer

    • 类型: EquipmentLayerRenderer
    • 修饰符: private final
    • 源码定位: L27
    • 说明:

      TODO

  • ARMOR_CRACK_LOCATIONS

    • 类型: Map<Crackiness.Level,Identifier>
    • 修饰符: private static final
    • 源码定位: L28
    • 说明:

      TODO

内部类/嵌套类型

构造器

public WolfArmorLayer(RenderLayerParent<WolfRenderState,WolfModel> renderer, EntityModelSet modelSet, EquipmentLayerRenderer equipmentRenderer) @ L37

  • 构造器名:WolfArmorLayer
  • 源码定位:L37
  • 修饰符:public

参数:

  • renderer: RenderLayerParent<WolfRenderState,WolfModel>
  • modelSet: EntityModelSet
  • equipmentRenderer: EquipmentLayerRenderer

说明:

TODO

方法

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

public void submit(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, WolfRenderState state, float yRot, float xRot) @ L43

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

参数:

  • poseStack: PoseStack
  • submitNodeCollector: SubmitNodeCollector
  • lightCoords: int
  • state: WolfRenderState
  • yRot: float
  • xRot: float

说明:

TODO

private void maybeRenderCracks(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, ItemStack armorItem, Model<WolfRenderState> model, WolfRenderState state) @ L63

  • 方法名:maybeRenderCracks
  • 源码定位:L63
  • 返回类型:void
  • 修饰符:private

参数:

  • poseStack: PoseStack
  • submitNodeCollector: SubmitNodeCollector
  • lightCoords: int
  • armorItem: ItemStack
  • model: Model
  • state: WolfRenderState

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class WolfArmorLayer extends RenderLayer<WolfRenderState, WolfModel> {
    private final WolfModel adultModel;
    private final EquipmentLayerRenderer equipmentRenderer;
    private static final Map<Crackiness.Level, Identifier> ARMOR_CRACK_LOCATIONS = Map.of(
        Crackiness.Level.LOW,
        Identifier.withDefaultNamespace("textures/entity/wolf/wolf_armor_crackiness_low.png"),
        Crackiness.Level.MEDIUM,
        Identifier.withDefaultNamespace("textures/entity/wolf/wolf_armor_crackiness_medium.png"),
        Crackiness.Level.HIGH,
        Identifier.withDefaultNamespace("textures/entity/wolf/wolf_armor_crackiness_high.png")
    );
 
    public WolfArmorLayer(RenderLayerParent<WolfRenderState, WolfModel> renderer, EntityModelSet modelSet, EquipmentLayerRenderer equipmentRenderer) {
        super(renderer);
        this.adultModel = new AdultWolfModel(modelSet.bakeLayer(ModelLayers.WOLF_ARMOR));
        this.equipmentRenderer = equipmentRenderer;
    }
 
    public void submit(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, WolfRenderState state, float yRot, float xRot) {
        ItemStack armorItem = state.bodyArmorItem;
        Equippable equippable = armorItem.get(DataComponents.EQUIPPABLE);
        if (equippable != null && !equippable.assetId().isEmpty() && !state.isBaby) {
            this.equipmentRenderer
                .renderLayers(
                    EquipmentClientInfo.LayerType.WOLF_BODY,
                    equippable.assetId().get(),
                    this.adultModel,
                    state,
                    armorItem,
                    poseStack,
                    submitNodeCollector,
                    lightCoords,
                    state.outlineColor
                );
            this.maybeRenderCracks(poseStack, submitNodeCollector, lightCoords, armorItem, this.adultModel, state);
        }
    }
 
    private void maybeRenderCracks(
        PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, ItemStack armorItem, Model<WolfRenderState> model, WolfRenderState state
    ) {
        Crackiness.Level crackiness = Crackiness.WOLF_ARMOR.byDamage(armorItem);
        if (crackiness != Crackiness.Level.NONE) {
            Identifier damageTexture = ARMOR_CRACK_LOCATIONS.get(crackiness);
            submitNodeCollector.submitModel(
                model, state, poseStack, RenderTypes.armorTranslucent(damageTexture), lightCoords, OverlayTexture.NO_OVERLAY, state.outlineColor, null
            );
        }
    }
}

引用的其他类