BlockModelRenderState.java
net.minecraft.client.renderer.block.BlockModelRenderState
信息
- 全限定名:net.minecraft.client.renderer.block.BlockModelRenderState
- 类型:public class
- 包:net.minecraft.client.renderer.block
- 源码路径:src/main/java/net/minecraft/client/renderer/block/BlockModelRenderState.java
- 起始行号:L23
- 职责:
TODO
字段/常量
-
EMPTY_TINTS- 类型:
int[] - 修饰符:
public static final - 源码定位:
L24 - 说明:
TODO
- 类型:
-
modelParts- 类型:
List<BlockStateModelPart> - 修饰符:
private - 源码定位:
L25 - 说明:
TODO
- 类型:
-
transformation- 类型:
Matrix4fc - 修饰符:
private - 源码定位:
L26 - 说明:
TODO
- 类型:
-
renderType- 类型:
RenderType - 修饰符:
private - 源码定位:
L27 - 说明:
TODO
- 类型:
-
specialRenderer- 类型:
SpecialModelRenderer<?> - 修饰符:
private - 源码定位:
L28 - 说明:
TODO
- 类型:
-
specialRendererTransformation- 类型:
Matrix4fc - 修饰符:
private - 源码定位:
L29 - 说明:
TODO
- 类型:
-
tintLayers- 类型:
IntList - 修饰符:
private - 源码定位:
L30 - 说明:
TODO
- 类型:
-
randomSource- 类型:
RandomSource - 修饰符:
private - 源码定位:
L31 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
public void clear() @ L33
- 方法名:clear
- 源码定位:L33
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public IntList tintLayers() @ L44
- 方法名:tintLayers
- 源码定位:L44
- 返回类型:IntList
- 修饰符:public
参数:
- 无
说明:
TODO
public <T> void setupSpecialModel(SpecialModelRenderer<T> renderer, Matrix4fc transformation) @ L52
- 方法名:setupSpecialModel
- 源码定位:L52
- 返回类型:
void - 修饰符:public
参数:
- renderer: SpecialModelRenderer
- transformation: Matrix4fc
说明:
TODO
public List<BlockStateModelPart> setupModel(Matrix4fc transformation, boolean hasTranslucency) @ L57
- 方法名:setupModel
- 源码定位:L57
- 返回类型:List
- 修饰符:public
参数:
- transformation: Matrix4fc
- hasTranslucency: boolean
说明:
TODO
public void submit(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, int overlayCoords, int outlineColor) @ L69
- 方法名:submit
- 源码定位:L69
- 返回类型:void
- 修饰符:public
参数:
- poseStack: PoseStack
- submitNodeCollector: SubmitNodeCollector
- lightCoords: int
- overlayCoords: int
- outlineColor: int
说明:
TODO
private static Matrix4fc identityToNull(Matrix4fc transformation) @ L83
- 方法名:identityToNull
- 源码定位:L83
- 返回类型:Matrix4fc
- 修饰符:private static
参数:
- transformation: Matrix4fc
说明:
TODO
private void submitModel(RenderType renderType, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, int overlayCoords, int outlineColor) @ L87
- 方法名:submitModel
- 源码定位:L87
- 返回类型:void
- 修饰符:private
参数:
- renderType: RenderType
- poseStack: PoseStack
- submitNodeCollector: SubmitNodeCollector
- lightCoords: int
- overlayCoords: int
- outlineColor: int
说明:
TODO
private static void submitSpecialRenderer(SpecialModelRenderer<?> renderer, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, int overlayCoords, int outlineColor) @ L104
- 方法名:submitSpecialRenderer
- 源码定位:L104
- 返回类型:void
- 修饰符:private static
参数:
- renderer: SpecialModelRenderer<?>
- poseStack: PoseStack
- submitNodeCollector: SubmitNodeCollector
- lightCoords: int
- overlayCoords: int
- outlineColor: int
说明:
TODO
public void submitOnlyOutline(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, int overlayCoords, int outlineColor) @ L110
- 方法名:submitOnlyOutline
- 源码定位:L110
- 返回类型:void
- 修饰符:public
参数:
- poseStack: PoseStack
- submitNodeCollector: SubmitNodeCollector
- lightCoords: int
- overlayCoords: int
- outlineColor: int
说明:
TODO
public void submitWithZOffset(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, int overlayCoords, int outlineColor) @ L114
- 方法名:submitWithZOffset
- 源码定位:L114
- 返回类型:void
- 修饰符:public
参数:
- poseStack: PoseStack
- submitNodeCollector: SubmitNodeCollector
- lightCoords: int
- overlayCoords: int
- outlineColor: int
说明:
TODO
public boolean isEmpty() @ L120
- 方法名:isEmpty
- 源码定位:L120
- 返回类型:boolean
- 修饰符:public
参数:
- 无
说明:
TODO
public RandomSource scratchRandomSource(long seed) @ L124
- 方法名:scratchRandomSource
- 源码定位:L124
- 返回类型:RandomSource
- 修饰符:public
参数:
- seed: long
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class BlockModelRenderState {
public static final int[] EMPTY_TINTS = new int[0];
private @Nullable List<BlockStateModelPart> modelParts;
private @Nullable Matrix4fc transformation;
private @Nullable RenderType renderType;
private @Nullable SpecialModelRenderer<?> specialRenderer;
private @Nullable Matrix4fc specialRendererTransformation;
private @Nullable IntList tintLayers;
private @Nullable RandomSource randomSource;
public void clear() {
this.modelParts = null;
this.transformation = null;
this.renderType = null;
this.specialRenderer = null;
this.specialRendererTransformation = null;
if (this.tintLayers != null) {
this.tintLayers.clear();
}
}
public IntList tintLayers() {
if (this.tintLayers == null) {
this.tintLayers = new IntArrayList();
}
return this.tintLayers;
}
public <T> void setupSpecialModel(SpecialModelRenderer<T> renderer, Matrix4fc transformation) {
this.specialRenderer = renderer;
this.specialRendererTransformation = identityToNull(transformation);
}
public List<BlockStateModelPart> setupModel(Matrix4fc transformation, boolean hasTranslucency) {
this.transformation = identityToNull(transformation);
this.renderType = hasTranslucency ? Sheets.translucentBlockSheet() : Sheets.cutoutBlockSheet();
if (this.modelParts == null) {
this.modelParts = new ObjectArrayList<>();
} else {
this.modelParts.clear();
}
return this.modelParts;
}
public void submit(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, int overlayCoords, int outlineColor) {
this.submitModel(this.renderType, poseStack, submitNodeCollector, lightCoords, overlayCoords, outlineColor);
if (this.specialRenderer != null) {
if (this.specialRendererTransformation != null) {
poseStack.pushPose();
poseStack.mulPose(this.specialRendererTransformation);
submitSpecialRenderer(this.specialRenderer, poseStack, submitNodeCollector, lightCoords, overlayCoords, outlineColor);
poseStack.popPose();
} else {
submitSpecialRenderer(this.specialRenderer, poseStack, submitNodeCollector, lightCoords, overlayCoords, outlineColor);
}
}
}
private static @Nullable Matrix4fc identityToNull(Matrix4fc transformation) {
return MatrixUtil.checkPropertyRaw(transformation, 4) ? null : transformation;
}
private void submitModel(
RenderType renderType, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, int overlayCoords, int outlineColor
) {
if (this.modelParts != null && !this.modelParts.isEmpty()) {
List<BlockStateModelPart> modelPartsCopy = new ObjectArrayList<>(this.modelParts);
int[] tints = this.tintLayers != null ? this.tintLayers.toArray(EMPTY_TINTS) : EMPTY_TINTS;
if (this.transformation != null) {
poseStack.pushPose();
poseStack.mulPose(this.transformation);
submitNodeCollector.submitBlockModel(poseStack, renderType, modelPartsCopy, tints, lightCoords, overlayCoords, outlineColor);
poseStack.popPose();
} else {
submitNodeCollector.submitBlockModel(poseStack, renderType, modelPartsCopy, tints, lightCoords, overlayCoords, outlineColor);
}
}
}
private static void submitSpecialRenderer(
SpecialModelRenderer<?> renderer, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, int overlayCoords, int outlineColor
) {
renderer.submit(null, poseStack, submitNodeCollector, lightCoords, overlayCoords, false, outlineColor);
}
public void submitOnlyOutline(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, int overlayCoords, int outlineColor) {
this.submitModel(RenderTypes.outline(TextureAtlas.LOCATION_BLOCKS), poseStack, submitNodeCollector, lightCoords, overlayCoords, outlineColor);
}
public void submitWithZOffset(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, int overlayCoords, int outlineColor) {
this.submitModel(
RenderTypes.entitySolidZOffsetForward(TextureAtlas.LOCATION_BLOCKS), poseStack, submitNodeCollector, lightCoords, overlayCoords, outlineColor
);
}
public boolean isEmpty() {
return this.modelParts == null && this.specialRenderer == null;
}
public RandomSource scratchRandomSource(long seed) {
if (this.randomSource == null) {
this.randomSource = RandomSource.create(seed);
} else {
this.randomSource.setSeed(seed);
}
return this.randomSource;
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
MatrixUtil.checkPropertyRaw()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Sheets.cutoutBlockSheet(), Sheets.translucentBlockSheet()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
字段/返回值
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
RenderTypes.entitySolidZOffsetForward(), RenderTypes.outline()
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
字段/方法调用/返回值 - 关联成员:
RandomSource.create()
- 引用位置: