# skinsg multiloader notes Branch `multiloader` builds the mod for **Minecraft 1.20.1** on **Fabric** and **Forge** from one shared `common` source set. The Forge artifact includes optional compatibility for **3D Skin Layers 1.9.2**. It is a compile-only dependency and is not bundled into the resulting jar. `main` remains the original single-loader NeoForge 1.21.1 line. ## Layout - `common/` - shared config, GIF decoder, cape manager, mixins, and generic Brigadier command tree. - `fabric/` - Fabric client entrypoint and `fabric.mod.json`. - `forge/` - Forge client entrypoint and `mods.toml`. - `neoforge/` - retained scaffold, but not included in `enabled_platforms` for the 1.20.1 build. The old single-loader `src/` tree has been migrated into `common/`; do not run the migration helper again on this branch. ## Versions Configured in `gradle.properties`: - Minecraft `1.20.1` - Architectury API `9.2.14` - Fabric Loader `0.16.9` - Fabric API `0.92.5+1.20.1` - Forge `1.20.1-47.4.10` - Parchment `2023.09.03` - Java `17` ## Build ```bash ./gradlew build ``` Runtime jars are collected into: - `build/libs/skinsg-fabric-0.1.0.jar` - `build/libs/skinsg-forge-0.1.0.jar` The per-loader `build/libs` folders still contain intermediate/source/dev-shadow jars. ## 1.20.1 port details - `CapeMagicMixin` targets `AbstractClientPlayer#getCloakTextureLocation`, because 1.20.1 does not expose the 1.21 `PlayerSkin` return object. - `CapeManager` uses the 1.20.1 `new ResourceLocation(namespace, path)` constructor. - `skinsg.mixins.json` uses `JAVA_17`. - `settings.gradle` includes only platforms listed in `enabled_platforms`. ## Manual runtime checks Compile/build is verified, but actual rendering still needs an in-game client check: - Fabric 1.20.1 with Fabric API and Architectury API. - Forge 1.20.1-47.4.10 with Architectury API. - A configured `config/skinsg.json` `baseUrl` serving `GET /api/minecraft/cape/?gif`.