BlockStateModelWrapper.java
net.minecraft.client.renderer.block.model.BlockStateModelWrapper
信息
- 全限定名:net.minecraft.client.renderer.block.model.BlockStateModelWrapper
- 类型:public class
- 包:net.minecraft.client.renderer.block.model
- 源码路径:src/main/java/net/minecraft/client/renderer/block/model/BlockStateModelWrapper.java
- 起始行号:L17
- 实现:BlockModel
- 职责:
TODO
字段/常量
-
model- 类型:
BlockStateModel - 修饰符:
private final - 源码定位:
L18 - 说明:
TODO
- 类型:
-
tints- 类型:
List<BlockTintSource> - 修饰符:
private final - 源码定位:
L19 - 说明:
TODO
- 类型:
-
transformation- 类型:
Matrix4fc - 修饰符:
private final - 源码定位:
L20 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.client.renderer.block.model.BlockStateModelWrapper.Unbaked- 类型:
record - 修饰符:
public - 源码定位:
L46 - 说明:
TODO
- 类型:
构造器
public BlockStateModelWrapper(BlockStateModel model, List<BlockTintSource> tints, Matrix4fc transformation) @ L22
- 构造器名:BlockStateModelWrapper
- 源码定位:L22
- 修饰符:public
参数:
- model: BlockStateModel
- tints: List
- transformation: Matrix4fc
说明:
TODO
方法
下面的方法块按源码顺序生成。
public void update(BlockModelRenderState output, BlockState blockState, BlockDisplayContext displayContext, long seed) @ L28
- 方法名:update
- 源码定位:L28
- 返回类型:void
- 修饰符:public
参数:
- output: BlockModelRenderState
- blockState: BlockState
- displayContext: BlockDisplayContext
- seed: long
说明:
TODO
private void updateTints(BlockModelRenderState renderState, BlockState blockState) @ L35
- 方法名:updateTints
- 源码定位:L35
- 返回类型:void
- 修饰符:private
参数:
- renderState: BlockModelRenderState
- blockState: BlockState
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class BlockStateModelWrapper implements BlockModel {
private final BlockStateModel model;
private final List<BlockTintSource> tints;
private final Matrix4fc transformation;
public BlockStateModelWrapper(BlockStateModel model, List<BlockTintSource> tints, Matrix4fc transformation) {
this.model = model;
this.tints = tints;
this.transformation = transformation;
}
@Override
public void update(BlockModelRenderState output, BlockState blockState, BlockDisplayContext displayContext, long seed) {
List<BlockStateModelPart> partList = output.setupModel(this.transformation, this.model.hasMaterialFlag(1));
this.model.collectParts(output.scratchRandomSource(seed), partList);
this.updateTints(output, blockState);
}
private void updateTints(BlockModelRenderState renderState, BlockState blockState) {
if (!this.tints.isEmpty()) {
IntList tintLayers = renderState.tintLayers();
for (BlockTintSource tint : this.tints) {
tintLayers.add(tint.color(blockState));
}
}
}
@OnlyIn(Dist.CLIENT)
public record Unbaked(BlockState model, List<BlockTintSource> tints, Optional<Transformation> transformation) implements BlockModel.Unbaked {
@Override
public BlockModel bake(BlockModel.BakingContext context, Matrix4fc transformation) {
BlockStateModel baseModel = context.modelGetter().apply(this.model);
Matrix4fc modelTransform = Transformation.compose(transformation, this.transformation);
return new BlockStateModelWrapper(baseModel, this.tints, modelTransform);
}
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
Transformation.compose()
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
实现
- 引用位置:
-
- 引用位置:
参数
- 引用位置: