RyanHub - file viewer
filename: neoforge/build.gradle
branch: 1.21
back to repo
plugins {
    id 'com.github.johnrengelman.shadow'
}

architectury {
    platformSetupLoomIde()
    neoForge()
}

loom {
    accessWidenerPath.set(project(":common").loom.accessWidenerPath)
}

configurations {
    common {
        canBeResolved = true
        canBeConsumed = false
    }
    compileClasspath.extendsFrom common
    runtimeClasspath.extendsFrom common
    developmentNeoForge.extendsFrom common

    // Files in this configuration will be bundled into your mod using the Shadow plugin.
    // Don't use the `shadow` configuration from the plugin itself as it's meant for excluding files.
    shadowBundle {
        canBeResolved = true
        canBeConsumed = false
    }
}

repositories {
    maven {
        name = 'NeoForged'
        url = 'https://maven.neoforged.net/releases'
    }

    maven {
        url "https://modmaven.dev/"
        content {
            includeGroup "dev.technici4n"
        }
    }
}

dependencies {
    neoForge "net.neoforged:neoforge:$rootProject.neoforge_version"

    // Architectury API. This is optional, and you can comment it out if you don't need it.
    modImplementation "dev.architectury:architectury-neoforge:$rootProject.architectury_api_version"

    common(project(path: ':common', configuration: 'namedElements')) { transitive false }
    shadowBundle project(path: ':common', configuration: 'transformProductionNeoForge')

    // forgified fabric api
    // modImplementation "org.sinytra.forgified-fabric-api:forgified-fabric-api:0.107.0+2.0.23+1.21.1"

    include modApi("dev.technici4n:GrandPower:3.0.2")

    // owo lib
    modImplementation "io.wispforest:owo-lib-neoforge:0.12.15-beta.9+1.21"
    forgeRuntimeLibrary(include(api("io.wispforest:endec:0.1.8")))
    forgeRuntimeLibrary(include(api("io.wispforest.endec:netty:0.1.4")))
    forgeRuntimeLibrary(include(api("io.wispforest.endec:gson:0.1.5")))
    forgeRuntimeLibrary(include(api("io.wispforest.endec:jankson:0.1.5")))
    forgeRuntimeLibrary(include(api("blue.endless:jankson:1.2.2")))

    // geckolib
    modImplementation "software.bernie.geckolib:geckolib-neoforge-1.21.1:4.7.5.1"

    // athena (CTM)
    modRuntimeOnly "earth.terrarium.athena:athena-neoforge-1.21:4.0.0"
    // jade
    modImplementation "curse.maven:jade-324717:5846105"

    modCompileOnly "me.shedaniel:RoughlyEnoughItems-neoforge:16.0.754"

    // recipe viewer runtime
    switch (recipe_viewer.toLowerCase(Locale.ROOT)) {
        case "emi": modRuntimeOnly "dev.emi:emi-neoforge:${emi_version}"; break
        case "rei": modRuntimeOnly "me.shedaniel:RoughlyEnoughItems-neoforge:16.0.754"; break
        case "jei": modRuntimeOnly "mezz.jei:jei-1.21.1-neoforge:19.21.0.245"
        case "disabled": break
        default: println("Unknown recipe viewer specified: ${recipe_viewer}. Must be EMI, REI, JEI, or disabled.")
    }

    // compat mods for ingame testing
    modRuntimeOnly "curse.maven:energized-power-782147:5797585"
    modRuntimeOnly "curse.maven:mekanism-268560:5680395"
    modRuntimeOnly "curse.maven:applied-energistics-2-223794:6087880"
    modRuntimeOnly "curse.maven:spark-361579:5759671"

    // create
    // modImplementation "net.createmod.ponder:Ponder-NeoForge-${minecraft_version}:1.0.43"
    // modImplementation "dev.engine-room.flywheel:flywheel-neoforge-${minecraft_version}:1.0.1-11"
}

processResources {
    inputs.property 'version', project.version

    filesMatching('META-INF/neoforge.mods.toml') {
        expand version: project.version
    }

    from('src/main/generated')
}

shadowJar {
    configurations = [project.configurations.shadowBundle]
    archiveClassifier = 'dev-shadow'
}

remapJar {
    input.set shadowJar.archiveFile
}

tasks.remapJar {
    injectAccessWidener = true
    atAccessWideners.add(loom.accessWidenerPath.get().asFile.name)
}

publishMods {
    file = remapJar.archiveFile
    changelog = file("../CHANGELOG.md").getText()
    type = ALPHA
    modLoaders.add("neoforge")

    modrinth {
        accessToken = providers.environmentVariable("MODRINTH_API_KEY")
        projectId = "4sYI62kA"
        minecraftVersions.add("1.21.1")
        minecraftVersions.add("1.21")

        requires("owo-lib")
        requires("geckolib")
        requires("stitch")
        requires("architectury-api")

        announcementTitle = "Neoforge Version on Modrinth"
    }

    curseforge {
        accessToken = providers.environmentVariable("CURSEFORGE_API_KEY")
        projectId = "1030830"
        minecraftVersions.add("1.21.1")
        minecraftVersions.add("1.21")

        requires("owo-lib")
        requires("geckolib")
        requires("stitch")
        requires("architectury-api")

        javaVersions.add(JavaVersion.VERSION_21)
        clientRequired = true
        serverRequired = true

        projectSlug = "oritech"
        announcementTitle = "Neoforge Version on CurseForge"
    }
}