PigRenderer.java

net.minecraft.client.renderer.entity.PigRenderer

信息

  • 全限定名:net.minecraft.client.renderer.entity.PigRenderer
  • 类型:public class
  • 包:net.minecraft.client.renderer.entity
  • 源码路径:src/main/java/net/minecraft/client/renderer/entity/PigRenderer.java
  • 起始行号:L25
  • 继承:MobRenderer<Pig,PigRenderState,PigModel>
  • 职责:

    TODO

字段/常量

  • models
    • 类型: Map<PigVariant.ModelType,AdultAndBabyModelPair<PigModel>>
    • 修饰符: private final
    • 源码定位: L26
    • 说明:

      TODO

内部类/嵌套类型

构造器

public PigRenderer(EntityRendererProvider.Context context) @ L28

  • 构造器名:PigRenderer
  • 源码定位:L28
  • 修饰符:public

参数:

  • context: EntityRendererProvider.Context

说明:

TODO

方法

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

private static Map<PigVariant.ModelType,AdultAndBabyModelPair<PigModel>> bakeModels(EntityRendererProvider.Context context) @ L43

  • 方法名:bakeModels
  • 源码定位:L43
  • 返回类型:Map<PigVariant.ModelType,AdultAndBabyModelPair>
  • 修饰符:private static

参数:

  • context: EntityRendererProvider.Context

说明:

TODO

public void submit(PigRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) @ L56

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

参数:

  • state: PigRenderState
  • poseStack: PoseStack
  • submitNodeCollector: SubmitNodeCollector
  • camera: CameraRenderState

说明:

TODO

public Identifier getTextureLocation(PigRenderState state) @ L63

  • 方法名:getTextureLocation
  • 源码定位:L63
  • 返回类型:Identifier
  • 修饰符:public

参数:

  • state: PigRenderState

说明:

TODO

public PigRenderState createRenderState() @ L69

  • 方法名:createRenderState
  • 源码定位:L69
  • 返回类型:PigRenderState
  • 修饰符:public

参数:

说明:

TODO

public void extractRenderState(Pig entity, PigRenderState state, float partialTicks) @ L73

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

参数:

  • entity: Pig
  • state: PigRenderState
  • partialTicks: float

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class PigRenderer extends MobRenderer<Pig, PigRenderState, PigModel> {
    private final Map<PigVariant.ModelType, AdultAndBabyModelPair<PigModel>> models;
 
    public PigRenderer(EntityRendererProvider.Context context) {
        super(context, new PigModel(context.bakeLayer(ModelLayers.PIG)), 0.7F);
        this.models = bakeModels(context);
        this.addLayer(
            new SimpleEquipmentLayer<>(
                this,
                context.getEquipmentRenderer(),
                EquipmentClientInfo.LayerType.PIG_SADDLE,
                state -> state.saddle,
                new PigModel(context.bakeLayer(ModelLayers.PIG_SADDLE)),
                null
            )
        );
    }
 
    private static Map<PigVariant.ModelType, AdultAndBabyModelPair<PigModel>> bakeModels(EntityRendererProvider.Context context) {
        return Maps.newEnumMap(
            Map.of(
                PigVariant.ModelType.NORMAL,
                new AdultAndBabyModelPair<>(new PigModel(context.bakeLayer(ModelLayers.PIG)), new BabyPigModel(context.bakeLayer(ModelLayers.PIG_BABY))),
                PigVariant.ModelType.COLD,
                new AdultAndBabyModelPair<>(
                    new ColdPigModel(context.bakeLayer(ModelLayers.COLD_PIG)), new BabyPigModel(context.bakeLayer(ModelLayers.PIG_BABY))
                )
            )
        );
    }
 
    public void submit(PigRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) {
        if (state.variant != null) {
            this.model = this.models.get(state.variant.modelAndTexture().model()).getModel(state.isBaby);
            super.submit(state, poseStack, submitNodeCollector, camera);
        }
    }
 
    public Identifier getTextureLocation(PigRenderState state) {
        return state.variant == null
            ? MissingTextureAtlasSprite.getLocation()
            : (state.isBaby ? state.variant.babyTexture().texturePath() : state.variant.modelAndTexture().asset().texturePath());
    }
 
    public PigRenderState createRenderState() {
        return new PigRenderState();
    }
 
    public void extractRenderState(Pig entity, PigRenderState state, float partialTicks) {
        super.extractRenderState(entity, state, partialTicks);
        state.saddle = entity.getItemBySlot(EquipmentSlot.SADDLE).copy();
        state.variant = entity.getVariant().value();
    }
}

引用的其他类