PistonHeadRenderer.java
net.minecraft.client.renderer.blockentity.PistonHeadRenderer
信息
- 全限定名:net.minecraft.client.renderer.blockentity.PistonHeadRenderer
- 类型:public class
- 包:net.minecraft.client.renderer.blockentity
- 源码路径:src/main/java/net/minecraft/client/renderer/blockentity/PistonHeadRenderer.java
- 起始行号:L25
- 实现:BlockEntityRenderer<PistonMovingBlockEntity,PistonHeadRenderState>
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
public PistonHeadRenderState createRenderState() @ L26
- 方法名:createRenderState
- 源码定位:L26
- 返回类型:PistonHeadRenderState
- 修饰符:public
参数:
- 无
说明:
TODO
public void extractRenderState(PistonMovingBlockEntity blockEntity, PistonHeadRenderState state, float partialTicks, Vec3 cameraPosition, ModelFeatureRenderer.CrumblingOverlay breakProgress) @ L30
- 方法名:extractRenderState
- 源码定位:L30
- 返回类型:void
- 修饰符:public
参数:
- blockEntity: PistonMovingBlockEntity
- state: PistonHeadRenderState
- partialTicks: float
- cameraPosition: Vec3
- breakProgress: ModelFeatureRenderer.CrumblingOverlay
说明:
TODO
public void submit(PistonHeadRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) @ L67
- 方法名:submit
- 源码定位:L67
- 返回类型:void
- 修饰符:public
参数:
- state: PistonHeadRenderState
- poseStack: PoseStack
- submitNodeCollector: SubmitNodeCollector
- camera: CameraRenderState
说明:
TODO
private static MovingBlockRenderState createMovingBlock(BlockPos pos, BlockState blockState, Holder<Biome> biome, ClientLevel level) @ L79
- 方法名:createMovingBlock
- 源码定位:L79
- 返回类型:MovingBlockRenderState
- 修饰符:private static
参数:
- pos: BlockPos
- blockState: BlockState
- biome: Holder
- level: ClientLevel
说明:
TODO
public int getViewDistance() @ L90
- 方法名:getViewDistance
- 源码定位:L90
- 返回类型:int
- 修饰符:public
参数:
- 无
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class PistonHeadRenderer implements BlockEntityRenderer<PistonMovingBlockEntity, PistonHeadRenderState> {
public PistonHeadRenderState createRenderState() {
return new PistonHeadRenderState();
}
public void extractRenderState(
PistonMovingBlockEntity blockEntity,
PistonHeadRenderState state,
float partialTicks,
Vec3 cameraPosition,
ModelFeatureRenderer.@Nullable CrumblingOverlay breakProgress
) {
BlockEntityRenderer.super.extractRenderState(blockEntity, state, partialTicks, cameraPosition, breakProgress);
state.xOffset = blockEntity.getXOff(partialTicks);
state.yOffset = blockEntity.getYOff(partialTicks);
state.zOffset = blockEntity.getZOff(partialTicks);
state.block = null;
state.base = null;
BlockState blockState = blockEntity.getMovedState();
if (blockEntity.getLevel() instanceof ClientLevel level && !blockState.isAir()) {
BlockPos pos = blockEntity.getBlockPos().relative(blockEntity.getMovementDirection().getOpposite());
Holder<Biome> biome = level.getBiome(pos);
if (blockState.is(Blocks.PISTON_HEAD) && blockEntity.getProgress(partialTicks) <= 4.0F) {
blockState = blockState.setValue(PistonHeadBlock.SHORT, blockEntity.getProgress(partialTicks) <= 0.5F);
state.block = createMovingBlock(pos, blockState, biome, level);
} else if (blockEntity.isSourcePiston() && !blockEntity.isExtending()) {
PistonType value = blockState.is(Blocks.STICKY_PISTON) ? PistonType.STICKY : PistonType.DEFAULT;
BlockState pistonHeadState = Blocks.PISTON_HEAD
.defaultBlockState()
.setValue(PistonHeadBlock.TYPE, value)
.setValue(PistonHeadBlock.FACING, blockState.getValue(PistonBaseBlock.FACING));
pistonHeadState = pistonHeadState.setValue(PistonHeadBlock.SHORT, blockEntity.getProgress(partialTicks) >= 0.5F);
state.block = createMovingBlock(pos, pistonHeadState, biome, level);
BlockPos basePos = pos.relative(blockEntity.getMovementDirection());
blockState = blockState.setValue(PistonBaseBlock.EXTENDED, true);
state.base = createMovingBlock(basePos, blockState, biome, level);
} else {
state.block = createMovingBlock(pos, blockState, biome, level);
}
}
}
public void submit(PistonHeadRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) {
if (state.block != null) {
poseStack.pushPose();
poseStack.translate(state.xOffset, state.yOffset, state.zOffset);
submitNodeCollector.submitMovingBlock(poseStack, state.block);
poseStack.popPose();
if (state.base != null) {
submitNodeCollector.submitMovingBlock(poseStack, state.base);
}
}
}
private static MovingBlockRenderState createMovingBlock(BlockPos pos, BlockState blockState, Holder<Biome> biome, ClientLevel level) {
MovingBlockRenderState movingBlockRenderState = new MovingBlockRenderState();
movingBlockRenderState.randomSeedPos = pos;
movingBlockRenderState.blockPos = pos;
movingBlockRenderState.blockState = blockState;
movingBlockRenderState.biome = biome;
movingBlockRenderState.cardinalLighting = level.cardinalLighting();
movingBlockRenderState.lightEngine = level.getLightEngine();
return movingBlockRenderState;
}
@Override
public int getViewDistance() {
return 68;
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
构造调用/返回值 - 关联成员:
MovingBlockRenderState()
- 引用位置:
-
- 引用位置:
实现
- 引用位置:
-
- 引用位置:
参数/构造调用/返回值 - 关联成员:
PistonHeadRenderState()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置: