CopperGolemStatueBlockRenderer.java

net.minecraft.client.renderer.blockentity.CopperGolemStatueBlockRenderer

信息

  • 全限定名:net.minecraft.client.renderer.blockentity.CopperGolemStatueBlockRenderer
  • 类型:public class
  • 包:net.minecraft.client.renderer.blockentity
  • 源码路径:src/main/java/net/minecraft/client/renderer/blockentity/CopperGolemStatueBlockRenderer.java
  • 起始行号:L31
  • 实现:BlockEntityRenderer<CopperGolemStatueBlockEntity,CopperGolemStatueRenderState>
  • 职责:

    TODO

字段/常量

  • TRANSFORMATIONS

    • 类型: Map<Direction,Transformation>
    • 修饰符: private static final
    • 源码定位: L32
    • 说明:

      TODO

  • models

    • 类型: Map<CopperGolemStatueBlock.Pose,CopperGolemStatueModel>
    • 修饰符: private final
    • 源码定位: L35
    • 说明:

      TODO

内部类/嵌套类型

构造器

public CopperGolemStatueBlockRenderer(BlockEntityRendererProvider.Context context) @ L37

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

参数:

  • context: BlockEntityRendererProvider.Context

说明:

TODO

方法

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

public CopperGolemStatueRenderState createRenderState() @ L45

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

参数:

说明:

TODO

public void extractRenderState(CopperGolemStatueBlockEntity blockEntity, CopperGolemStatueRenderState state, float partialTicks, Vec3 cameraPosition, ModelFeatureRenderer.CrumblingOverlay breakProgress) @ L49

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

参数:

  • blockEntity: CopperGolemStatueBlockEntity
  • state: CopperGolemStatueRenderState
  • partialTicks: float
  • cameraPosition: Vec3
  • breakProgress: ModelFeatureRenderer.CrumblingOverlay

说明:

TODO

public void submit(CopperGolemStatueRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) @ L65

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

参数:

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

说明:

TODO

public static Transformation modelTransformation(Direction facing) @ L82

  • 方法名:modelTransformation
  • 源码定位:L82
  • 返回类型:Transformation
  • 修饰符:public static

参数:

  • facing: Direction

说明:

TODO

private static Transformation createModelTransformation(Direction entityDirection) @ L86

  • 方法名:createModelTransformation
  • 源码定位:L86
  • 返回类型:Transformation
  • 修饰符:private static

参数:

  • entityDirection: Direction

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class CopperGolemStatueBlockRenderer implements BlockEntityRenderer<CopperGolemStatueBlockEntity, CopperGolemStatueRenderState> {
    private static final Map<Direction, Transformation> TRANSFORMATIONS = Util.makeEnumMap(
        Direction.class, CopperGolemStatueBlockRenderer::createModelTransformation
    );
    private final Map<CopperGolemStatueBlock.Pose, CopperGolemStatueModel> models = new HashMap<>();
 
    public CopperGolemStatueBlockRenderer(BlockEntityRendererProvider.Context context) {
        EntityModelSet modelSet = context.entityModelSet();
        this.models.put(CopperGolemStatueBlock.Pose.STANDING, new CopperGolemStatueModel(modelSet.bakeLayer(ModelLayers.COPPER_GOLEM)));
        this.models.put(CopperGolemStatueBlock.Pose.RUNNING, new CopperGolemStatueModel(modelSet.bakeLayer(ModelLayers.COPPER_GOLEM_RUNNING)));
        this.models.put(CopperGolemStatueBlock.Pose.SITTING, new CopperGolemStatueModel(modelSet.bakeLayer(ModelLayers.COPPER_GOLEM_SITTING)));
        this.models.put(CopperGolemStatueBlock.Pose.STAR, new CopperGolemStatueModel(modelSet.bakeLayer(ModelLayers.COPPER_GOLEM_STAR)));
    }
 
    public CopperGolemStatueRenderState createRenderState() {
        return new CopperGolemStatueRenderState();
    }
 
    public void extractRenderState(
        CopperGolemStatueBlockEntity blockEntity,
        CopperGolemStatueRenderState state,
        float partialTicks,
        Vec3 cameraPosition,
        ModelFeatureRenderer.@Nullable CrumblingOverlay breakProgress
    ) {
        BlockEntityRenderer.super.extractRenderState(blockEntity, state, partialTicks, cameraPosition, breakProgress);
        BlockState blockState = blockEntity.getBlockState();
        state.direction = blockState.getValue(CopperGolemStatueBlock.FACING);
        state.pose = blockState.getValue(CopperGolemStatueBlock.POSE);
        state.oxidationState = blockState.getBlock() instanceof CopperGolemStatueBlock copperGolemStatueBlock
            ? copperGolemStatueBlock.getWeatheringState()
            : WeatheringCopper.WeatherState.UNAFFECTED;
    }
 
    public void submit(CopperGolemStatueRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) {
        poseStack.pushPose();
        poseStack.mulPose(modelTransformation(state.direction));
        CopperGolemStatueModel model = this.models.get(state.pose);
        submitNodeCollector.submitModel(
            model,
            Unit.INSTANCE,
            poseStack,
            CopperGolemOxidationLevels.getOxidationLevel(state.oxidationState).texture(),
            state.lightCoords,
            OverlayTexture.NO_OVERLAY,
            0,
            state.breakProgress
        );
        poseStack.popPose();
    }
 
    public static Transformation modelTransformation(Direction facing) {
        return TRANSFORMATIONS.get(facing);
    }
 
    private static Transformation createModelTransformation(Direction entityDirection) {
        return new Transformation(new Matrix4f().translation(0.5F, 0.0F, 0.5F).rotate(Axis.YP.rotationDegrees(-entityDirection.getOpposite().toYRot())));
    }
}

引用的其他类