Skip to content

feat: add Forge 1.20.1 platform module - #14

Open
Meeuyt wants to merge 41 commits into
CooStack:multiplatformfrom
Meeuyt:port-1.20.1-forge
Open

Meeuyt wants to merge 41 commits into
CooStack:multiplatformfrom
Meeuyt:port-1.20.1-forge

Conversation

@Meeuyt

@Meeuyt Meeuyt commented Sep 20, 2026

Copy link
Copy Markdown
  • Add forge/ subproject with ForgeGradle 6.x config for MC 1.20.1
  • Add forge/build.gradle with Kotlin for Forge dependency
  • Add Forge entry point (CooParticlesAPIForge)
  • Add Forge platform helper, registry, networking stubs
  • Add Forge client/server listeners
  • Add Forge mixin files (copied from neoforge)
  • Add service provider files for ServiceLoader
  • Update settings.gradle to include forge module
  • Update gradle.properties with Forge 1.20.1 versions
  • Update root build.gradle with Forge plugin and repos

- Add forge/ subproject with ForgeGradle 6.x config for MC 1.20.1
- Abstract common module APIs: CommonCodec replaces StreamCodec/FriendlyByteBuf
- Update ServerNetworking/ClientNetworking interfaces to accept Any
- Add Forge-specific packet managers, network channel, and event listeners
- Port all Forge packet classes to 1.20.1 compatible APIs
- Update neoforge networking implementations for new interfaces
Meeuyt added 28 commits September 20, 2026 16:10
- Add CooIrisRenderState, CParticleForceResourceTable, CParticleCommandGlBuffer
- Add CParticleForceResource, CParticleForceResourceRegistry
- Add CParticleFluidResource, CParticleTextureResource
These classes are referenced but missing from the multiplatform branch.
- Add PacketByteBuf interface replacing MC 1.20.5+ FriendlyByteBuf
- Fix CParticleCommandGlBuffer upload signature (FloatArray + count)
- Add textureBinding/fluidBinding/slotFor/textureBindings/fluidBindings to CParticleForceResourceTable
- Add MAX_TEXTURE_RESOURCES to CParticleForceResourceTable
- Add bindCompute/resetCompute to CParticleTextureResource and CParticleFluidResource
- Add IrisSnapshot interface with all missing getters to CooIrisRenderState
- Add clearFinalColor() to CooIrisRenderState
…rfaces

- Move CParticleTextureResource and CParticleFluidResource from cparticle.compat to cparticle.force
- Add CParticleTextureBinding/CParticleFluidBinding interfaces with sampleTexture/sampleFluid
- Fix CParticleForceResourceTable.textureBinding/fluidBinding return types
- Add NullTextureBinding/NullFluidBinding no-op implementations
- Fix type inference in CParticleGpuSimulator emptyList calls
- Move CParticleTextureResource and CParticleFluidResource to cparticle.force package
- Make them extend CParticleForceResource to fix ArrayList type compatibility
- Implement CParticleTextureBinding/CParticleFluidBinding interfaces directly
- Fix wrong nested-class import syntax in resource stubs
- Use explicit local variable in CParticleEmitterBridge to avoid Kotlin synthetic bridge method issue
- Fix emptyList type inference in CParticleGpuSimulator
- Add beginFrame, captureSceneDepth, captureTerrainDepth, captureNoHandDepth,
  captureFinalColor, clear, clearFinalColor to CooIrisRenderState stub
- Import Iris types (GlFramebuffer, DepthTexture, RenderTargets) for method signatures
- Add @JvmStatic to all methods so Java mixin can call them statically
- Fix captureSceneDepth signature to accept DepthTexture? instead of Int
- Fix captureFinalColor signature to accept Any? for colorAttachment0
- Add missing import for DepthTexture, GlFramebuffer, RenderTargets
… signatures

- Create FinalPassRendererAccessor.java mixin accessor for FinalPassRenderer.getColorHolder()
- Fix captureSceneDepth signature to accept Int (texture ID) instead of DepthTexture
- RenderTargets.getDepthTexture() returns int, not DepthTexture object
The upstream multiplatform branch only has networking code in common/src/main/kotlin/...
and platform-specific overrides in neoforge/src/main/kotlin/.../platform/.
The Forge port commit incorrectly copied all network/ and network/buffer/ files
to neoforge with the same package names, causing Redeclaration errors.
- Replace all remaining FriendlyByteBuf/StreamCodec/CustomPacketPayload/ByteBufCodecs/RegistryFriendlyByteBuf usages in forge/
- Create Forge overrides for: CodecHelper, DisplayEntityRegistryHelper, RenderEntityRegistryHelper, Controlable*Effect classes, PostEffectBinding, PostEffectLifecycle
- Update common CodecHelper and DataHolderManager to use CommonStreamCodec instead of StreamCodec
- Remove streamCodec() override from Forge CooModParticles particle registration
- Fix Forge networking implementations (ForgeServerNetworking, ForgeClientNetworking, ForgeServerContext)
- Add Forge particle codec helper (ForgeCodecHelper.particleCodecOf) using writeToPacket/readFromPacket
- Trigger CI to verify :forge:compileKotlin
- Add net.minecraftforge.gradle plugin to root build.gradle (version 6.0.24)
- Add buildscript block to Forge module build.gradle with Forge maven repo
- Update gradle.properties: forge_version=1.20.1-46.0.14, loader range [46,)
- Fixes CI failure: 'Plugin net.minecraftforge.gradle was not found'
- Remove buildscript block from Forge build.gradle (not allowed with exclusiveContent)
- Add net.minecraftforge.gradle 6.0.24 to settings.gradle pluginManagement
- Fixes Gradle 8.x exclusive repository content restriction
- Remove exclusiveContent from Forge repository in settings.gradle
- Remove buildscript block from forge/build.gradle
- Fix sourceWithCommon task to not depend on non-existent sourcesJar in Forge module
- Add net.minecraftforge.gradle plugin to root build.gradle and settings.gradle
- Downgrade ForgeGradle from 6.0.24 to 5.2.5 (compatible with 1.20.1)
- Set minecraft.version to '1.20.1' in Forge build.gradle
- Remove exclusiveContent from Forge repo in settings.gradle
- Add buildscript block to forge/build.gradle with Forge maven repo
- Remove net.minecraftforge.gradle from settings.gradle pluginManagement
- ForgeGradle 5.2.5 uses legacy buildscript resolution, not pluginManagement
- Remove all exclusiveContent blocks from settings.gradle pluginManagement
- Add net.minecraftforge.gradle 5.2.5 to settings.gradle plugins
- Remove buildscript block from forge/build.gradle
- Fixes: 'When using exclusive repository content, you cannot add repositories to buildscript.repositories'
- ForgeGradle 6.0.24 supports both 1.20.1 and Gradle 8.x
- Update version in forge/build.gradle and settings.gradle
- Remove buildscript block (not needed with plugins DSL)
- Use parchment 1.20.1-2024.07.07 instead of 1.21.1 mappings
- Fixes 'Cannot remap' errors and '> version' evaluation failure
- ForgeGradle 6.0.x does not support Minecraft 1.20.1
- Restore buildscript block in forge/build.gradle
- Update settings.gradle pluginManagement
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