NeoForge 1.21.1 port#369
Conversation
Port rewrite of getRecipeByGroupAndId bypassed getRecipesByGroup, losing the setId side-effect that saveAdditional needs to sync.
Dark-Arcana
left a comment
There was a problem hiding this comment.
Items to address before merge:
-
SideModeScreen.renderpaints the title under the background. The current call order is:render(...) → renderBackground(...) // dirt-blur + 9-patch drawCenteredString(title, ...) // title text super.render(...) // 1.21's Screen.render() calls this.renderBackground() AGAINScreen.renderin 1.21 callsthis.renderBackgroundinternally. The explicitrenderBackgroundcall and the title draw both happen beforesuper.render, so the second background pass insidesuper.renderpaints over the title. Fix: remove the explicitrenderBackground(...)call fromrender(...), callsuper.render(...)first, then calldrawCenteredStringto draw the title last. -
All datagen classes were deleted, not ported. The entire
datagenpackage was removed:BlockLootTables,BlockStateGenerator,BlockTagGenerator,DataGenerators,LocalizationGenerator,LootTableGenerator,RecipeGenerator,RecipeUtils, the per-machine providers (Atomizer, Combiner, Compactor, Dissolver, Fission, Fusion, Liquifier), and the cross-mod sourcesChemlibRecipes.java,MinecraftRecipes.java,ThermalRecipes.java. NeoForge 1.21 still uses datagen.RecipeProvider,LanguageProvider,BlockStateProvider,BlockTagsProvider,ItemTagsProvider,LootTableProvider, and the rest all exist. All deleted classes must be restored against the 1.21 datagen APIs. Manually editing the committed JSON files is not acceptable. -
713 committed recipe JSONs reference
forge:tags that no longer exist. ChemLib PR #86 migrates its tag namespace fromforge:toc:(the NeoForge 1.21 Common namespace). Every"tag": "forge:dusts/iron"style reference undersrc/generated/resources/data/alchemistry/recipe/will silently fail to match at runtime. Verified bygit grep -E -l 'tag.*forge:' pr369 -- 'src/generated/resources/data/alchemistry/recipe/', which returns 713 files. After datagen is restored (item 2), regenerate the recipes against ChemLib 2.0.20'sc:tags. This will fix all 713 files automatically. -
License changed from
LGPLv2.1toGPL-2.0-only. ChemLib and AlchemyLib reformatted their license declarations toLGPL-2.1-only(same license, updated SPDX-id syntax). This PR changes the license from LGPL to GPL, which is a different license with different terms. This change is not authorized. Revert themod_licensevalue ingradle.propertiestoLGPL-2.1-onlyto match the companion mods. -
Patchouli dependency removed.
patchouli_versionis gone fromgradle.properties, and bothcompileOnlyandruntimeOnlyPatchouli dependencies are removed frombuild.gradle. The deletedLocalizationGeneratorstill referencedalchemistry.patchouli.book_nameandalchemistry.patchouli.landing_text, so the in-game guidebook is gone. Research whether Patchouli has a working NeoForge 1.21.1 port, or whether an alternative guidebook library (for example Modonomicon) is available for NeoForge 1.21.1. If a working option exists, restore the guidebook integration using that library. If no working guidebook library is available for NeoForge 1.21.1, document the loss of the guidebook in the changelog as a temporary regression and add a TODO comment in the code where the integration used to live. -
Config.loadConfigis dead code. Same issue as ChemLib PR #86. NeoForge 1.21'sModContainer.registerConfighandles loading automatically. Delete the emptyloadConfigmethod and remove theConfig.loadConfig(...)call from theAlchemistryconstructor. -
assemble(...)override removed fromAtomizerRecipe,CombinerRecipe,CompactorRecipe, andFusionRecipe. The old override returned the recipe output. The new code only overridesgetResultItem(HolderLookup.Provider). AlchemyLib'sAbstractProcessingRecipe.assemble(RecipeInput, HolderLookup.Provider)default returnsItemStack.EMPTY. JEI and the block entities callgetOutput()directly, so internal behavior is unaffected. However, any external consumer (other mods, KubeJS scripts) that callsrecipe.assemble(...)now receivesItemStack.EMPTYinstead of the output. Restore theassemble(...)overrides on all four recipe classes. -
Release notes for datapack authors. The recipe
resultschema changed:"item": "..."becomes"id": "...", and fluid"amount"is now an integer instead of a string. Any datapack that overrides Alchemistry recipes must update to the new schema.
- Fix SideModeScreen render order so title isn't repainted over - Restore deleted datagen package against 1.21 RecipeOutput API - Regenerate recipes against ChemLib c: tag namespace - Revert mod_license to LGPL-2.1-only - Restore Patchouli guidebook on 1.21.1-93-NEOFORGE - Drop dead Config.loadConfig and its call site - Restore assemble() override on Atomizer/Combiner/Compactor/Fusion recipes - Document 1.21.1 datapack schema changes in changelog
Ports Alchemistry from Forge 1.20.1 to NeoForge 1.21.1 (Java 21). No gameplay, recipe, or content changes — same elements, same compounds, same behavior.