Commit Graph

60 Commits

Author SHA1 Message Date
KikuGie
7f95c3c60f Make fabric.mod.json path configurable at configuration stage. (#1364)
* Add `fabric.mod.json` path property.

* Add path provider integration tests.

* Separate fabric.mod.json reading methods and move selection to the helper method.

* Separate FMJ getter methods and add configuration to datagen and testmod settings.

* Remove the `fabricModJsonPath` property from Fabric API source sets

* Address review requests by fixing formatting and removing redundant changes

* Fix build

* Move tests to existing file, and remove var usage.

* Fix build :)

---------

Co-authored-by: modmuss50 <modmuss50@gmail.com>
2025-10-03 10:16:17 +01: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
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
Space Walker
039b435e5d use manifest name in file name instead of url hash (#1127) 2024-09-03 18:13:04 +01:00
modmuss
9157c22448 Inital remap jar configuration cache support (#1161)
* Move everything to the new service system

* Checkstyle

* Fix unit tests + make them use the internet less

* Some more fixes

* Split the mixin ap mapping handling out into its own service.

* Checkstyle

* Fixes

* Move mixin refmap handling to a service

* Minor changes
2024-08-20 12:51:47 +01:00
Space Walker
c5c52aba65 Use different cache files for custom manifest and metadata jsons (#1077)
* use different cache files for custom manifest and metadata jsons

* add properties for custom manifests to loom extension api

* expand manifests api with a priority queue

* add ApiStatus annotations where needed

* explain sort order in javadoc

* add getVersionMetaFileName function

* merge the two manifests locations together

* convert hash code to hex string

* fix metadata provider tests

* update priorities of built in manifests so they're first by default

* fix VersionsManifestAPI javadoc

* update comment in MinecraftMetadataProvider

* fix ManifestLocation.cacheFile

* deprecate and replace getCustomMinecraftManifest
2024-05-04 18:18:26 +01:00
modmuss
f0ca06f912 Cleanup MinecraftJarConfiguration (#1070)
* Cleanup MinecraftJarConfiguration

* Fixes

* Fixes
2024-03-11 11:36:52 +00:00
modmuss
b44e4ec3d5 Add API to get named minecraft jars. (#1063) 2024-03-10 13:37:45 +00:00
Jason Penilla
910963a81c Download intermediary using Gradle (#1042)
* Download intermediary using Gradle

* address review

* Remove ApiWrapper

* Use detached configuration
2024-02-08 22:20:10 +00: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
modmuss
5d2b75dc1d Remapper extension improvements (#1024)
* Remapper extension improvements

* Fix

* Fix generics
2024-01-16 16:27:51 +00:00
modmuss
ecc7e730e9 Read data generation modid from FMJ by default. And code cleanup. (#1008)
* Read data generation modid from FMJ by default. And code cleanup.

Closes #999

* Fix #1000
2023-12-20 15:52:13 +00:00
modmuss50
a6547244e9 Add loom.getMinecraftVersion()
Closes #982
2023-12-19 16:31:35 +00: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
Luke Bemish
0dc2d67317 Add extension option to configure known INVOKEDYNAMIC BSMs (#945)
* Set up configuration for known indy bsms

* Make ignoredIndyBsms apply to service remapper

* Add groovy indy instruction to default known BSMs

* Address feedback

---------

Co-authored-by: modmuss <modmuss50@gmail.com>
2023-09-09 13:21:14 +01:00
modmuss
6413a9312c Create RunConfigSettings with Gradle's object factory (#917)
* Create RunConfigSettings with Gradle's object factory

* Update src/main/java/net/fabricmc/loom/configuration/ide/RunConfigSettings.java

Co-authored-by: Juuz <6596629+Juuxel@users.noreply.github.com>

* Update FabricAPI test

* Fix version

* Actually fix test

* Just make the minimal changes for now

---------

Co-authored-by: Juuz <6596629+Juuxel@users.noreply.github.com>
2023-07-03 17:45:13 +01: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
da4b01427f Move access widener jar processor for new processor API. (#787) 2023-01-10 23:19:21 +00:00
modmuss50
00a3b7ff4e Move Iface injection to new MinecraftJarProcessor API 2022-10-26 12:51:08 +01:00
modmuss50
06074ae73c Start on improved mappings service 2022-10-26 12:47:36 +01:00
modmuss50
0036d81a3a Fixes to legacy jar processors. 2022-10-06 22:48:09 +01:00
modmuss50
24b727c84c More changes 2022-10-04 20:46:46 +01:00
modmuss50
ab4234330e First look at MinecraftJarProcessor API 2022-10-03 22:00:07 +01:00
modmuss50
1b4226aca9 Fix mods being always being applied to the main sourceset and not the target. (#719) 2022-09-11 15:58:28 +01:00
modmuss50
727c396cd9 Add getMappingsFile and getDecompileTask APIs for use by the MC Dev plugin. (#697) 2022-08-07 09:50:22 +01:00
modmuss50
e561cca19a Split mod dependencies into client/common as required. 2022-08-04 08:56:37 +01:00
modmuss50
53f239fd8e Remove shareCaches option, has not been used for a few versions.
Was basically designed for FabricAPI only, now the same is applied where possible to all projects in a much better fashion.
2022-07-25 18:39:39 +01:00
modmuss50
48fafb9a64 Remove unused properties. 2022-07-03 15:09:45 +01: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
modmuss50
f632dee2df Mod provided javadoc (#627) 2022-04-19 23:30:28 +01:00
modmuss50
febc999092 Merge branch 'exp/0.12' into dev/0.12 2022-04-16 00:16:59 +01:00
modmuss50
66ef9659a2 Fail hard with an error message when calling the wrong officialMojangMappings method.
Before this would have been a weird silent failure and resulted in bad mappings.
2022-04-16 00:06:56 +01:00
modmuss50
0a8b792564 Add DSL to configure mod class path groups. (#608)
* Add basic mod settings.

* Cleanup and review feedback.

* Add idea output dir support.

* Eclipse and vscode + better tests.
2022-03-14 01:07:53 +00:00
modmuss50
fff4afe405 Initial support for split client/common sourcesets. (#606) 2022-03-04 15:01:45 +00:00
modmuss50
de31f1e083 Intermediate mapping handling improvements. (#593)
* Add API for intermediate mappings. Add hacky option to run with no intermediate mappings.

* Add setter, and some getters that I need :)

* Remove unused inject.

* Don't add asm-all to the libraries.

* Fix unit tests.
2022-02-09 13:49:15 +00:00
modmuss50
9662a8b3de Support injecting interfaces from the mod source. Add a comment to target classes saying what mod is providing an injected interface. (#581) 2022-01-24 15:21:00 +00:00
modmuss50
9a796579e8 Disable runtime only log4j by default. 2022-01-19 21:39:27 +00:00
modmuss50
b31ce4e525 Remove log4j from compile classpath starting with Minecraft 22w03a.
This is done to force modders to use SLF4J as Mojang have the ability to remove it at anytime. An option is provided to disable this.
2022-01-19 20:04:10 +00:00
modmuss50
e9d1f005d9 Add server only jar configuration option. (#574)
* Add server only option.

* Fix crash.

* Fix unpick jar task name.

* Revert test memory change

* Dont add client only libraries.

* Fixes

* Move option to the extension
2022-01-17 22:11:08 +00:00
modmuss50
240a23f52d Improve decompiler options by moving them away from the task.
Done because the split jar changes required registering the decompiler task after evaluation.
As there may be more than one decompile task, the options are set per decompiler and not per task.
This should also make easier to add new decompilers without requiring a plugin.
2022-01-05 09:49:11 +00:00
modmuss50
4158062ce5 Experimental support for split common and clientonly minecraft jars. (#561)
This lays the ground work for split client and server mod code. With this first phase when enabled loom will generate a clientonly and common minecraft jar. Fabric loader and API will both need changes to support this before it can be used to develop mods.

Phase two of this project will handle splitting mod code into a client and common source set along with spliting any dependencies. 

Mostly fixes #539 by sepreating decompile tasks
2022-01-04 21:19:03 +00:00
shartte
ccfe12eb17 Interface Injection (#496)
* Added interface injection via fabric.mod.json.

* Added interface injection

* Added amending of class signature with injected interface.
2022-01-04 18:15:21 +00:00
modmuss50
53b839b739 Decompiler API improvements:
* Fix decompiler tasks getting registered in afterEvaluate
* Allow decompilers to add file collections to the forked JVM classpath.
* General code cleanup.
2021-12-29 00:10:58 +00:00
Cat Core
a91b75c05c Allow to set custom intermediary url again (#528)
* allow to set custom intermediary url again

* apply suggestions

* add some javadoc
2021-11-01 15:47:28 +00:00
modmuss50
80ad300b97 Fix failure when running dependencies task when using layered mappings.
A SelfResolvingDependency has to be a FileCollectionDependency or a ModuleDependency by the looks of it.
2021-09-28 16:34:43 +01:00
shartte
d48c74161e Access Widener 2.0 with support for Transitive Access Wideners (#484)
* Added global access widener support.

* Adapt loom to changed API of latest AW PR.

* Fix expected access widener to fix the test. Since the access widener is now streamed directly into the writer, the expanded rules (i.e. accessible field makes the owning class also accessible) are no longer found in the remapped file.

* Add basic transitive accesswidener test

* Extracted applying transitive access wideners into their own jar processor since they also need to be applied if there is no AW in the mod itself.

* Misc assortment of fixes

* Set up the processor lazily to allow for adding the intermediary MC jar, which is needed to correctly remap intermediary AWs to named.

* Rework to setup the tiny remapper classpath with the mc jar
Add an extension prop to disable

* Add TransitiveDetectorVisitor

* Minor refactoring.

* Use release-version of access-widener.

Co-authored-by: modmuss50 <modmuss50@gmail.com>
2021-09-14 22:40:47 +01:00
modmuss50
08e548b6c6 Expose layered mappings as an API (#490)
* Expose layered mappings as an API

* Add FileSpec

* Cleanup and support DependencyFileSpec
2021-09-13 17:58:52 +01:00
modmuss50
2c464cdef3 Add loom.modVersion to read the version from the fabric.mod.json file. (#489) 2021-09-10 16:06:37 +01:00
Logic
3b0dc7f0f4 Use tiny-remapper to remap mixin annotation. (#441)
* use tiny-remapper 0.5.0

* add property of useLegacyMixinAp and rename mixin to mixinAp

* disable mixin ap if useLegacyMixinAp is false

* fix tests

* remove experimental for mixinAp

* enable mixin remapper

* revert changes on API

* rename MixinAp*** to Mixin***

* move useLegacyMixinAp inside MixinExtension

* cleaner code

* update test

Co-authored-by: modmuss50 <modmuss50@gmail.com>
2021-09-07 11:28:51 +01:00