FoxRenderer.java

net.minecraft.client.renderer.entity.FoxRenderer

信息

  • 全限定名:net.minecraft.client.renderer.entity.FoxRenderer
  • 类型:public class
  • 包:net.minecraft.client.renderer.entity
  • 源码路径:src/main/java/net/minecraft/client/renderer/entity/FoxRenderer.java
  • 起始行号:L21
  • 继承:AgeableMobRenderer<Fox,FoxRenderState,FoxModel>
  • 职责:

    TODO

字段/常量

  • RED_FOX_TEXTURE

    • 类型: Identifier
    • 修饰符: private static final
    • 源码定位: L22
    • 说明:

      TODO

  • RED_FOX_SLEEP_TEXTURE

    • 类型: Identifier
    • 修饰符: private static final
    • 源码定位: L23
    • 说明:

      TODO

  • SNOW_FOX_TEXTURE

    • 类型: Identifier
    • 修饰符: private static final
    • 源码定位: L24
    • 说明:

      TODO

  • SNOW_FOX_SLEEP_TEXTURE

    • 类型: Identifier
    • 修饰符: private static final
    • 源码定位: L25
    • 说明:

      TODO

  • BABY_RED_FOX_TEXTURE

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

      TODO

  • BABY_RED_FOX_SLEEP_TEXTURE

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

      TODO

  • BABY_SNOW_FOX_TEXTURE

    • 类型: Identifier
    • 修饰符: private static final
    • 源码定位: L28
    • 说明:

      TODO

  • BABY_SNOW_FOX_SLEEP_TEXTURE

    • 类型: Identifier
    • 修饰符: private static final
    • 源码定位: L29
    • 说明:

      TODO

  • TEXTURES_BY_VARIANT

    • 类型: EnumMap<Fox.Variant,FoxRenderer.FoxTexturesByState>
    • 修饰符: private static final
    • 源码定位: L30
    • 说明:

      TODO

内部类/嵌套类型

  • net.minecraft.client.renderer.entity.FoxRenderer.FoxTexturesByAge

    • 类型: record
    • 修饰符: private
    • 源码定位: L85
    • 说明:

      TODO

  • net.minecraft.client.renderer.entity.FoxRenderer.FoxTexturesByState

    • 类型: record
    • 修饰符: private
    • 源码定位: L89
    • 说明:

      TODO

构造器

public FoxRenderer(EntityRendererProvider.Context context) @ L45

  • 构造器名:FoxRenderer
  • 源码定位:L45
  • 修饰符:public

参数:

  • context: EntityRendererProvider.Context

说明:

TODO

方法

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

protected void setupRotations(FoxRenderState state, PoseStack poseStack, float bodyRot, float entityScale) @ L50

  • 方法名:setupRotations
  • 源码定位:L50
  • 返回类型:void
  • 修饰符:protected

参数:

  • state: FoxRenderState
  • poseStack: PoseStack
  • bodyRot: float
  • entityScale: float

说明:

TODO

public Identifier getTextureLocation(FoxRenderState state) @ L57

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

参数:

  • state: FoxRenderState

说明:

TODO

public FoxRenderState createRenderState() @ L67

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

参数:

说明:

TODO

public void extractRenderState(Fox entity, FoxRenderState state, float partialTicks) @ L71

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

