123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- import com.github.jengelman.gradle.plugins.shadow.transformers.Transformer
- import com.github.jengelman.gradle.plugins.shadow.transformers.TransformerContext
- import shadow.org.apache.tools.zip.ZipEntry
- import shadow.org.codehaus.plexus.util.IOUtil
- import shadow.org.apache.tools.zip.ZipOutputStream
- plugins {
- id "com.github.johnrengelman.shadow" version "5.0.0"
- id "com.matthewprenger.cursegradle"
- }
- loom {
- accessWidener(file("src/main/resources/architectury.accessWidener"))
- silentMojangMappingsLicense()
- }
- configurations {
- shadow
- }
- architectury {
- platformSetupLoomIde()
- }
- dependencies {
- minecraft("com.mojang:minecraft:${rootProject.architect.minecraft}")
- mappings(minecraft.officialMojangMappings())
- modCompile("net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}")
- modCompile("net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}")
- modCompileOnly("io.github.prospector:modmenu:${rootProject.mod_menu_version}")
- implementation "net.jodah:typetools:0.6.2"
- shadow "net.jodah:typetools:0.6.2"
- compileOnly(project(path: ":common")) {
- transitive = false
- }
- runtimeOnly(project(path: ":common", configuration: "transformed")) {
- transitive = false
- }
- shadow(project(path: ":common", configuration: "transformed")) {
- transitive = false
- }
- testCompile project(":common").sourceSets.test.output
- }
- processResources {
- filesMatching("fabric.mod.json") {
- expand "version": project.version
- }
- inputs.property "version", project.version
- }
- shadowJar {
- relocate "net.jodah.typetools", "me.shedaniel.architectury.shadowed.impl.net.jodah.typetools"
- transform(MergeAccessWidenersTransformer.class) {
- it.resource = "architectury.accessWidener"
- }
- configurations = [project.configurations.shadow]
- classifier "shadow"
- }
- remapJar {
- dependsOn(shadowJar)
- input.set(shadowJar.archiveFile)
- archiveClassifier = "fabric"
- }
- publishing {
- publications {
- mavenFabric(MavenPublication) {
- artifact(remapJar.archivePath) {
- builtBy build
- classifier "fabric"
- }
- }
- }
- }
- curseforge {
- if (project.hasProperty("curse_api_key") || System.getenv("curse_api_key") != null) {
- apiKey = project.hasProperty("curse_api_key") ? project.property("curse_api_key") : System.getenv("curse_api_key")
- project {
- id = "419697"
- releaseType = "release"
- changelogType = "html"
- changelog = releaseChangelog()
- addGameVersion "1.16-Snapshot"
- addGameVersion "1.16.4"
- addGameVersion "Java 8"
- addGameVersion "Fabric"
- relations {
- requiredDependency "fabric-api"
- }
- mainArtifact(remapJar.archivePath) {
- displayName = "[Fabric $rootProject.supported_version] v$project.version"
- }
- afterEvaluate {
- uploadTask.dependsOn("build")
- }
- }
- }
- options {
- forgeGradleIntegration = false
- javaVersionAutoDetect = false
- }
- }
- rootProject.tasks.getByName("curseforgePublish").dependsOn tasks.getByName("curseforge")
- class MergeAccessWidenersTransformer implements Transformer {
- String resource
- ByteArrayOutputStream data
- MergeAccessWidenersTransformer() {
- data = new ByteArrayOutputStream()
- data.write("accessWidener v1 named\n".bytes)
- }
- @Override
- boolean canTransformResource(FileTreeElement element) {
- def path = element.relativePath.pathString
- if (resource != null && resource.equalsIgnoreCase(path)) {
- return true
- }
- return false
- }
- @Override
- void transform(TransformerContext context) {
- def lines = context.is.readLines()
- lines.removeIf { it == "accessWidener v1 named" }
- IOUtil.copy(lines.join("\n"), data)
- data.write('\n'.bytes)
- context.is.close()
- }
- @Override
- boolean hasTransformedResource() {
- return data.size() > 0
- }
- void modifyOutputStream(org.apache.tools.zip.ZipOutputStream jos, boolean preserveFileTimestamps) {
- throw new AbstractMethodError()
- }
- @Override
- void modifyOutputStream(ZipOutputStream os, boolean preserveFileTimestamps) {
- ZipEntry entry = new ZipEntry(resource)
- entry.time = TransformerContext.getEntryTimestamp(preserveFileTimestamps, entry.time)
- os.putNextEntry(entry)
- IOUtil.copy(new ByteArrayInputStream(data.toByteArray()), os)
- data.reset()
- data.write('accessWidener v1 named\n'.bytes)
- }
- }
|