Skip to content

Changelog >=1.21.1

This document records API changes in the Registrum module across versions.


v2.0 (26.1) current

Added

APITypeDescription
GeneratorType<T>InterfaceMarker interface, replaces anonymous String generator types
ProviderType.RECIPE_RUNNERProviderRecipe runner, replaces direct use of RECIPE
ProviderType.MODELProviderUnified model entry point, replaces standalone BLOCKSTATE/ITEM_MODEL providers
ProviderType.ENCHANTMENT_TAGSProviderEnchantment tag generation
ProviderType.DAMAGE_TYPE_TAGSProviderDamage type tag generation
ProviderType.FLUID_TAGSProviderFluid tag generation
ProviderType.ENTITY_TAGSProviderEntity tag generation
RegistrumModelProviderClassNew model generator (extends ModelProvider)
RegistrumBlockModelGeneratorClassNew block model generator (extends BlockModelGenerators)
RegistrumItemModelGeneratorClassNew item model generator (extends ItemModelGenerators)
RegistrumLegacyBlockModelBuilderClassLegacy block model builder
RegistrumRecipeRunnerClassRecipe runner (extends RecipeProvider.Runner)
RegistrumDatapackProviderClassDynamic datapack registration support
DataProviderInitializer.addDependency()MethodProvider dependency declaration
ProviderType.createGenerator(String)MethodCreate GeneratorType from ProviderType
GeneratorType composition patternPatternRECIPE = RECIPE_RUNNER.createGenerator("recipe")
@FieldsAreNonnullByDefaultAnnotationFieldsAreNonnullByDefault support (migrated from Registrate)

Changed

APIBefore (1.21.1)After (26.1)Impact
ProviderType.BLOCKSTATEDirectly uses RegistrumBlockstateProviderMODEL.createGenerator("blockstate")breaking
ProviderType.ITEM_MODELDirectly uses RegistrumItemModelProviderMODEL.createGenerator("item_model")breaking
ProviderType.RECIPEDirectly uses RegistrumRecipeProviderRECIPE_RUNNER.createGenerator("recipe")breaking
RegistrumBlockstateProviderPresent (extends BlockStateProvider)Removedbreaking
RegistrumItemModelProviderPresent (extends ItemModelProvider)Removedbreaking
RegistrumRecipeProviderextends RecipeProviderextends RecipeProvider, implements RecipeOutputbehavior
RegistrumDataProvider.ContextContains ExistingFileHelperNo ExistingFileHelper; uses PackOutput directlybreaking
Generator package structureproviders/RegistrumXxxProvider.javaproviders/generators/RegistrumXxxGenerator.javarefactor

Deprecated

APIDescription
Legacy register(String, NonNullBiFunction, ...)Replaced by the SimpleServerDataFactory pattern

Removed

APIDescription
RegistrumBlockstateProviderReplaced by RegistrumBlockModelGenerator
RegistrumItemModelProviderReplaced by RegistrumItemModelGenerator
RegistrumProviderDelegateNo longer needed; uses GeneratorType composition
ProviderType.Context.existingFileHelperReplaced by PackOutput

Migration Guide

java
// 1.21.1: Legacy generators
import dev.anvilcraft.lib.v2.registrum.providers.RegistrumBlockstateProvider;
import dev.anvilcraft.lib.v2.registrum.providers.RegistrumItemModelProvider;
import dev.anvilcraft.lib.v2.registrum.providers.RegistrumRecipeProvider;

builder.blockstate(() -> (ctx, gen) -> { ... });
builder.model(() -> (ctx, gen) -> { ... });
builder.recipe((ctx, gen) -> { ... });

// 26.1: New generators
import dev.anvilcraft.lib.v2.registrum.providers.generators.RegistrumBlockModelGenerator;
import dev.anvilcraft.lib.v2.registrum.providers.generators.RegistrumItemModelGenerator;
import dev.anvilcraft.lib.v2.registrum.providers.generators.RegistrumRecipeProvider;