参数:

  • entity: Fox
  • state: FoxRenderState
  • partialTicks: float

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class FoxRenderer extends AgeableMobRenderer<Fox, FoxRenderState, FoxModel> {
    private static final Identifier RED_FOX_TEXTURE = Identifier.withDefaultNamespace("textures/entity/fox/fox.png");
    private static final Identifier RED_FOX_SLEEP_TEXTURE = Identifier.withDefaultNamespace("textures/entity/fox/fox_sleep.png");
    private static final Identifier SNOW_FOX_TEXTURE = Identifier.withDefaultNamespace("textures/entity/fox/fox_snow.png");
    private static final Identifier SNOW_FOX_SLEEP_TEXTURE = Identifier.withDefaultNamespace("textures/entity/fox/fox_snow_sleep.png");
    private static final Identifier BABY_RED_FOX_TEXTURE = Identifier.withDefaultNamespace("textures/entity/fox/fox_baby.png");
    private static final Identifier BABY_RED_FOX_SLEEP_TEXTURE = Identifier.withDefaultNamespace("textures/entity/fox/fox_sleep_baby.png");
    private static final Identifier BABY_SNOW_FOX_TEXTURE = Identifier.withDefaultNamespace("textures/entity/fox/fox_snow_baby.png");
    private static final Identifier BABY_SNOW_FOX_SLEEP_TEXTURE = Identifier.withDefaultNamespace("textures/entity/fox/fox_snow_sleep_baby.png");
    private static final EnumMap<Fox.Variant, FoxRenderer.FoxTexturesByState> TEXTURES_BY_VARIANT = Maps.newEnumMap(
        Map.of(
            Fox.Variant.RED,
            new FoxRenderer.FoxTexturesByState(
                new FoxRenderer.FoxTexturesByAge(RED_FOX_TEXTURE, BABY_RED_FOX_TEXTURE),
                new FoxRenderer.FoxTexturesByAge(RED_FOX_SLEEP_TEXTURE, BABY_RED_FOX_SLEEP_TEXTURE)
            ),
            Fox.Variant.SNOW,
            new FoxRenderer.FoxTexturesByState(
                new FoxRenderer.FoxTexturesByAge(SNOW_FOX_TEXTURE, BABY_SNOW_FOX_TEXTURE),
                new FoxRenderer.FoxTexturesByAge(SNOW_FOX_SLEEP_TEXTURE, BABY_SNOW_FOX_SLEEP_TEXTURE)
            )
        )
    );
 
    public FoxRenderer(EntityRendererProvider.Context context) {
        super(context, new AdultFoxModel(context.bakeLayer(ModelLayers.FOX)), new BabyFoxModel(context.bakeLayer(ModelLayers.FOX_BABY)), 0.4F);
        this.addLayer(new FoxHeldItemLayer(this));
    }
 
    protected void setupRotations(FoxRenderState state, PoseStack poseStack, float bodyRot, float entityScale) {
        super.setupRotations(state, poseStack, bodyRot, entityScale);
        if (state.isPouncing || state.isFaceplanted) {
            poseStack.mulPose(Axis.XP.rotationDegrees(-state.xRot));
        }
    }
 
    public Identifier getTextureLocation(FoxRenderState state) {
        FoxRenderer.FoxTexturesByState byState = TEXTURES_BY_VARIANT.get(state.variant);
        if (byState == null) {
            return RED_FOX_TEXTURE;
        } else {
            FoxRenderer.FoxTexturesByAge ageTextures = state.isSleeping ? byState.sleeping() : byState.idle();
            return state.isBaby ? ageTextures.baby() : ageTextures.adult();
        }
    }
 
    public FoxRenderState createRenderState() {
        return new FoxRenderState();
    }
 
    public void extractRenderState(Fox entity, FoxRenderState state, float partialTicks) {
        super.extractRenderState(entity, state, partialTicks);
        HoldingEntityRenderState.extractHoldingEntityRenderState(entity, state, this.itemModelResolver);
        state.headRollAngle = entity.getHeadRollAngle(partialTicks);
        state.isCrouching = entity.isCrouching();
        state.crouchAmount = entity.getCrouchAmount(partialTicks);
        state.isSleeping = entity.isSleeping();
        state.isSitting = entity.isSitting();
        state.isFaceplanted = entity.isFaceplanted();
        state.isPouncing = entity.isPouncing();
        state.variant = entity.getVariant();
    }
 
    @OnlyIn(Dist.CLIENT)
    private record FoxTexturesByAge(Identifier adult, Identifier baby) {
    }
 
    @OnlyIn(Dist.CLIENT)
    private record FoxTexturesByState(FoxRenderer.FoxTexturesByAge idle, FoxRenderer.FoxTexturesByAge sleeping) {
    }
}

引用的其他类