diff --git a/src/api/kotlin/xyz/wagyourtail/unimined/util/Utils.kt b/src/api/kotlin/xyz/wagyourtail/unimined/util/Utils.kt index 16b55b20..ad1f7678 100644 --- a/src/api/kotlin/xyz/wagyourtail/unimined/util/Utils.kt +++ b/src/api/kotlin/xyz/wagyourtail/unimined/util/Utils.kt @@ -7,6 +7,10 @@ import org.apache.commons.compress.archivers.zip.ZipFile import org.gradle.api.Project import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.Dependency +import org.gradle.api.artifacts.FileCollectionDependency +import org.gradle.api.artifacts.ModuleDependency +import org.gradle.api.artifacts.component.ComponentArtifactIdentifier +import org.gradle.api.artifacts.component.ComponentIdentifier import org.gradle.api.artifacts.component.ModuleComponentIdentifier import org.gradle.api.file.FileCollection import org.gradle.api.tasks.SourceSet @@ -43,29 +47,48 @@ inline fun consumerApply(crossinline action: T.() -> U): (T) -> U { fun Configuration.getFiles(dep: Dependency, filter: (File) -> Boolean): FileCollection { resolve() return incoming.artifactView { view -> - view.componentFilter { - when (it) { - is ModuleComponentIdentifier -> { - it.group == dep.group && it.module == dep.name + when (dep) { + is ModuleDependency -> { + view.componentFilter { + when (it) { + is ModuleComponentIdentifier -> { + it.group == dep.group && it.module == dep.name + } + is ComponentArtifactIdentifier -> { + false + } + else -> { + println("Unknown component type: ${it.javaClass}") + false + } + } } - else -> false + } + is FileCollectionDependency -> { + view.componentFilter { comp -> + when (comp) { + is ModuleComponentIdentifier -> { + false + } + is ComponentIdentifier -> { + dep.files.any { it.name == comp.displayName } + } + else -> { + println("Unknown component type: ${comp.javaClass}") + false + } + } + } + } + else -> { + throw IllegalArgumentException("Unknown dependency type: ${dep.javaClass}") } } }.files.filter(filter) } fun Configuration.getFiles(dep: Dependency, extension: String = "jar"): FileCollection { - resolve() - return incoming.artifactView { view -> - view.componentFilter { - when (it) { - is ModuleComponentIdentifier -> { - it.group == dep.group && it.module == dep.name - } - else -> false - } - } - }.files.filter { it.extension == extension } + return getFiles(dep) { it.extension == extension } } fun URI.stream(): InputStream { diff --git a/src/mapping/kotlin/xyz/wagyourtail/unimined/internal/mapping/MappingsProvider.kt b/src/mapping/kotlin/xyz/wagyourtail/unimined/internal/mapping/MappingsProvider.kt index c5c471f6..1da68b28 100644 --- a/src/mapping/kotlin/xyz/wagyourtail/unimined/internal/mapping/MappingsProvider.kt +++ b/src/mapping/kotlin/xyz/wagyourtail/unimined/internal/mapping/MappingsProvider.kt @@ -3,14 +3,16 @@ package xyz.wagyourtail.unimined.internal.mapping import com.google.gson.JsonParser import net.fabricmc.mappingio.MappingVisitor import net.fabricmc.mappingio.adapter.MappingSourceNsSwitch -import net.fabricmc.mappingio.format.* +import net.fabricmc.mappingio.format.MappingTreeBuilder +import net.fabricmc.mappingio.format.ProGuardReader +import net.fabricmc.mappingio.format.Tiny2Reader2 +import net.fabricmc.mappingio.format.Tiny2Writer2 import net.fabricmc.mappingio.tree.MappingTreeView import net.fabricmc.mappingio.tree.MemoryMappingTree import net.fabricmc.tinyremapper.IMappingProvider import org.gradle.api.Project import org.gradle.api.artifacts.FileCollectionDependency import xyz.wagyourtail.unimined.api.mapping.MappingDepConfig -import xyz.wagyourtail.unimined.api.mapping.MappingNamespaceTree import xyz.wagyourtail.unimined.api.mapping.MappingsConfig import xyz.wagyourtail.unimined.api.mapping.MemoryMapping import xyz.wagyourtail.unimined.api.minecraft.EnvType @@ -593,12 +595,12 @@ class MappingsProvider(project: Project, minecraft: MinecraftConfig, val mapping // parse each dep for (dep in mappingsDeps.values) { dep as MappingDepConfigImpl - project.logger.info("[Unimined/MappingsProvider] Loading mappings from ${dep.dep.name}") + project.logger.lifecycle("[Unimined/MappingsProvider] Loading mappings from ${dep.dep}") // resolve dep to files, no pom val files = configuration.getFiles(dep.dep) { it.extension != "pom" } // load each file - project.logger.info("[Unimined/MappingsProvider] Loading mappings files ${files.joinToString(", ")}") + project.logger.lifecycle("[Unimined/MappingsProvider] Loading mappings files ${files.joinToString(", ")}") for (file in files) { if (minecraft.isMinecraftJar(file.toPath())) {