Copy-Paste Templates
Just looking for some template code to copy-paste?
See below for some existing code you can use to get you started.
Item Class
- Combined Sources
- Split Sources
public class ExampleItem extends Item implements GeoItem {
private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this);
public ExampleItem(Properties properties) {
super(properties);
// Uncomment the below line to enable triggered animations
//GeoItem.registerSyncedAnimatable(this);
}
@Override
public void createGeoRenderer(Consumer<GeoRenderProvider> consumer) {
consumer.accept(new GeoRenderProvider() {
private final Supplier<GeoItemRenderer<ExampleItem>> renderer = Suppliers.memoize(() -> new GeoItemRenderer<>(ExampleItem.this));
@Override
public @Nullable GeoItemRenderer<ExampleItem> getGeoItemRenderer() {
return this.renderer.get();
}
});
}
@Override
public void registerControllers(final AnimatableManager.ControllerRegistrar controllers) {
}
@Override
public AnimatableInstanceCache getAnimatableInstanceCache() {
return this.geoCache;
}
}
Item Class
public class ExampleItem extends Item implements GeoItem {
public final MutableObject<GeoRenderProvider> geoRenderProvider = new MutableObject<>();
private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this);
public ExampleItem(Properties properties) {
super(properties);
// Uncomment the below line to enable triggered animations
//GeoItem.registerSyncedAnimatable(this);
}
@Override
public void createGeoRenderer(Consumer<GeoRenderProvider> consumer) {
consumer.accept(this.geoRenderProvider.getValue());
}
@Override
public void registerControllers(final AnimatableManager.ControllerRegistrar controllers) {
}
@Override
public AnimatableInstanceCache getAnimatableInstanceCache() {
return this.geoCache;
}
}
- Fabric
- Forge
- NeoForge
Client Setup
@Override
public void onInitializeClient() {
ItemRegistry.EXAMPLE_ITEM.geoRenderProvider.setValue(new GeoRenderProvider() {
private final Supplier<GeoItemRenderer<ExampleItem>> renderer = Suppliers.memoize(() -> new GeoItemRenderer<>(ExampleItem.this));
@Override
public @Nullable GeoItemRenderer<ExampleItem> getGeoItemRenderer() {
return this.renderer.get();
}
});
}
Client Setup
@SubscribeEvent
public static void registerRenderers(final EntityRenderersEvent.RegisterRenderers event) {
ItemRegistry.EXAMPLE_ITEM.geoRenderProvider.setValue(new GeoRenderProvider() {
private final Supplier<GeoItemRenderer<ExampleItem>> renderer = Suppliers.memoize(() -> new GeoItemRenderer<>(ExampleItem.this));
@Override
public @Nullable GeoItemRenderer<ExampleItem> getGeoItemRenderer() {
return this.renderer.get();
}
});
}
Client Setup
@SubscribeEvent
public static void registerRenderers(final EntityRenderersEvent.RegisterRenderers event) {
ItemRegistry.EXAMPLE_ITEM.geoRenderProvider.setValue(new GeoRenderProvider() {
private final Supplier<GeoItemRenderer<ExampleItem>> renderer = Suppliers.memoize(() -> new GeoItemRenderer<>(ExampleItem.this));
@Override
public @Nullable GeoItemRenderer<ExampleItem> getGeoItemRenderer() {
return this.renderer.get();
}
});
}
Item Renderer
- Simple
- Advanced
// Applying the renderer
() -> new GeoItemRenderer<>(ExampleItem.this);
- Fabric
- Forge
- NeoForge
public class ExampleItemRenderer extends GeoItemRenderer<ExampleItem> {
public ExampleItemRenderer() {
super(ItemRegistry.EXAMPLE_ITEM);
}
}
public class ExampleItemRenderer extends GeoItemRenderer<ExampleItem> {
public ExampleItemRenderer() {
super(ItemRegistry.EXAMPLE_ITEM.get());
}
}
public class ExampleItemRenderer extends GeoItemRenderer<ExampleItem> {
public ExampleItemRenderer() {
super(ItemRegistry.EXAMPLE_ITEM.get());
}
}
Item JSON
/assets/<modid>/items/<item_id>.json
{
"model": {
"type": "minecraft:special",
"base": "<modid>:item/<item_id>",
"model": {
"type": "geckolib:geckolib"
}
}
}
danger
Don't forget to change the <modid> and <item_id> values to match your mod and item!
Item Display JSON
/assets/<modid>/models/item/<item_id>.json
{
"parent": "builtin/entity",
"textures": {
"particle": "<modid>:item/<item_id>"
}
}
danger
Don't forget to change the <modid> and <item_id> values to match your mod and item!