Skip to content

[NeoForge 1.21.1] Critical Crash Fixes, Port Stabilization & ru_ru Locales#2513

Open
zevatov wants to merge 15 commits into
Lothrazar:trunk/1.21from
zevatov:trunk/1.21
Open

[NeoForge 1.21.1] Critical Crash Fixes, Port Stabilization & ru_ru Locales#2513
zevatov wants to merge 15 commits into
Lothrazar:trunk/1.21from
zevatov:trunk/1.21

Conversation

@zevatov
Copy link
Copy Markdown

@zevatov zevatov commented Apr 24, 2026

This PR stabilizes the port to NeoForge 1.21.1 by addressing multiple fatal crashes during recipe registration, world load, and networking synchronization.

Warning

Disclaimer: This port and the associated bug fixes were developed and debugged with the assistance of an AI agent. While critical crashes have been fixed and basic functionality verified, it has not been thoroughly tested across all edge cases. Proceed with understanding that some latent bugs may still exist.

Key Changes & Fixes:

  1. Networking EncoderException: Empty FluidStack: Fixed the server kick issue on world load. Replaced FluidStack.STREAM_CODEC with FluidStack.OPTIONAL_STREAM_CODEC in RecipeMelter and RecipeCrusher. Since flib's FluidTagIngredient hardcodes the strict codec, I implemented a custom inline StreamCodec bypass in RecipeSolidifier and RecipeGeneratorFluid to allow empty fluids to sync safely.
  2. Registry UnsupportedOperationException: Fixed the recipe manager crash. Swapped immutable NonNullList.of to a mutable list using NonNullList.create().addAll() in RecipeMelter and RecipeSolidifier.
  3. Client-Side Rendering NullPointerException: Fixed crashes when JEI tries to render custom fluids (e.g., xpjuice_bucket). Injected initializeClient() into all custom Fluid*Holder.java files to register IClientFluidTypeExtensions textures for DynamicFluidContainerModel.
  4. Spawner Seeker Bug: Fixed ItemProjectileDungeon instantiating the eye but never adding it to the level. Added the missing world.addFreshEntity(entityendereye) call.
  5. Crafting Stick GUI: Fixed the network packet payload by sending writeInt(slot) instead of a BlockPos.
  6. Localization: Fully translated and injected 234 missing ru_ru.json keys to achieve 100% localization parity.
  7. Data-Driven Audits: Removed obsolete 1.20 integration recipes that were causing JsonParseException and empty item crashes due to target mods altering their registries. Migrated legacy vanilla items (e.g., minecraft:scute -> minecraft:turtle_scute).

(A porting_summary.md and updated README.md have also been added to the root of the repository).

zevatov and others added 15 commits April 23, 2026 22:49
…rge port

Fixed final batch of compilation errors:
- MobEffectInstance: fixed broken paren/semicolon from previous regex passes
- RenderLaser/BeaconPotion: stubbed vertex chain (endVertex removed in 1.21.1)
- BlockBeaconRedstone/BlockPotion: removed getBeaconColorMultiplier override conflict
- ShieldCyclicItem: stubbed ShieldBlockEvent/LivingKnockBackEvent methods (API changed)
- FishingEnderEntity: stubbed getLootTable (API changed)
- SpikesDiamond: commented attackStrengthTicker (protected in 1.21.1)
- SpikesBlock/FireEntity: setSecondsOnFire -> igniteForSeconds
- BlockSimpleHopper: getShape/getInteractionShape protected -> Shapes.block() fallback
- BlockMagnetPanel: removed unreachable return statement
- ItemEvents: fixed EntityTickEvent->LivingEntity cast, shield event stubs
- ScreenUser: fixed setTooltip(String) -> Tooltip.create() wrapper
- ScreenCrafter: fixed partialTick variable name
- ContainerBreaker: exposed public tile field for ScreenBreaker
- CableBase: removed duplicate @OverRide annotation
- BlockScaffoldingReplace/BlockItemInfinite: hand -> getMainHandItem()
- Various: removed ForgeHooks/MinecraftForge/NetworkHooks legacy imports
…dd missing ru_ru translations, disable broken integration recipes, fix fluid container models
Updated the link for the required 'flib' library to point to the 1.21 compatible build.
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.

1 participant