|
| 1 | +# NeoForge 1.21.1 Migration — Phase Plans |
| 2 | + |
| 3 | +Concrete, step-by-step migration plans for each phase of the Forge 1.20.1 → NeoForge 1.21.1 port. |
| 4 | + |
| 5 | +See [evaluation.md](../../../evaluation.md) for the comprehensive gap analysis that informed these plans. |
| 6 | + |
| 7 | +## Phases |
| 8 | + |
| 9 | +| Phase | Doc | Effort | Key Challenge | |
| 10 | +|-------|-----|--------|---------------| |
| 11 | +| 1 | [Build System](phase-1-build-system.md) | MEDIUM-HIGH | ForgeGradle → NeoGradle, Java 17 → 21 | |
| 12 | +| 1.5 | [Vanilla API Compatibility](phase-1.5-vanilla-api.md) | HIGH | Boat.Status physics rewrite, AttributeModifier, AbstractMinecart.Type removal | |
| 13 | +| 2 | [Mod Entrypoint & Registration](phase-2-registration.md) | MEDIUM | RegistryObject → DeferredHolder across 15 files | |
| 14 | +| 3 | [Networking](phase-3-networking.md) | MEDIUM | SimpleChannel → CustomPacketPayload records with StreamCodec | |
| 15 | +| 4 | [Capabilities](phase-4-capabilities.md) | CRITICAL | 14 getCapability() overrides, 15 LazyOptional fields, centralized RegisterCapabilitiesEvent | |
| 16 | +| 5 | [Entity Data & BlockEntity Serialization](phase-5-entity-data.md) | MEDIUM | defineSynchedData Builder pattern, HolderLookup.Provider on BlockEntity load/save | |
| 17 | +| 6 | [Data Components](phase-6-data-components.md) | HIGH | Codec design for TugRoute/LocoRoute, Item NBT → DataComponentType | |
| 18 | +| 7 | [Recipe & Data Generation](phase-7-recipe-datagen.md) | LOW-MEDIUM | RecipeOutput signature (NO Runner class in 1.21.1) | |
| 19 | +| 8 | [GUI / Screens](phase-8-gui-screens.md) | LOW-MEDIUM | NetworkHooks.openScreen() removal, RegisterMenuScreensEvent | |
| 20 | +| 9A | [Vanilla/NeoForge API Reworks](phase-9a-api-reworks.md) | MEDIUM | AbstractMinecart.Type physics rewrite, PartEntity relocation | |
| 21 | +| 9B | [Mechanical Cleanup](phase-9b-mechanical-cleanup.md) | LOW | 80x ResourceLocation find-and-replace | |
| 22 | +| 10 | [Create Mod Compatibility](phase-10-create-compat.md) | DEFERRED | Follow-up PR after Create for NeoForge 1.21.1 is available | |
| 23 | + |
| 24 | +## Execution Order |
| 25 | + |
| 26 | +Phases must be executed in order. Each phase gate requires `./gradlew build` to pass before proceeding to the next. |
| 27 | + |
| 28 | +``` |
| 29 | +Phase 1 → 1.5 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9A → 9B → 10 |
| 30 | +``` |
| 31 | + |
| 32 | +## Pre-Migration (Complete) |
| 33 | + |
| 34 | +The following pre-migration tasks were completed in run 561c8bb0: |
| 35 | +- Fixed defineId bug in FluidTankBargeEntity and FluidTankCarEntity |
| 36 | +- Removed dead EVENT_BUS.register(this) in ShippingMod |
| 37 | +- Replaced StallingCapability with instanceof pattern |
| 38 | +- Added JUnit 5 unit tests for SpringPhysicsUtil and route serialization |
0 commit comments