ShulkerBoxRenderer.java
net.minecraft.client.renderer.blockentity.ShulkerBoxRenderer
信息
- 全限定名:net.minecraft.client.renderer.blockentity.ShulkerBoxRenderer
- 类型:public class
- 包:net.minecraft.client.renderer.blockentity
- 源码路径:src/main/java/net/minecraft/client/renderer/blockentity/ShulkerBoxRenderer.java
- 起始行号:L34
- 实现:BlockEntityRenderer<ShulkerBoxBlockEntity,ShulkerBoxRenderState>
- 职责:
TODO
字段/常量
-
TRANSFORMATIONS- 类型:
Map<Direction,Transformation> - 修饰符:
private static final - 源码定位:
L35 - 说明:
TODO
- 类型:
-
sprites- 类型:
SpriteGetter - 修饰符:
private final - 源码定位:
L36 - 说明:
TODO
- 类型:
-
model- 类型:
ShulkerBoxRenderer.ShulkerBoxModel - 修饰符:
private final - 源码定位:
L37 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.client.renderer.blockentity.ShulkerBoxRenderer.ShulkerBoxModel- 类型:
class - 修饰符:
private static - 源码定位:
L137 - 说明:
TODO
- 类型:
构造器
public ShulkerBoxRenderer(BlockEntityRendererProvider.Context context) @ L39
- 构造器名:ShulkerBoxRenderer
- 源码定位:L39
- 修饰符:public
参数:
- context: BlockEntityRendererProvider.Context
说明:
TODO
public ShulkerBoxRenderer(SpecialModelRenderer.BakingContext context) @ L43
- 构造器名:ShulkerBoxRenderer
- 源码定位:L43
- 修饰符:public
参数:
- context: SpecialModelRenderer.BakingContext
说明:
TODO
public ShulkerBoxRenderer(EntityModelSet context, SpriteGetter sprites) @ L47
- 构造器名:ShulkerBoxRenderer
- 源码定位:L47
- 修饰符:public
参数:
- context: EntityModelSet
- sprites: SpriteGetter
说明:
TODO
方法
下面的方法块按源码顺序生成。
public ShulkerBoxRenderState createRenderState() @ L52
- 方法名:createRenderState
- 源码定位:L52
- 返回类型:ShulkerBoxRenderState
- 修饰符:public
参数:
- 无
说明:
TODO
public void extractRenderState(ShulkerBoxBlockEntity blockEntity, ShulkerBoxRenderState state, float partialTicks, Vec3 cameraPosition, ModelFeatureRenderer.CrumblingOverlay breakProgress) @ L56
- 方法名:extractRenderState
- 源码定位:L56
- 返回类型:void
- 修饰符:public
参数:
- blockEntity: ShulkerBoxBlockEntity
- state: ShulkerBoxRenderState
- partialTicks: float
- cameraPosition: Vec3
- breakProgress: ModelFeatureRenderer.CrumblingOverlay
说明:
TODO
public void submit(ShulkerBoxRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) @ L69
- 方法名:submit
- 源码定位:L69
- 返回类型:void
- 修饰符:public
参数:
- state: ShulkerBoxRenderState
- poseStack: PoseStack
- submitNodeCollector: SubmitNodeCollector
- camera: CameraRenderState
说明:
TODO
private void submit(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, int overlayCoords, Direction direction, float progress, ModelFeatureRenderer.CrumblingOverlay breakProgress, SpriteId sprite, int outlineColor) @ L83
- 方法名:submit
- 源码定位:L83
- 返回类型:void
- 修饰符:private
参数:
- poseStack: PoseStack
- submitNodeCollector: SubmitNodeCollector
- lightCoords: int
- overlayCoords: int
- direction: Direction
- progress: float
- breakProgress: ModelFeatureRenderer.CrumblingOverlay
- sprite: SpriteId
- outlineColor: int
说明:
TODO
public void submit(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, int overlayCoords, float progress, ModelFeatureRenderer.CrumblingOverlay breakProgress, SpriteId sprite, int outlineColor) @ L100
- 方法名:submit
- 源码定位:L100
- 返回类型:void
- 修饰符:public
参数:
- poseStack: PoseStack
- submitNodeCollector: SubmitNodeCollector
- lightCoords: int
- overlayCoords: int
- progress: float
- breakProgress: ModelFeatureRenderer.CrumblingOverlay
- sprite: SpriteId
- outlineColor: int
说明:
TODO
private static Transformation createModelTransform(Direction direction) @ L114
- 方法名:createModelTransform
- 源码定位:L114
- 返回类型:Transformation
- 修饰符:private static
参数:
- direction: Direction
说明:
TODO
public static Transformation modelTransform(Direction direction) @ L126
- 方法名:modelTransform
- 源码定位:L126
- 返回类型:Transformation
- 修饰符:public static
参数:
- direction: Direction
说明:
TODO
public void getExtents(float progress, Consumer<Vector3fc> output) @ L130
- 方法名:getExtents
- 源码定位:L130
- 返回类型:void
- 修饰符:public
参数:
- progress: float
- output: Consumer
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class ShulkerBoxRenderer implements BlockEntityRenderer<ShulkerBoxBlockEntity, ShulkerBoxRenderState> {
private static final Map<Direction, Transformation> TRANSFORMATIONS = Util.makeEnumMap(Direction.class, ShulkerBoxRenderer::createModelTransform);
private final SpriteGetter sprites;
private final ShulkerBoxRenderer.ShulkerBoxModel model;
public ShulkerBoxRenderer(BlockEntityRendererProvider.Context context) {
this(context.entityModelSet(), context.sprites());
}
public ShulkerBoxRenderer(SpecialModelRenderer.BakingContext context) {
this(context.entityModelSet(), context.sprites());
}
public ShulkerBoxRenderer(EntityModelSet context, SpriteGetter sprites) {
this.sprites = sprites;
this.model = new ShulkerBoxRenderer.ShulkerBoxModel(context.bakeLayer(ModelLayers.SHULKER_BOX));
}
public ShulkerBoxRenderState createRenderState() {
return new ShulkerBoxRenderState();
}
public void extractRenderState(
ShulkerBoxBlockEntity blockEntity,
ShulkerBoxRenderState state,
float partialTicks,
Vec3 cameraPosition,
ModelFeatureRenderer.@Nullable CrumblingOverlay breakProgress
) {
BlockEntityRenderer.super.extractRenderState(blockEntity, state, partialTicks, cameraPosition, breakProgress);
state.direction = blockEntity.getBlockState().getValueOrElse(ShulkerBoxBlock.FACING, Direction.UP);
state.color = blockEntity.getColor();
state.progress = blockEntity.getProgress(partialTicks);
}
public void submit(ShulkerBoxRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) {
DyeColor color = state.color;
SpriteId sprite;
if (color == null) {
sprite = Sheets.DEFAULT_SHULKER_TEXTURE_LOCATION;
} else {
sprite = Sheets.getShulkerBoxSprite(color);
}
this.submit(
poseStack, submitNodeCollector, state.lightCoords, OverlayTexture.NO_OVERLAY, state.direction, state.progress, state.breakProgress, sprite, 0
);
}
private void submit(
PoseStack poseStack,
SubmitNodeCollector submitNodeCollector,
int lightCoords,
int overlayCoords,
Direction direction,
float progress,
ModelFeatureRenderer.@Nullable CrumblingOverlay breakProgress,
SpriteId sprite,
int outlineColor
) {
poseStack.pushPose();
poseStack.mulPose(modelTransform(direction));
this.submit(poseStack, submitNodeCollector, lightCoords, overlayCoords, progress, breakProgress, sprite, outlineColor);
poseStack.popPose();
}
public void submit(
PoseStack poseStack,
SubmitNodeCollector submitNodeCollector,
int lightCoords,
int overlayCoords,
float progress,
ModelFeatureRenderer.@Nullable CrumblingOverlay breakProgress,
SpriteId sprite,
int outlineColor
) {
this.model.setupAnim(progress);
submitNodeCollector.submitModel(this.model, progress, poseStack, lightCoords, overlayCoords, -1, sprite, this.sprites, outlineColor, breakProgress);
}
private static Transformation createModelTransform(Direction direction) {
float scale = 0.9995F;
return new Transformation(
new Matrix4f()
.translation(0.5F, 0.5F, 0.5F)
.scale(0.9995F, 0.9995F, 0.9995F)
.rotate(direction.getRotation())
.scale(1.0F, -1.0F, -1.0F)
.translate(0.0F, -1.0F, 0.0F)
);
}
public static Transformation modelTransform(Direction direction) {
return TRANSFORMATIONS.get(direction);
}
public void getExtents(float progress, Consumer<Vector3fc> output) {
PoseStack poseStack = new PoseStack();
this.model.setupAnim(progress);
this.model.root().getExtentsForGui(poseStack, output);
}
@OnlyIn(Dist.CLIENT)
private static class ShulkerBoxModel extends Model<Float> {
private final ModelPart lid;
public ShulkerBoxModel(ModelPart root) {
super(root, RenderTypes::entityCutout);
this.lid = root.getChild("lid");
}
public void setupAnim(Float progress) {
super.setupAnim(progress);
this.lid.setPos(0.0F, 24.0F - progress * 0.5F * 16.0F, 0.0F);
this.lid.yRot = 270.0F * progress * (float) (Math.PI / 180.0);
}
}
}引用的其他类
-
- 引用位置:
参数/构造调用 - 关联成员:
PoseStack()
- 引用位置:
-
- 引用位置:
字段/构造调用/返回值 - 关联成员:
Transformation()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Sheets.getShulkerBoxSprite()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
实现
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/构造调用/返回值 - 关联成员:
ShulkerBoxRenderState()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Util.makeEnumMap()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置: