Creating & Registering the Renderer
Once you've made your BlockEntity class and registered your BlockEntityType, you can now create the renderer and register it.
Making the class
- Simple
- Advanced
Simple Renderer Class
By default, GeckoLib does not require a custom renderer class, and you can instead just pass a new instance of
GeoBlockRenderer when registering your renderer.
If you do not require any custom handling of your block's rendering, this is the recommended approach.
E.G.
- Fabric
- Forge
- NeoForge
// Registering the renderer
context -> new GeoBlockRenderer<>(context, BlockEntityRegistry.EXAMPLE_BLOCK_ENTITY);
// Registering the renderer
context -> new GeoBlockRenderer<>(context, BlockEntityRegistry.EXAMPLE_BLOCK_ENTITY.get());
// Registering the renderer
context -> new GeoBlockRenderer<>(context, BlockEntityRegistry.EXAMPLE_BLOCK_ENTITY.get());
Advanced Renderer Class
This option is for creating a standalone renderer class that can override methods for additional handling.
Green highlights show added or modified lines of code for each step.
To begin, let's create a renderer class that extends GeoBlockRenderer:
public class ExampleBlockRenderer extends GeoBlockRenderer {
}
Then, we'll need to add in the generic types that the renderer requires:
For more information on this, see The generic types section.
public class ExampleBlockRenderer<R extends BlockEntityRenderState & GeoRenderState> extends GeoBlockRenderer<ExampleBlockEntity, R> {
}
And then we add in the constructor, passing in the BlockEntityType to automatically create the GeoModel:
public class ExampleBlockRenderer<R extends BlockEntityRenderState & GeoRenderState> extends GeoBlockRenderer<ExampleBlockEntity, R> {
public ExampleBlockRenderer(BlockEntityType<ExampleBlockEntity> blockEntityType) {
super(blockEntityType);
}
}
That's it! Now you need to register it.
The generic types
In step 2, we added in the generic types that the renderer requires.
But what are these generic types?
R- This is theBlockEntityRenderStatetype. For more information on RenderStates, see the RenderStates page.ExampleBlockEntity- This is yourBlockEntity! Replace this with yourBlockEntity's class name.
Registering the renderer
Once you have created your renderer class, you then need to register it. This differs depending on the modloader you are using.
Select your loader below for a link to that loader's documentation for registering BlockEntity renderers.
- Fabric
- Forge
- NeoForge
The asset files
If you followed the above instructions, GeckoLib will be looking for your asset files (.geo.json, .animation.json, .png)
in the /block/ subdirectory, named the same as your BlockEntity's registered id.
For example, if your BlockEntityType was registered as example_block, your files should be:
- Model:
resources/assets/<mod_id>/geckolib/models/block/example_block.geo.json- Animations:
resources/assets/<mod_id>/geckolib/animations/block/example_block.animation.json- Texture:
resources/assets/<mod_id>/textures/block/example_block.png
Where <mod_id> is the id of your mod.
See the Placing the Files page for more information on where to place these files.