Skip to content

Port to NeoForge 1.21.1#370

Open
unh0lyalexzero wants to merge 10 commits into
SmashingMods:1.20.1from
unh0lyalexzero:port/neoforge-1.21.1
Open

Port to NeoForge 1.21.1#370
unh0lyalexzero wants to merge 10 commits into
SmashingMods:1.20.1from
unh0lyalexzero:port/neoforge-1.21.1

Conversation

@unh0lyalexzero

Copy link
Copy Markdown

Port to NeoForge 1.21.1

This pull request ports Alchemistry to NeoForge 21.1.228 for Minecraft 1.21.1, updating the codebase from its last Forge 1.20.1 release.

Key Changes

Build system

  • Migrated to NeoGradle 7 with NeoForge 21.1.228
  • Updated all Gradle dependencies to their 1.21.1 counterparts

Registry & API migration

  • All registries updated to NeoForge \DeferredRegister\ API
  • Replaced deprecated Forge capability/event APIs with NeoForge equivalents
  • Updated packet/network system to NeoForge's \IPayloadHandler\ pattern

Recipe system (critical fixes)

  • Fixed recipe ID assignment: in 1.21.1, IDs live in \RecipeHolder, not in serializers. Added \AbstractProcessingRecipe.setId()\ and patched \RecipeRegistry\ to inject IDs via \peek()\ before sorting
  • Fixed \ProbabilityGroup\ stream codec: 1.21.1's \ItemStack.STREAM_CODEC\ rejects empty stacks; added filter to exclude empty \ItemStack\s before encoding (previously \minecraft:air\ was used as a placeholder in dissolver recipes)
  • Migrated 5,749 recipe files to the 1.21.1 \data/alchemistry/recipe/\ path (singular)

JEI integration

  • Updated to JEI 19.x API (\IRecipeSlotView, new category registration)

General

  • Resolved all deprecated Forge API usages
  • Updated all mixin targets to match 1.21.1 class structure

Testing

  • Verified on a full 1.21.1 NeoForge modpack including JEI, Create, and other common mods
  • All processing recipes (Atomizer, Combiner, Compactor, Dissolver, Liquifier, Fission/Fusion) confirmed functional
  • No crashes on world load or during recipe use

Port authored by Alex Zero (unh0lyalexzero)

TonimatasDEV and others added 8 commits February 19, 2026 19:41
- Migrate build system from ForgeGradle to NeoGradle with NeoForge 21.1.228
- Update all registry calls to NeoForge DeferredRegister API
- Replace Forge-specific codec/network classes with NeoForge equivalents
- Fix RecipeRegistry: assign RecipeHolder ID via peek() before sorting (NPE fix)
- Fix ProbabilityGroup: filter empty ItemStacks before network serialization
  (EncoderException on client join with minecraft:air dissolver outputs)
- Migrate 5749 recipe files to 1.21.1 data format (singular recipe/ path)
- Update AbstractProcessingRecipe: add setId() to support RecipeHolder pattern
- Remove deprecated IForgeRegistry usages, migrate to vanilla registries
- Fix all recipe serializers to use new Codec/StreamCodec pattern
- Resolve packet handler migration to NeoForge SimpleChannel equivalent
- Port JEI integration to JEI 19.x API for 1.21.1
- Update item/block renderer hooks to new Minecraft 1.21 client API
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants