diff --git a/Common/build.gradle b/Common/build.gradle index b703a769..b9c6433d 100644 --- a/Common/build.gradle +++ b/Common/build.gradle @@ -1,8 +1,11 @@ plugins { id 'org.spongepowered.gradle.vanilla' version '0.2.1-SNAPSHOT' + id "at.petra-k.PKSubprojPlugin" } -archivesBaseName = getArtifactID("common") +pkSubproj { + platform "common" +} minecraft { version(minecraftVersion) @@ -12,11 +15,6 @@ minecraft { repositories { mavenCentral() - // If you have mod jar dependencies in ./libs, you can declare them as a repository like so: - // flatDir { - // dir 'libs' - // } - maven { url 'https://maven.blamejared.com' } maven { @@ -56,5 +54,3 @@ processResources { expand buildProps } } - -setupJar(this) diff --git a/Fabric/build.gradle b/Fabric/build.gradle index 6bc7b5db..ed651570 100644 --- a/Fabric/build.gradle +++ b/Fabric/build.gradle @@ -1,8 +1,15 @@ plugins { id 'fabric-loom' // version "1.0-SNAPSHOT" + id "at.petra-k.PKSubprojPlugin" } -archivesBaseName = getArtifactID("fabric") +pkSubproj { + platform "fabric" + curseforgeJar remapJar.archiveFile + curseforgeDependencies[] + modrinthJar remapJar.archiveFile + modrinthDependencies[] +} loom { mixin.defaultRefmapName = "hexcasting.mixins.refmap.json" @@ -34,30 +41,24 @@ loom { repositories { mavenCentral() + + // paucal and patchi + maven { url = 'https://maven.blamejared.com' } + // modmenu and clothconfig maven { url "https://maven.shedaniel.me/" } - maven { - url 'https://ladysnake.jfrog.io/artifactory/mods' - } - maven { - name "entity reach" - url "https://maven.jamieswhiteshirt.com/libs-release/" - } + maven { url 'https://ladysnake.jfrog.io/artifactory/mods' } + // Entity reach + maven { url "https://maven.jamieswhiteshirt.com/libs-release/" } maven { url "https://mvn.devos.one/snapshots/" } - maven { - name = "TerraformersMC" - url = "https://maven.terraformersmc.com/releases/" - } + maven { url = "https://maven.terraformersmc.com/releases/" } exclusiveContent { forRepository { - maven { - name = "Modrinth" - url = "https://api.modrinth.com/maven" - } - } - filter { - includeGroup "maven.modrinth" + maven { url = "https://api.modrinth.com/maven" } } + filter { includeGroup "maven.modrinth" } } + // pehkui + maven { url = "https://jitpack.io" } } dependencies { @@ -136,5 +137,3 @@ processResources { expand "version": project.version } } - -setupJar(this) diff --git a/Forge/build.gradle b/Forge/build.gradle index 7c51e80d..7e8386b6 100644 --- a/Forge/build.gradle +++ b/Forge/build.gradle @@ -13,16 +13,77 @@ buildscript { } } +plugins { + id "java" + id "maven-publish" + + id "at.petra-k.PKSubprojPlugin" +} + apply plugin: 'net.minecraftforge.gradle' apply plugin: 'org.spongepowered.mixin' -archivesBaseName = getArtifactID("forge") - // Adds KFF as dependency and Kotlin libs to the runtime classpath // If you already know how to add the Kotlin plugin to Gradle, this is the only line you need for KFF apply from: "https://raw.githubusercontent.com/thedarkcolour/KotlinForForge/site/thedarkcolour/kotlinforforge/gradle/kff-" + "${kotlinForForgeVersion}.gradle" +pkSubproj { + platform "forge" + curseforgeJar jar.archiveFile + curseforgeDependencies[] + modrinthJar jar.archiveFile + modrinthDependencies[] +} + +repositories { + mavenCentral() + + maven { + // location of the maven that hosts JEI files + name = "Progwml6 maven" + url = "https://dvs1.progwml6.com/files/maven/" + } + maven { + // location of a maven mirror for JEI files, as a fallback + name = "ModMaven" + url = "https://modmaven.dev" + } + // caelus elytra + maven { url = "https://maven.theillusivec4.top" } + // pehkui + maven { url = "https://jitpack.io" } +} + +dependencies { + minecraft "net.minecraftforge:forge:${minecraftVersion}-${forgeVersion}" + compileOnly project(":Common") + + annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' + + compileOnly fg.deobf("at.petra-k.paucal:paucal-forge-$minecraftVersion:$paucalVersion") + runtimeOnly fg.deobf("at.petra-k.paucal:paucal-forge-$minecraftVersion:$paucalVersion") + compileOnly fg.deobf("vazkii.patchouli:Patchouli:$minecraftVersion-$patchouliVersion") + runtimeOnly fg.deobf("vazkii.patchouli:Patchouli:$minecraftVersion-$patchouliVersion") + + // aughh + testCompileOnly fg.deobf("at.petra-k.paucal:paucal-forge-$minecraftVersion:$paucalVersion") + testCompileOnly fg.deobf("vazkii.patchouli:Patchouli:$minecraftVersion-$patchouliVersion") + + implementation fg.deobf("top.theillusivec4.caelus:caelus-forge:$caelusVersion") + + // Optional interop + + compileOnly fg.deobf("mezz.jei:jei-$minecraftVersion-common-api:$jeiVersion") + compileOnly fg.deobf("mezz.jei:jei-$minecraftVersion-forge-api:$jeiVersion") + runtimeOnly fg.deobf("mezz.jei:jei-$minecraftVersion-forge:$jeiVersion") + + compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:$minecraftVersion-$curiosVersion:api") + runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:$minecraftVersion-$curiosVersion") + + api fg.deobf("com.github.Virtuoel:Pehkui:${pehkuiVersion}-${minecraftVersion}-forge") +} + minecraft { mappings channel: 'official', version: minecraftVersion accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') @@ -100,61 +161,6 @@ minecraft { } } -repositories { - mavenCentral() - // Put repositories for dependencies here - // ForgeGradle automatically adds the Forge maven and Maven Central for you - - // If you have mod jar dependencies in ./libs, you can declare them as a repository like so: - // flatDir { - // dir 'libs' - // } - - maven { - // location of the maven that hosts JEI files - name = "Progwml6 maven" - url = "https://dvs1.progwml6.com/files/maven/" - } - maven { - // location of a maven mirror for JEI files, as a fallback - name = "ModMaven" - url = "https://modmaven.dev" - } - // caelus elytra - maven { url = "https://maven.theillusivec4.top" } -} - -dependencies { - // Specify the version of Minecraft to use. If this is any group other than 'net.minecraft', it is assumed - // that the dep is a ForgeGradle 'patcher' dependency, and its patches will be applied. - // The userdev artifact is a special name and will get all sorts of transformations applied to it. - minecraft "net.minecraftforge:forge:${minecraftVersion}-${forgeVersion}" - compileOnly project(":Common") - - annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' - - compileOnly fg.deobf("at.petra-k.paucal:paucal-forge-$minecraftVersion:$paucalVersion") - runtimeOnly fg.deobf("at.petra-k.paucal:paucal-forge-$minecraftVersion:$paucalVersion") - compileOnly fg.deobf("vazkii.patchouli:Patchouli:$minecraftVersion-$patchouliVersion") - runtimeOnly fg.deobf("vazkii.patchouli:Patchouli:$minecraftVersion-$patchouliVersion") - - // aughh - testCompileOnly fg.deobf("at.petra-k.paucal:paucal-forge-$minecraftVersion:$paucalVersion") - testCompileOnly fg.deobf("vazkii.patchouli:Patchouli:$minecraftVersion-$patchouliVersion") - - implementation fg.deobf("top.theillusivec4.caelus:caelus-forge:$caelusVersion") - - // Optional interop - - compileOnly fg.deobf("mezz.jei:jei-$minecraftVersion-common-api:$jeiVersion") - compileOnly fg.deobf("mezz.jei:jei-$minecraftVersion-forge-api:$jeiVersion") - runtimeOnly fg.deobf("mezz.jei:jei-$minecraftVersion-forge:$jeiVersion") - - compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:$minecraftVersion-$curiosVersion:api") - runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:$minecraftVersion-$curiosVersion") - - api fg.deobf("com.github.Virtuoel:Pehkui:${pehkuiVersion}-${minecraftVersion}-forge") -} mixin { add sourceSets.main, "hexcasting.mixins.refmap.json" @@ -214,5 +220,4 @@ processResources { } } -jar.finalizedBy('reobfJar') -setupJar(this) +jar.finalizedBy('reobfJar') \ No newline at end of file diff --git a/build.gradle b/build.gradle index a265b679..4dfeab95 100644 --- a/build.gradle +++ b/build.gradle @@ -16,97 +16,29 @@ plugins { // https://github.com/FabricMC/fabric-loom/issues/612#issuecomment-1198444120 // Also it looks like property lookups don't work this early id 'fabric-loom' version '1.0-SNAPSHOT' apply false -} -import com.diluv.schoomp.Webhook -import com.diluv.schoomp.message.Message - - -def isRelease() { - try { - def stdout = new ByteArrayOutputStream() - def gitHash = System.getenv('GIT_COMMIT') - def gitPrevHash = System.getenv('GIT_PREVIOUS_COMMIT') - def travisRange = System.getenv('TRAVIS_COMMIT_RANGE') - if (gitHash && gitPrevHash) { - exec { - commandLine 'git', 'log', '--pretty=tformat:- %s', '' + gitPrevHash + '...' + gitHash - standardOutput = stdout - } - return stdout.toString().toLowerCase().contains("[release") - } else if (travisRange) { - exec { - commandLine 'git', 'log', '--pretty=tformat:- %s', '' + travisRange - standardOutput = stdout - } - return stdout.toString().toLowerCase().contains("[release") - } else { - return false - } - } catch (ignored) { - return false - } -} - -String getArtifactID(String platform) { - return "${modID}-${platform}-${minecraftVersion}" -} - -void setupJar(Object project) { - project.jar { - manifest { - attributes([ - 'Specification-Title' : modID, - 'Specification-Vendor' : "petra-kat", - 'Specification-Version' : project.jar.archiveVersion, - 'Implementation-Title' : project.name, - 'Implementation-Version' : project.jar.archiveVersion, - 'Implementation-Vendor' : "petra-kat", - 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), - 'Timestampe' : System.currentTimeMillis(), - 'Built-On-Java' : "${System.getProperty('java.vm.version')} (${System.getProperty('java.vm.vendor')})", - 'Build-On-Minecraft' : minecraftVersion - ]) - } - } - - project.publishing { - publications { - mavenJava(MavenPublication) { - groupId project.group - artifactId project.archivesBaseName - version project.version - from project.components.java - } - } - - repositories { - maven { - url "file://" + System.getenv("local_maven") - } - } - } + id("at.petra-k.PKPlugin") version "0.1.0-pre-63" + id("at.petra-k.PKSubprojPlugin") version "0.1.0-pre-63" apply false } repositories { mavenCentral() } +pkpcpbp { + modInfo { + modID(project.modID) + mcVersion(project.minecraftVersion) + modVersion(project.modVersion) + } +} + subprojects { apply plugin: 'java' apply plugin: 'kotlin' apply plugin: 'maven-publish' - group = "at.petra-k.$modID" // http://maven.apache.org/guides/mini/guide-naming-conventions.html - version = "${modVersion}" - if (!isRelease() && System.getenv('BUILD_NUMBER') != null) { - version += "-pre-" + System.getenv('BUILD_NUMBER') - } else if (System.getenv('TAG_NAME') != null) { - version = System.getenv('TAG_NAME').substring(1) - println 'Version overridden to tag version ' + version - } - // archivesBaseName set in each gradle - + /* repositories { maven { url "https://libraries.minecraft.net/" } @@ -134,6 +66,7 @@ subprojects { url = "https://jitpack.io" } } + */ tasks.withType(JavaCompile).configureEach { @@ -174,50 +107,3 @@ compileTestKotlin { jvmTarget = "17" } } - -def getGitChangelog = { -> - try { - def stdout = new ByteArrayOutputStream() - def gitHash = System.getenv('GIT_COMMIT') - def gitPrevHash = System.getenv('GIT_PREVIOUS_COMMIT') - def travisRange = System.getenv('TRAVIS_COMMIT_RANGE') - if (gitHash && gitPrevHash) { - exec { - commandLine 'git', 'log', '--pretty=tformat:> - %s', '' + gitPrevHash + '...' + gitHash - standardOutput = stdout - } - return stdout.toString().trim() - } else if (travisRange) { - exec { - commandLine 'git', 'log', '--pretty=tformat:> - %s', '' + travisRange - standardOutput = stdout - } - return stdout.toString().trim() - } else { - return "" - } - } catch (ignored) { - return "" - } -} - -task sendWebhook { - doLast { - try { - if (System.getenv('discordWebhook') == null || System.getenv("BUILD_URL") == null) { - println "Cannot send the webhook without the webhook url or the build url" - return - } - def webhook = new Webhook(System.getenv('discordWebhook'), 'Petrak@ Patreon Gradle') - - def message = new Message() - message.setUsername("Patreon Early Access") - message.setContent("New **$modName** prerelease -- build ${System.getenv("BUILD_NUMBER")} for $minecraftVersion! \n" + - "Download it here: ${System.getenv("BUILD_URL")}\nChangelog:\n${getGitChangelog()}") - - webhook.sendMessage(message) - } catch (ignored) { - project.logger.error("Failed to push Discord webhook.") - } - } -} diff --git a/settings.gradle b/settings.gradle index f3df04dd..67a39ad9 100644 --- a/settings.gradle +++ b/settings.gradle @@ -9,6 +9,7 @@ pluginManagement { name = 'Sponge Snapshots' url = 'https://repo.spongepowered.org/repository/maven-public/' } + maven { url 'https://maven.blamejared.com' } } plugins {