
Remap IDs
Redirect item, block, entity, fluid, tag, recipe, and loot table IDs to alternative IDs at runtime
122
2
RemapIDs 1.3.0 (Fabric 1.21.1)
release3 апреля 2026 г.1.3.0
Fixed
- Modded remap targets not found in registry (#1) — Remapping to modded IDs (e.g.
minecraft:copper_block → create:brass_block) would fail with "not found in item/block registry" and skip the remap. Three separate issues caused this:RemapValidatorpermanently removed entries for targets not yet registered at validation time. Validation is now non-destructive (warn-only) — entries are preserved and validated at actual injection time.- On Forge, the
MappedRegistry.freeze()hook fired during bootstrap on the Render thread, racing with mod loading on worker threads. Modded content wasn't registered yet whenfinalizeIfPending()ran. Finalization and alias injection are now triggered fromFMLLoadCompleteEvent, which is guaranteed to fire after allRegisterEventhandlers complete. - On Forge 1.20.1, modded entries live in
ForgeRegistries, not in vanillaMappedRegistry. Target lookups now go throughForgeRegistries.BLOCKS/ITEMS/etc.instead of the vanilla registry maps.
Added
- Live vanilla block/item remapping — Remapping existing vanilla IDs to modded IDs (e.g.
minecraft:copper_block → create:brass_block) now works correctly. Block state IDs are remapped inBlock.BLOCK_STATE_REGISTRYso network serialization writes target state IDs instead of crashing with-1. - Block state property matching — When remapping between blocks with compatible properties (e.g.
axis,waterlogged), matching property values are preserved on the target state. Unmatched properties fall back to the target block's defaults. IdMapperAccessor(all loaders) — Mixin accessor forBlock.BLOCK_STATE_REGISTRYinternals, enabling block state ID remapping without corrupting the reverse lookup table.MappedRegistryAccessor(Forge) — Mixin accessor forMappedRegistry.byLocation/byKey, used by the newRegistryAliasInjector.RegistryAliasInjector(Forge) — Dedicated alias injection helper that uses ForgeRegistries for target lookup and injects into vanilla MappedRegistry where possible.
Changed
- Forge alias injection moved out of
MappedRegistryMixin— Registry alias injection on Forge is now handled byRegistryAliasInjectortriggered fromFMLLoadCompleteEvent, replacing the unreliablefreeze()hook. Other loaders retain thefreeze()-based approach.
RemapIDs 1.3.0 (Forge 1.20.1)
release3 апреля 2026 г.1.3.0
Fixed
- Modded remap targets not found in registry (#1) — Remapping to modded IDs (e.g.
minecraft:copper_block → create:brass_block) would fail with "not found in item/block registry" and skip the remap. Three separate issues caused this:RemapValidatorpermanently removed entries for targets not yet registered at validation time. Validation is now non-destructive (warn-only) — entries are preserved and validated at actual injection time.- On Forge, the
MappedRegistry.freeze()hook fired during bootstrap on the Render thread, racing with mod loading on worker threads. Modded content wasn't registered yet whenfinalizeIfPending()ran. Finalization and alias injection are now triggered fromFMLLoadCompleteEvent, which is guaranteed to fire after allRegisterEventhandlers complete. - On Forge 1.20.1, modded entries live in
ForgeRegistries, not in vanillaMappedRegistry. Target lookups now go throughForgeRegistries.BLOCKS/ITEMS/etc.instead of the vanilla registry maps.
Added
- Live vanilla block/item remapping — Remapping existing vanilla IDs to modded IDs (e.g.
minecraft:copper_block → create:brass_block) now works correctly. Block state IDs are remapped inBlock.BLOCK_STATE_REGISTRYso network serialization writes target state IDs instead of crashing with-1. - Block state property matching — When remapping between blocks with compatible properties (e.g.
axis,waterlogged), matching property values are preserved on the target state. Unmatched properties fall back to the target block's defaults. IdMapperAccessor(all loaders) — Mixin accessor forBlock.BLOCK_STATE_REGISTRYinternals, enabling block state ID remapping without corrupting the reverse lookup table.MappedRegistryAccessor(Forge) — Mixin accessor forMappedRegistry.byLocation/byKey, used by the newRegistryAliasInjector.RegistryAliasInjector(Forge) — Dedicated alias injection helper that uses ForgeRegistries for target lookup and injects into vanilla MappedRegistry where possible.
Changed
- Forge alias injection moved out of
MappedRegistryMixin— Registry alias injection on Forge is now handled byRegistryAliasInjectortriggered fromFMLLoadCompleteEvent, replacing the unreliablefreeze()hook. Other loaders retain thefreeze()-based approach.
RemapIDs 1.3.0 (Fabric 1.20.1)
release3 апреля 2026 г.1.3.0
Fixed
- Modded remap targets not found in registry (#1) — Remapping to modded IDs (e.g.
minecraft:copper_block → create:brass_block) would fail with "not found in item/block registry" and skip the remap. Three separate issues caused this:RemapValidatorpermanently removed entries for targets not yet registered at validation time. Validation is now non-destructive (warn-only) — entries are preserved and validated at actual injection time.- On Forge, the
MappedRegistry.freeze()hook fired during bootstrap on the Render thread, racing with mod loading on worker threads. Modded content wasn't registered yet whenfinalizeIfPending()ran. Finalization and alias injection are now triggered fromFMLLoadCompleteEvent, which is guaranteed to fire after allRegisterEventhandlers complete. - On Forge 1.20.1, modded entries live in
ForgeRegistries, not in vanillaMappedRegistry. Target lookups now go throughForgeRegistries.BLOCKS/ITEMS/etc.instead of the vanilla registry maps.
Added
- Live vanilla block/item remapping — Remapping existing vanilla IDs to modded IDs (e.g.
minecraft:copper_block → create:brass_block) now works correctly. Block state IDs are remapped inBlock.BLOCK_STATE_REGISTRYso network serialization writes target state IDs instead of crashing with-1. - Block state property matching — When remapping between blocks with compatible properties (e.g.
axis,waterlogged), matching property values are preserved on the target state. Unmatched properties fall back to the target block's defaults. IdMapperAccessor(all loaders) — Mixin accessor forBlock.BLOCK_STATE_REGISTRYinternals, enabling block state ID remapping without corrupting the reverse lookup table.MappedRegistryAccessor(Forge) — Mixin accessor forMappedRegistry.byLocation/byKey, used by the newRegistryAliasInjector.RegistryAliasInjector(Forge) — Dedicated alias injection helper that uses ForgeRegistries for target lookup and injects into vanilla MappedRegistry where possible.
Changed
- Forge alias injection moved out of
MappedRegistryMixin— Registry alias injection on Forge is now handled byRegistryAliasInjectortriggered fromFMLLoadCompleteEvent, replacing the unreliablefreeze()hook. Other loaders retain thefreeze()-based approach.
RemapIDs 1.3.0 (NeoForge 1.21.1)
release3 апреля 2026 г.1.3.0
Fixed
- Modded remap targets not found in registry (#1) — Remapping to modded IDs (e.g.
minecraft:copper_block → create:brass_block) would fail with "not found in item/block registry" and skip the remap. Three separate issues caused this:RemapValidatorpermanently removed entries for targets not yet registered at validation time. Validation is now non-destructive (warn-only) — entries are preserved and validated at actual injection time.- On Forge, the
MappedRegistry.freeze()hook fired during bootstrap on the Render thread, racing with mod loading on worker threads. Modded content wasn't registered yet whenfinalizeIfPending()ran. Finalization and alias injection are now triggered fromFMLLoadCompleteEvent, which is guaranteed to fire after allRegisterEventhandlers complete. - On Forge 1.20.1, modded entries live in
ForgeRegistries, not in vanillaMappedRegistry. Target lookups now go throughForgeRegistries.BLOCKS/ITEMS/etc.instead of the vanilla registry maps.
Added
- Live vanilla block/item remapping — Remapping existing vanilla IDs to modded IDs (e.g.
minecraft:copper_block → create:brass_block) now works correctly. Block state IDs are remapped inBlock.BLOCK_STATE_REGISTRYso network serialization writes target state IDs instead of crashing with-1. - Block state property matching — When remapping between blocks with compatible properties (e.g.
axis,waterlogged), matching property values are preserved on the target state. Unmatched properties fall back to the target block's defaults. IdMapperAccessor(all loaders) — Mixin accessor forBlock.BLOCK_STATE_REGISTRYinternals, enabling block state ID remapping without corrupting the reverse lookup table.MappedRegistryAccessor(Forge) — Mixin accessor forMappedRegistry.byLocation/byKey, used by the newRegistryAliasInjector.RegistryAliasInjector(Forge) — Dedicated alias injection helper that uses ForgeRegistries for target lookup and injects into vanilla MappedRegistry where possible.
Changed
- Forge alias injection moved out of
MappedRegistryMixin— Registry alias injection on Forge is now handled byRegistryAliasInjectortriggered fromFMLLoadCompleteEvent, replacing the unreliablefreeze()hook. Other loaders retain thefreeze()-based approach.
RemapIDs 1.2.1 (Forge 1.20.1)
release2 апреля 2026 г.1.2.1
Fixed
- Tag remapping crash on Forge/Fabric 1.20.1 -
TagLoaderMixinwas injecting intoloadAndBuild(), which returns resolvedHolder.Referenceobjects, causing aClassCastException. Now correctly targetsload(), which returns rawEntryWithSourceentries. Also fixed on Fabric 1.20.1 where the same latent bug existed. - Forge world migration only handled
remapids:namespace -ForgeRegistryEventspassed the mod's own ID togetMappings(), soMissingMappingsEventonly caught missing entries with namespaceremapids:*. Now collects all source namespaces from the remap config and queries each one. This fixes remaps likecreate:brass_block → minecraft:copper_blockbeing silently ignored when Create is removed. - Forge registry lookups could cross-contaminate types -
ForgeRegistryMixinlooped through all registry types (block, item, fluid, entity_type) for everyForgeRegistry.getValue()call, so an item-only remap could incorrectly redirect a block registry lookup. Now determines the specific registry type from theForgeRegistryinstance and only checks that type. - Removed leftover debug logging on Forge - The Forge
RecipeManagerMixinhadLOGGER.info()calls for golden_apple recipe debugging and verbose per-invocation logging left from development. Cleaned up to match the other loaders'LOGGER.debug()level. JsonRemapper.rewriteCountthread safety - Changed from a plaininttoAtomicIntegerto prevent potential race conditions in the rewrite counter.
Создатели
Детали
Лицензия:GPL-3.0-only
Опубликован:3 недели назад
Обновлён:1 неделю назад