// API call conventions unchanged (AbstractRegistrum internally adapted)
builder.blockstate(() -> (ctx, gen) -> { ... });
builder.model(() -> (ctx, gen) -> { ... });
builder.recipe((ctx, gen) -> { ... });

v2.0 (1.21.1) initial

Initial Release -- All New

CategoryAPIDescription
EntryRegistrum.create(String)Create a Registrum instance
CoreAbstractRegistrum<S>Registration engine base class
CoreBuilder<R,T,P,S>Builder root interface
BlockBlockBuilder<T,P>Block builder
ItemItemBuilder<T,P>Item builder
BlockEntityBlockEntityBuilder<T,P>Block entity type builder
EntityEntityBuilder<T,P>Entity type builder
MenuMenuBuilder<T,SC,P>Menu type builder
FluidFluidBuilder<T,P>Fluid builder
GenericNoConfigBuilder<R,T,P>No-configuration builder
EntryRegistryEntry<R,S>Base registration entry
EntryItemProviderEntry<R,T>Item provider entry
EntryBlockEntry<T>Block entry
EntryItemEntry<T>Item entry
EntryBlockEntityEntry<T>Block entity entry
EntryEntityEntry<T>Entity entry
EntryMenuEntry<T>Menu entry
EntryFluidEntry<T>Fluid entry
EntryLazyRegistryEntry<R,T>Lazy entry reference
GeneratorRegistrumBlockstateProviderBlock state provider (removed in 26.1)
GeneratorRegistrumItemModelProviderItem model provider (removed in 26.1)
GeneratorRegistrumRecipeProviderRecipe provider
GeneratorRegistrumLootTableProviderLoot table provider
GeneratorRegistrumAdvancementProviderAdvancement provider
GeneratorRegistrumDataMapProviderDataMap provider
GeneratorRegistrumLangProviderLanguage file provider
GeneratorRegistrumTagsProviderTag provider
GeneratorRegistrumItemTagsProviderItem tags provider
GeneratorRegistrumGenericProviderGeneric provider
UtilityCreativeModeTabModifierCreative tab modifier
UtilityDataIngredientData generation recipe ingredient
UtilityOneTimeEventReceiverOne-time event receiver
UtilityRegistrumDistExecutorPhysical-side dispatch executor
UtilitySequence<T>Sequence building utility
UtilityDebugMarkersDebug log markers

Version Comparison Quick Reference

Feature1.21.126.1Notes
Registrum.create()yesyes
object() / get() / getAll()yesyes
simple() / generic()yesyes
block() / item()yesyes
entity() / blockEntity() / menu()yesyes
fluid()yesyes
defaultCreativeTab()yesyes
addRegisterCallback()yesyes
makeRegistry() / makeDatapackRegistry()yesyes
addLang() / addRawLang()yesyes
transform()yesyes
skipErrors()yesyes
getDataProvider()yesyesInternal implementation changed
setDataGenerator() / addDataGenerator()yesyes
getDataGenInitializer()yesyes26.1 supports addDependency
BiomeBuildercommented outcommented outNot enabled in either version
Block model generation (blockstate())RegistrumBlockstateProviderRegistrumBlockModelGeneratorbreaking
Item model generation (model())RegistrumItemModelProviderRegistrumItemModelGeneratorbreaking
Recipe generation (recipe())RegistrumRecipeProviderRegistrumRecipeProvider (via Runner)changed
GeneratorTypenoyes
ProviderType.createGenerator()noyes
Enchantment tags ENCHANTMENT_TAGSnoyes
Damage type tags DAMAGE_TYPE_TAGSnoyes
Fluid tags FLUID_TAGSnoyes
Entity tags ENTITY_TAGSnoyes
DataProviderInitializer.addDependency()noyes

Released under the CC-BY-NC-SA 4.0 License.