1+ import dev.lambdaurora.mcdev.api.MappingVariant
2+ import dev.lambdaurora.mcdev.api.manifest.Nmt
3+ import dev.lambdaurora.mcdev.task.GenerateNmtTask
4+ import net.fabricmc.loom.LoomGradleExtension
5+ import net.fabricmc.loom.api.mappings.layered.MappingsNamespace
16import net.fabricmc.loom.task.RemapJarTask
27import spruceui.Constants
8+ import spruceui.task.XplatTransformJar
39
410plugins {
511 id(" spruceui-common" )
@@ -77,6 +83,11 @@ repositories {
7783 }
7884}
7985
86+ val mojmap = lambdamcdev.setupMojmapRemapping()
87+ configurations.getByName(" mojmapApi" ) {
88+ this .extendsFrom(configurations[" api" ])
89+ }
90+
8091dependencies {
8192 @Suppress(" UnstableApiUsage" )
8293 mappings(loom.layered {
@@ -87,11 +98,7 @@ dependencies {
8798 })
8899 modImplementation(libs.fabric.loader)
89100
90- modApi(libs.yumi.mc.foundation) {
91- // Exclude Minecraft and loader-provided libraries.
92- exclude(group = " org.slf4j" )
93- exclude(group = " org.ow2.asm" )
94- }
101+ modApi(libs.yumi.mc.foundation)
95102
96103 fabricModules.stream().map { fabricApi.module(it, libs.versions.fabric.api.get()) }.forEach {
97104 modImplementation(it)
@@ -101,19 +108,16 @@ dependencies {
101108 isTransitive = false
102109 }*/
103110
111+ " mojmapApi" (libs.yumi.mc.foundation) {
112+ attributes {
113+ attribute(MappingVariant .ATTRIBUTE , objects.named(MappingVariant .MOJMAP ))
114+ }
115+ }
116+
104117 " testmodCompileOnly" (libs.neoforge.loader)
105118 " testmodImplementation" (sourceSets.main.get().output)
106119}
107120
108- val mojmap by sourceSets.creating {}
109-
110- java {
111- registerFeature(" mojmap" ) {
112- usingSourceSet(mojmap)
113- withSourcesJar()
114- }
115- }
116-
117121tasks.withType<JavaCompile >().configureEach {
118122 options.isDeprecation = true
119123 options.isIncremental = true
@@ -153,6 +157,65 @@ val remapTestmodJar = tasks.register<RemapJarTask>("remapTestmodJar") {
153157}
154158tasks.build.get().dependsOn(remapTestmodJar)
155159
160+ // region Mojmap
161+ val remapMojmap = mojmap.registerRemap(tasks.remapJar) {
162+ this .destinationDirectory.set(layout.buildDirectory.map { it.dir(" devlibs" ) })
163+ }
164+
165+ val remapMojmapSourcesJar = mojmap.registerSourcesRemap(tasks.remapSourcesJar) {
166+ this .classpath.from(configurations[" minecraftClientLibraries" ])
167+ this .archiveClassifier = " preprocessed-mojmap-sources"
168+ }
169+
170+ val nmtGeneration by tasks.registering(GenerateNmtTask ::class ) {
171+ this .nmt = lambdamcdev.manifests.fmj().map {
172+ it.derive(::Nmt )
173+ .withBlurIcon(false )
174+ .withLoaderVersion(" [2,)" )
175+ .withMixins(" spruceui.mixins.json" )
176+ .withDepend(" minecraft" , " [" + libs.versions.minecraft.get() + " ,)" )
177+ .withDepend(" yumi_mc_core" , " [${libs.versions.yumi.mc.foundation.get()} ,)" )
178+ }
179+ this .outputDir = project.layout.buildDirectory.map { it.dir(" generated/generated_neoforge_resources" ) }
180+ }
181+
182+ val xplatTransformJar by tasks.registering(XplatTransformJar ::class ) {
183+ dependsOn(remapMojmap, nmtGeneration)
184+
185+ inputJar.set(remapMojmap.flatMap { it.archiveFile })
186+ from(nmtGeneration)
187+ this .archiveClassifier = " mojmap"
188+ }
189+ mojmap.setJarArtifact(xplatTransformJar)
190+
191+ val xplatTransformSourcesJar by tasks.registering(XplatTransformJar ::class ) {
192+ dependsOn(remapMojmapSourcesJar, nmtGeneration)
193+
194+ inputJar.set(remapMojmapSourcesJar.flatMap { it.archiveFile })
195+ from(nmtGeneration)
196+ this .archiveClassifier = " mojmap-sources"
197+ }
198+ mojmap.setSourcesArtifact(xplatTransformSourcesJar)
199+
200+ val remapTestmodMojmapJar = mojmap.registerRemap(" remapTestmodJarToMojmap" ) {
201+ dependsOn(remapTestmodJar)
202+
203+ classpath.setFrom(
204+ (loom as LoomGradleExtension ).getMinecraftJarsCollection(MappingsNamespace .INTERMEDIARY ),
205+ tasks.remapJar
206+ )
207+ inputFile.convention(remapTestmodJar.flatMap { it.archiveFile })
208+ archiveClassifier = " preprocessed"
209+ sourceNamespace = " intermediary"
210+ targetNamespace = " named"
211+ archiveClassifier = " testmod-mojmap"
212+ }
213+
214+ tasks.build.configure {
215+ dependsOn(xplatTransformJar, xplatTransformSourcesJar, remapTestmodMojmapJar)
216+ }
217+ // endregion
218+
156219license {
157220 rule(file(" HEADER" ))
158221}
0 commit comments