Commit Graph

75 Commits

Author SHA1 Message Date
Juuz
5f6891992a Merge remote-tracking branch 'upstream/exp/1.13' into dev/1.13
# Conflicts:
#	build.gradle
#	gradle/libs.versions.toml
#	src/main/java/net/fabricmc/loom/LoomGradleExtension.java
#	src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java
#	src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java
#	src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionImpl.java
#	src/main/java/net/fabricmc/loom/task/RemapJarTask.java
2025-11-03 13:51:55 +02:00
modmuss
577e5c8bfd Add 'fabric.loom.disableObfuscation' property to disable all remapping. (#1409)
* Add 'fabric.loom.disableObfuscation' property

* More work, the test passes now.

* Fix
2025-10-30 20:11:52 +00:00
Juuz
1479c65cc5 Merge remote-tracking branch 'upstream/dev/1.12' into exp/1.12
# Conflicts:
#	build.gradle
#	src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java
#	src/main/java/net/fabricmc/loom/configuration/mods/AccessWidenerAnalyzeVisitorProvider.java
#	src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java
#	src/main/java/net/fabricmc/loom/extension/MixinExtensionApiImpl.java
#	src/main/java/net/fabricmc/loom/extension/MixinExtensionImpl.java
#	src/main/java/net/fabricmc/loom/task/launch/GenerateDLIConfigTask.java
#	src/main/java/net/fabricmc/loom/util/gradle/GradleUtils.java
#	src/main/resources/log4j2.fabric.xml
#	src/test/resources/projects/multiproject/build.gradle
2025-10-29 12:31:21 +02:00
modmuss
2dd467bdb7 Remove isRootProject from extension as it can hide Project.getRootProject when in the loom extension block. (#1381) 2025-10-05 09:53:49 +01:00
Juuz
044eb9161f Remove remaining Guava usages 2025-10-01 01:46:59 +03:00
Juuz
96b1497f29 Merge remote-tracking branch 'upstream/exp/1.12' into exp/1.12
# Conflicts:
#	build.gradle
#	gradle/runtime.libs.versions.toml
#	src/main/java/net/fabricmc/loom/build/nesting/JarNester.java
#	src/main/java/net/fabricmc/loom/build/nesting/NestableJarGenerationTask.java
#	src/main/java/net/fabricmc/loom/configuration/mods/ModConfigurationRemapper.java
#	src/main/java/net/fabricmc/loom/configuration/providers/mappings/tiny/MappingsMerger.java
#	src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftProvider.java
#	src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/AbstractMappedMinecraftProvider.java
#	src/main/java/net/fabricmc/loom/extension/MixinExtensionApiImpl.java
#	src/main/java/net/fabricmc/loom/task/launch/GenerateDLIConfigTask.java
#	src/main/java/net/fabricmc/loom/task/service/LorenzMappingService.java
#	src/main/java/net/fabricmc/loom/util/Constants.java
2025-10-01 01:09:17 +03:00
Juuz
e76606425e Move most Architectury classes into dev.architectury.loom
The remaining classes are either API types like ModPlatform
or single classes that make sense in specific packages
next to e.g. other implementations of the same interface.
2025-10-01 00:14:20 +03:00
Juuz
8d9d4df65f Fix split official namespaces existing on versions where they don't make sense (#1361)
* Don't use clientOfficial and serverOfficial namespaces on versions with only one jar

Fixes #1360.

Renames an experimental API in IntermediateMappingsProvider:
getIsLegacyMinecraft -> getUseSplitOfficialNamespaces

* Add test for 0.30 with deobf mappings + no intermediate mappings

* Change split official ns check to Beta 1.0..<1.3 range check

* Fix javadoc

* Clarify comment in MinecraftVersionMeta
2025-09-03 11:49:22 +01:00
Juuz
57e853aa13 Make McpExecutor and GenerateForgePatchedSourcesTask config cache-compatible
- Added ForgeToolService to run tools in tasks
- Added AccessTransformerService to simplify applying ATs and
  to make the tool config cache-compatible
- Split McpExecutor into an execution stage (McpE) and
  a setup stage (McpExecutorBuilder)
- McpExecutor is now a service
- All StepLogic implementations are now services
2025-08-18 19:03:03 +03:00
Juuz
fe2c21c0ad Merge 1.11 2025-08-18 13:13:31 +03:00
modmuss
4165168558 Resolve libraries for all platforms when generating verification metadata. (#1286)
* Resolve libraries for all platforms when generating verification metadata.

* Fix build
2025-04-07 21:01:45 +01:00
Juuz
09174f0ad3 Merge 1.9 2024-12-06 19:35:18 +02:00
Juuz
77e79991fb Merge 1.8, part 9 2024-12-06 19:32:12 +02:00
Juuz
b263a7c537 Merge 1.8, part 8 2024-12-06 19:29:53 +02:00
shedaniel
24e5aeb201 Merge commit '3c3225900123390868a718f5553d552bd0385000' into dev/1.8 2024-11-16 19:27:08 +08:00
modmuss
1f28935221 Initial project isolation support (#1215)
* Enable project isolation

* Add test for COD

* Make spotless happy
2024-11-14 21:56:20 +00:00
Space Walker
e5b785ab41 Select jar configuration based on which sides are present (#1182)
* auto select jar configuration based on which sides are present

* move logic into jar configuration property convention
2024-09-30 14:37:25 +01:00
modmuss50
fa8a43b531 Remove configuration cache warning 2024-09-26 22:31:06 +01:00
modmuss
e4d4503e2a Update deps, suppress 8.11 warnings, remove self resolving dependency code (#1180)
* Update a handful of deps

* Fully remove deprecated SelfResolvingDependency support

* Work around Gradle 8.11 deprecation, lets deal with it later.
2024-09-26 22:29:43 +01:00
modmuss
b533dacba8 Remove multi project optimisation (#1159)
* Remove multi project optimisation

* Fix build

* Fix FAPI test
2024-08-14 10:59:18 +01:00
Juuz
6f08fa51ec Merge 1.7, part 1 2024-07-01 19:20:21 +03:00
modmuss
9a3b82c8a3 Initial config caching work (#1053) 2024-04-15 18:56:59 +01:00
shedaniel
479331d9cd Merge remote-tracking branch 'FabricMC/exp/1.6' into exp/1.6
# Conflicts:
#	gradle/libs.versions.toml
#	src/main/java/net/fabricmc/loom/LoomGradleExtension.java
#	src/main/java/net/fabricmc/loom/api/LoomGradleExtensionAPI.java
#	src/main/java/net/fabricmc/loom/build/nesting/IncludedJarFactory.java
#	src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java
#	src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MergedMinecraftProvider.java
#	src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftJarConfiguration.java
#	src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftProvider.java
#	src/main/java/net/fabricmc/loom/configuration/providers/minecraft/SingleJarMinecraftProvider.java
#	src/main/java/net/fabricmc/loom/extension/LoomFiles.java
#	src/main/java/net/fabricmc/loom/extension/LoomFilesBaseImpl.java
#	src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java
#	src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionImpl.java
#	src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java
#	src/main/java/net/fabricmc/loom/task/RemapJarTask.java
#	src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonFactory.java
2024-03-23 01:06:56 +09:00
Space Walker
3670ccb959 Support merging pre 1.3 Minecraft versions. (#1026)
Co-authored-by: modmuss50 <modmuss50@gmail.com>
2024-03-19 17:25:57 +00:00
shedaniel
3347cfdd4a Merge remote-tracking branch 'FabricMC/exp/1.6' into exp/1.6
# Conflicts:
#	.github/workflows/publish.yml
#	build.gradle
#	gradle/libs.versions.toml
#	src/main/java/net/fabricmc/loom/LoomGradleExtension.java
#	src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java
#	src/main/java/net/fabricmc/loom/configuration/ifaceinject/InterfaceInjectionProcessor.java
#	src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java
#	src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionImpl.java
#	src/main/java/net/fabricmc/loom/task/GenVsCodeProjectTask.java
#	src/test/resources/projects/kotlin/build.gradle.kts
2024-02-29 18:57:33 +09:00
modmuss
8250b509a4 Prepare for SelfResolvingDependency's removal & Update to Gradle 8.6 (#1038)
* Prepare for SelfResolvingDependency's removal
Update to Gradle 8.6

* Update docker images

* ProjectDependency is also a SRD

* Throw if layered mappings are created too late.
2024-02-03 23:26:33 +00:00
shedaniel
cea4b39f22 Fix merge conflicts 2023-12-26 18:45:04 +08:00
shedaniel
beb04d30f2 Merge remote-tracking branch 'FabricMC/exp/1.5' into exp/1.5
# Conflicts:
#	.github/workflows/publish.yml
#	gradle/libs.versions.toml
#	src/main/java/net/fabricmc/loom/LoomGradleExtension.java
#	src/main/java/net/fabricmc/loom/api/LoomGradleExtensionAPI.java
#	src/main/java/net/fabricmc/loom/build/nesting/IncludedJarFactory.java
#	src/main/java/net/fabricmc/loom/configuration/decompile/SingleJarDecompileConfiguration.java
#	src/main/java/net/fabricmc/loom/configuration/providers/mappings/tiny/TinyJarInfo.java
#	src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/AbstractMappedMinecraftProvider.java
#	src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/ProcessedNamedMinecraftProvider.java
#	src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java
#	src/main/java/net/fabricmc/loom/task/RemapTaskConfiguration.java
#	src/test/groovy/net/fabricmc/loom/test/unit/kotlin/KotlinRemapperClassloaderTest.groovy
2023-12-26 18:39:12 +08:00
modmuss
014a6fce2b Remapper extensions (#984)
* Remapper extension API

* Fix build

* More work

* Fixes, thanks Gradle.

* Build fix

* Cleanup
2023-12-15 09:47:26 +00:00
Juuz
a11b828380 NeoForge support (#166)
* Initial plumbing for NeoForge support

* Fix checkstyle

* Add ModPlatform.id

* Use NeoForge-specific cache

* Use NeoForge-specific dependency configuration

This is only for the "(neo)forge" configuration exposed
as API. The other configurations remain the same.

* Add test for basic NeoForge 1.20.2 projects

* Implement hacky fast track for NeoForge field migration

In other works, we skip field migrating for now.

* Disable patched decompilation task on Neo

* Disable mixin AP for building on NeoForge

* Many changes related to NeoForge mappings and remapping

* Code style and related fixes

* McpExecutor: Add support for downloading deps via Gradle

Also adds support for downloading a file without a repo
for NeoForm functions.

* Fix wrong configurations being used on NeoForge

* Fix mixin version detection on NeoForge

* Rename MinecraftPatchedProvider jar paths on NeoForge

* Test NeoForge against a client-only MC jar

* Add DFU for codecs, support NeoForge run config templates

* Centralise userdev config reading, support missing SAS

* Set up Shadow for bundling DFU

* Use correct name for NeoForm in cache files

* RemapJarTask: Fix check using isForgeLike for Forge

* MojangMappingsMerger: Complete and reorder mappings

* Fix SRG being used on NeoForge

* Fix SRG being used on NeoForge for ATs

* Use client pipeline for merged to avoid patch issues on Neo

* Update to architectury-loom-runtime 2.0

* Fix Minecraft jar name on Neo

* Fix MojangMappingsMerger having incomplete names

* Fix NeoForge mod dependency remapping using wrong mappings

* Quiet down MojangMappingsMerger

* Fix (Neo)Forge builtin coremods not being remapped

Fixes #146.

* Disable deprecated data generation API on NeoForge

* Use release version of the forge runtime

* Revert "Set up Shadow for bundling DFU"

This reverts commit 2bb8166744.

* Make NeoForge Field Migration work

* NeoForge shouldn't try to get datagen mods

* Fix checkstyle

* Remove mojang maven

* Split Forge and NeoForge extensions

* SimpleNeoForgeTest: Bump Neo version and fix Yarn version

* Remove resolved TODOs

* Re-enable joined NeoForm pipeline

* MPP: Rename srg -> intermediate jars

* Reintroduce namespace filtering for mapping trees

Should be a simple optimisation to avoid reading an
additional ns.

* ForgeRunTemplateTest: Fix code format

* Adapt SrgMerger into ForgeMappingsMerger (#169)

* Fix crash with NeoForge ext creation

* Adapt SrgMerger into ForgeMappingsMerger

* Update tiny-remapper

* Fix spotless

* Resolve reviews

* Fix checkstyle

* Remap ASMAPI.redirectFieldToMethod (#171)

* Remap ASMAPI.redirectFieldToMethod

* Move lastClassName outside the if

* Fix missing template variables in tests using forge/simple

* Add Java version to forge/simple test variables

* Disable naming service dependency on Neo

* Fix changing patch version not affecting mapped game jars

Fixes #167.

* Rename configuration: neoforge -> neoForge

---------

Co-authored-by: shedaniel <daniel@shedaniel.me>
2023-11-17 16:04:22 +02:00
Juuz
13cfbb9da5 Merge remote-tracking branch 'upstream/exp/1.3' into exp/1.3
# Conflicts:
#	build.gradle
#	src/main/java/net/fabricmc/loom/LoomGradleExtension.java
#	src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java
#	src/main/java/net/fabricmc/loom/configuration/decompile/SingleJarDecompileConfiguration.java
#	src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftJarConfiguration.java
#	src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftProvider.java
#	src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/IntermediaryMinecraftProvider.java
#	src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/NamedMinecraftProvider.java
#	src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java
2023-06-21 21:40:25 +03:00
modmuss
fe823ddb30 Add an internal API to allow 3rd party loom extensions to add library processors. (#906)
Stability of this API will not be guaranteed.
2023-06-15 20:14:52 +01:00
Juuz
b7b5d5023e Merge remote-tracking branch 'upstream/dev/1.1' into dev/1.1
# Conflicts:
#	build.gradle
#	src/test/groovy/net/fabricmc/loom/test/integration/FabricAPITest.groovy
#	src/test/groovy/net/fabricmc/loom/test/unit/kotlin/KotlinRemapperClassloaderTest.groovy
#	src/test/groovy/net/fabricmc/loom/test/unit/layeredmappings/LayeredMappingSpecBuilderTest.groovy
#	src/test/groovy/net/fabricmc/loom/test/unit/layeredmappings/MojangMappingLayerTest.groovy
#	src/test/resources/projects/dependencyResolutionManagement/settings.gradle
2023-04-03 17:43:30 +03:00
modmuss50
75a98a5038 Only force re-downloads when manually refreshing deps (#851) 2023-04-02 15:40:09 +01:00
Juuz
16e1eda2c6 Merge with Fabric 1.1, stage 7 2023-02-16 20:59:03 +02:00
Juuz
0314829e26 Merge with Fabric 1.1, stage 3 2023-02-16 01:02:58 +02:00
Juuz
81d1f5d562 Merge with Fabric 1.1, stage 1 2023-02-16 00:53:48 +02:00
modmuss50
63ecb88082 Gradle 8 tests, perf/memory optimisations (#796)
* Add gradle 8 tests
Reuse gradle home between tests
Misc perf and mem optimisations

* Fix build warning.

* Added multi mc version test

* Use server launcher in ServerRunner

Co-authored-by: Luna <62033805+Luna5ama@users.noreply.github.com>
2023-01-16 18:39:26 +00:00
modmuss50
f87320fae8 Add multi project optimisation option to allow opt into shared tiny remapper. (#747)
* Add multi project optimisation option to allow opting into shared tiny remapper.

* Review feedback and fixes
2022-11-01 21:36:41 +00:00
Juuz
8d54df26ca Remove LaunchProviderSettings (#103)
* Remove LaunchProviderSettings

Closes #99.

- Added new RunConfigSettings.forgeTemplate API
- Removed LaunchProviderSettings and loom.launches
- Removed most evaluateLater usages, only used for configuring the
  RunConfigSettings since Forge runs aren't resolved yet when they're
  created
- Didn't migrate Forge userdev stuff to runs, most of it still injects
  directly into DLI

* Fix Fabric

* Fix 1.14 - 1.16.5 Forge, add test for ForgeRunTemplate for those versions

* Move ConfigValue out of mcpconfig, clean up

* Add test for config values

* Stop replacing user config values with ours
2022-10-29 14:21:50 +03:00
modmuss50
06074ae73c Start on improved mappings service 2022-10-26 12:47:36 +01:00
modmuss50
ab4234330e First look at MinecraftJarProcessor API 2022-10-03 22:00:07 +01:00
Juuz
cf28130f2e Merge with Fabric 0.13, stage 6 2022-08-09 17:41:57 +03:00
Juuz
c5386d8795 Merge with Fabric 0.13, stage 5 2022-08-09 17:37:04 +03:00
Juuz
56995fd210 Merge with Fabric 0.13, stage 2 2022-08-09 17:25:34 +03:00
modmuss50
e561cca19a Split mod dependencies into client/common as required. 2022-08-04 08:56:37 +01:00
modmuss50
3913c2e897 Add a lock file around building the loom cache. Regenerate if the lock file exists.
This helps to ensure that failed or canceled builds do not cause the cache to be left in an undetectable invalid state.
2022-07-30 19:21:56 +01:00
modmuss50
c4c6de23e3 Rewrite download utils (#681)
- eTag support (It seems Mojang's CDN and our meta/maven do not support this right now)
- Age based caching.
- Sha1 based caching.
- HTTP(S) proxy settings should now be respected.
- The downloader has better awareness of offline mode and refresh deps, cleaning up the calling code a bit.
- Uses the new Java 11 HTTP client, provides async support for downloading multiple files
- Progress handling (TODO needs hooking up to gradle)
- Better compression support. Handled by [Methanol](https://mizosoft.github.io/methanol/) 
- Unit tested with a real web server.
2022-07-25 18:01:11 +01:00
shedaniel
b9905c322c Support JarJar (#93)
* Support JarJar

Signed-off-by: shedaniel <daniel@shedaniel.me>

* Use @Input instead @Internal and remove random lines

Signed-off-by: shedaniel <daniel@shedaniel.me>

* Resolve reviews

Signed-off-by: shedaniel <daniel@shedaniel.me>

* Turn them into records

Signed-off-by: shedaniel <daniel@shedaniel.me>
2022-07-18 01:09:57 +08:00
modmuss50
da2992e7d9 Configurable remap configs. (#674)
* First pass at configurable remap configs.

* No benefit to making it lazy: https://github.com/gradle/gradle/blob/v7.4.2/subprojects/plugins/src/main/java/org/gradle/api/plugins/BasePlugin.java#L104 ... fixes some stuff to make it work.
2022-06-25 21:38:43 +01:00