Interface BlockStateModelExtension
- All Known Subinterfaces:
net.minecraft.client.renderer.block.model.BlockStateModel
,DynamicBlockStateModel
- All Known Implementing Classes:
CompositeBlockModel
,DelegateBlockStateModel
,FullPotsAccessorDemo.ClientHandler.DioritePotModel
,MegaModelTest.TransformingModelWrapper
,TRSRTransformerTest.MyBakedModel
-
Method Summary
Modifier and TypeMethodDescriptiondefault List
<net.minecraft.client.renderer.block.model.BlockModelPart> collectParts
(net.minecraft.world.level.BlockAndTintGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, net.minecraft.util.RandomSource random) Helper to collects the parts of the model into a new list.default void
collectParts
(net.minecraft.world.level.BlockAndTintGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, net.minecraft.util.RandomSource random, List<net.minecraft.client.renderer.block.model.BlockModelPart> parts) Collects the parts of the model that should be rendered.default @Nullable Object
createGeometryKey
(net.minecraft.world.level.BlockAndTintGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, net.minecraft.util.RandomSource random) Collects all the data used by the model to produce renderable geometry.default net.minecraft.client.renderer.texture.TextureAtlasSprite
particleIcon
(net.minecraft.world.level.BlockAndTintGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) Returns the particle icon.private net.minecraft.client.renderer.block.model.BlockStateModel
self()
-
Method Details
-
self
private net.minecraft.client.renderer.block.model.BlockStateModel self() -
createGeometryKey
@Nullable default @Nullable Object createGeometryKey(net.minecraft.world.level.BlockAndTintGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, net.minecraft.util.RandomSource random) Collects all the data used by the model to produce renderable geometry. The returned object encapsulates which parts of the world state the model depends on.This allows the geometry produced previously by a model to be reused, provided that the key matches. The key can be used to compare the geometry of different models. If this model forwards to a single other model, it can directly return its geometry key. Otherwise, it should use a custom type specific to the model.
The passed in
level
,pos
andrandom
parameters should not be put directly into the returned key. Only the relevant information should be extracted so that the same key is yielded as often as possible.The default implementation returns
null
, meaning the model does not implement this method. A model that wishes to override this method must therefore not return null, even if the model does not use any passed in state.- Returns:
- an object collecting all the data that influences the geometry of this model;
can be any object as long as it implements
Object.hashCode()
andObject.equals(Object)
correctly.
-
collectParts
default void collectParts(net.minecraft.world.level.BlockAndTintGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, net.minecraft.util.RandomSource random, List<net.minecraft.client.renderer.block.model.BlockModelPart> parts) Collects the parts of the model that should be rendered.Typically called on a meshing worker thread, with a snapshot of world state. To access block entity data, use
IBlockGetterExtension.getModelData(BlockPos)
on the passed level. Avoid accessing or manipulating the block entities directly as they are not thread safe. Other world state is safe to access.The parameters passed to this method might not be what the model expects. For example, the model data might be missing or coming from a different/outdated block entity, the block state in the level might be different from the one passed in, and so on... The model should handle these cases gracefully and return the best model it can (e.g. by returning a completely unconnected model, in the case of connected textures).
Calling
IBlockStateExtension.getAppearance(net.minecraft.world.level.BlockAndTintGetter, net.minecraft.core.BlockPos, net.minecraft.core.Direction, net.minecraft.world.level.block.state.BlockState, net.minecraft.core.BlockPos)
before accessing the block state is recommended.- Parameters:
level
- a level to query block entity data or other world statepos
- the position of the block being renderedstate
- the state of the block being renderedrandom
- a random source for random model variationsparts
- the list that should receive all parts to be rendered
-
collectParts
@NonExtendable default List<net.minecraft.client.renderer.block.model.BlockModelPart> collectParts(net.minecraft.world.level.BlockAndTintGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, net.minecraft.util.RandomSource random) Helper to collects the parts of the model into a new list. -
particleIcon
default net.minecraft.client.renderer.texture.TextureAtlasSprite particleIcon(net.minecraft.world.level.BlockAndTintGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) Returns the particle icon.Block entity data can be accessed using
IBlockGetterExtension.getModelData(BlockPos)
.
-