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 ExampleArmorItem extends Item implements GeoItem {
private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this);
public ExampleArmorItem(ArmorMaterial material, ArmorType type, Properties properties) {
super(properties.humanoidArmor(material, type));
// 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<GeoArmorRenderer<ExampleArmorItem>> renderer = Suppliers.memoize(() -> new GeoArmorRenderer<>(ExampleArmorItem.this));
@Override
public @Nullable GeoArmorRenderer<?, ?> getGeoArmorRenderer(ItemStack itemStack, EquipmentSlot equipmentSlot) {
return this.renderer.get();
}
});
}
@Override
public void registerControllers(final AnimatableManager.ControllerRegistrar controllers) {
}
@Override
public AnimatableInstanceCache getAnimatableInstanceCache() {
return this.geoCache;
}
}
Item Class
public class ExampleArmorItem extends Item implements GeoItem {
public final MutableObject<GeoRenderProvider> geoRenderProvider = new MutableObject<>();
private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this);
public ExampleArmorItem(ArmorMaterial material, ArmorType type, Properties properties) {
super(properties.humanoidArmor(material, type));
// 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<GeoArmorRenderer<ExampleItem>> renderer = Suppliers.memoize(() -> new GeoArmorRenderer<>(ItemRegistry.EXAMPLE_ARMOR_ITEM));
@Override
public @Nullable GeoArmorRenderer<?, ?> getGeoArmorRenderer(ItemStack itemStack, EquipmentSlot equipmentSlot) {
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<GeoArmorRenderer<ExampleItem>> renderer = Suppliers.memoize(() -> new GeoArmorRenderer<>(ItemRegistry.EXAMPLE_ARMOR_ITEM.get()));
@Override
public @Nullable GeoArmorRenderer<?, ?> getGeoArmorRenderer(ItemStack itemStack, EquipmentSlot equipmentSlot) {
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<GeoArmorRenderer<ExampleItem>> renderer = Suppliers.memoize(() -> new GeoArmorRenderer<>(ItemRegistry.EXAMPLE_ARMOR_ITEM.get()));
@Override
public @Nullable GeoArmorRenderer<?, ?> getGeoArmorRenderer(ItemStack itemStack, EquipmentSlot equipmentSlot) {
return this.renderer.get();
}
});
}
Armor Renderer
- Simple
- Advanced
// Applying the renderer
() -> new GeoArmorRenderer<>(ExampleArmorItem.this);
public class ExampleArmorRenderer<R extends HumanoidRenderState & GeoRenderState> extends GeoArmorRenderer<ExampleArmorItem, R> {
public ExampleArmorRenderer(Item item) {
super(item);
}
}