From a1f4378fe79f20d8fc545eae221ccaeb48be3c54 Mon Sep 17 00:00:00 2001 From: Johann Bernhardt Date: Mon, 22 Nov 2021 13:24:52 +0100 Subject: [PATCH] Migrated to unified build script --- .github/scripts/test-no-crash-reports.sh | 9 + .github/workflows/build-and-test.yml | 45 ++ .github/workflows/release-latest.yml | 44 ++ .github/workflows/release-tags.yml | 45 ++ .gitignore | 28 ++ .hgignore | 10 - .hgtags.orig | 25 - activity.png | Bin 79264 -> 0 bytes build.gradle | 568 ++++++++++++++++++---- build.properties | 7 - dependencies.gradle | 5 + gradle.properties | 60 +++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 55616 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 188 +++++++ gradlew.bat | 100 ++++ jitpack.yml | 2 + repositories.gradle | 7 + src/main/java/mcp/mobius/waila/Waila.java | 2 +- src/main/resources/mcmod.info | 8 +- 20 files changed, 1003 insertions(+), 155 deletions(-) create mode 100644 .github/scripts/test-no-crash-reports.sh create mode 100644 .github/workflows/build-and-test.yml create mode 100644 .github/workflows/release-latest.yml create mode 100644 .github/workflows/release-tags.yml create mode 100644 .gitignore delete mode 100644 .hgignore delete mode 100644 .hgtags.orig delete mode 100644 activity.png delete mode 100644 build.properties create mode 100644 dependencies.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 jitpack.yml create mode 100644 repositories.gradle diff --git a/.github/scripts/test-no-crash-reports.sh b/.github/scripts/test-no-crash-reports.sh new file mode 100644 index 0000000..c67e342 --- /dev/null +++ b/.github/scripts/test-no-crash-reports.sh @@ -0,0 +1,9 @@ +directory="run/crash-reports" +if [ -d $directory ]; then + echo "Crash reports detected:" + cat $directory/* + exit 1 +else + echo "No crash reports detected" + exit 0 +fi diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml new file mode 100644 index 0000000..6c9b3cb --- /dev/null +++ b/.github/workflows/build-and-test.yml @@ -0,0 +1,45 @@ +# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle + +name: Build and test + +on: + pull_request: + branches: [ master, main ] + push: + branches: [ master, main ] + +jobs: + build-and-test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Set up JDK 8 + uses: actions/setup-java@v2 + with: + java-version: '8' + distribution: 'adopt' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Setup the workspace + run: ./gradlew setupCIWorkspace + + - name: Build the mod + run: ./gradlew build + + - name: Run server for 1 minute + run: | + mkdir run + echo "eula=true" > run/eula.txt + timeout 10 ./gradlew runServer || true + + - name: Test no crashes happend + run: | + chmod +x .github/scripts/test-no-crash-reports.sh + .github/scripts/test-no-crash-reports.sh diff --git a/.github/workflows/release-latest.yml b/.github/workflows/release-latest.yml new file mode 100644 index 0000000..5ecccc0 --- /dev/null +++ b/.github/workflows/release-latest.yml @@ -0,0 +1,44 @@ +# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle + +name: Release latest build + +on: + push: + branches: [ master, main ] + +jobs: + build-and-release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Set release version + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + + - name: Set up JDK 8 + uses: actions/setup-java@v2 + with: + java-version: '8' + distribution: 'adopt' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Setup the workspace + run: ./gradlew setupCIWorkspace + + - name: Build the mod + run: ./gradlew build + + - name: Update latest tag + uses: "marvinpinto/action-automatic-releases@latest" + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}" + automatic_release_tag: "latest" + prerelease: false + title: "Latest build" + files: build/libs/*.jar diff --git a/.github/workflows/release-tags.yml b/.github/workflows/release-tags.yml new file mode 100644 index 0000000..25c354b --- /dev/null +++ b/.github/workflows/release-tags.yml @@ -0,0 +1,45 @@ +# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle + +name: Release tagged build + +on: + push: + tags: + - '*' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Set release version + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + + - name: Set up JDK 8 + uses: actions/setup-java@v2 + with: + java-version: '8' + distribution: 'adopt' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Setup the workspace + run: ./gradlew setupCIWorkspace + + - name: Build the mod + run: ./gradlew build + + - name: Release under current tag + uses: "marvinpinto/action-automatic-releases@latest" + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}" + automatic_release_tag: "${{ env.RELEASE_VERSION }}" + prerelease: false + title: "${{ env.RELEASE_VERSION }}" + files: build/libs/*.jar diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..558ad12 --- /dev/null +++ b/.gitignore @@ -0,0 +1,28 @@ +.gradle +.settings +/.idea/ +/run/ +/build/ +/eclipse/ +.classpath +.project +/bin/ +/config/ +/crash-reports/ +/logs/ +options.txt +/saves/ +usernamecache.json +banned-ips.json +banned-players.json +eula.txt +ops.json +server.properties +servers.dat +usercache.json +whitelist.json +/out/ +*.iml +*.ipr +*.iws +src/main/resources/mixins.*.json diff --git a/.hgignore b/.hgignore deleted file mode 100644 index 7199ffb..0000000 --- a/.hgignore +++ /dev/null @@ -1,10 +0,0 @@ -syntax: glob -*.orig -.gradle -build -eclipse -out -*.iml -*.ipr -*.iws -src/main/java/net/* diff --git a/.hgtags.orig b/.hgtags.orig deleted file mode 100644 index 8dc66fc..0000000 --- a/.hgtags.orig +++ /dev/null @@ -1,25 +0,0 @@ -28ccc9a07b5421f7e529c417b9baf0cf0a384d9f v1.2.0 -38f148ebeb8f6cfbdbaff0afc93612eb297188cd v1.3.1 -4a92f4e3296c1b64557ecf30023c61badf598a3e 1.3.2 -8ee781ebab6c82631601fee3dc1fb4d3a03f9351 1.3.3 -2f6144f8e55ca2f0fa6ccbbee707ca58f5e75c80 1.3.4 -45e01e7ee1a8e1587832e388584fd102672066ae 1.3.8_1.6.2 -1e7cde94ccceb8c1425a03c90fe2523afbe20d53 1.3.9_1.6.2 -02ebbb4aeebe23b3eaaded32bda20dad2fe14381 Nightly_131024 -bc4937f3a7d4c8eef31b8273cab6e043a8b354ef Nightly_131025 -246642120b36fb05ed2682ef79e7b48020edf21d Nightly_131116 -9280666656c77770a35c2797129f9fb806ed6367 Nightly_13111 -d2ec5e84d19f679d5b482112ed1fab4cb4d0b427 Nightly_131118 -c7e3d16cb236195aaa6d978fe15706d63831a4e2 Nightly_131121a -e8b1906c3f51a14a12539850404b4622311b936b v1.4.0 -f9daea609042db35e35989da99a1c4c8696eb8ab 1.4.1 -1c391d52f3d955eebe3437d81dd8eca8ca142a8c 1.4.3 -7ff010d0fad85eb59eca7f1bc6583a6dada6ef8d 1.4.5 -5dd753fa7c80d22c3526714d48cf9c3a01918dec 1.4.5a -1066f782daede2a968ec282d4e3eba5a6ec74a53 Waila_1.5.0_dev2 -ad46f8b41bbe08c95a6ae4a6c609be96196148ca Waila_1.5.0 -<<<<<<< local -be89d97648acdc95afe1f7fea6a190641ae629d5 v1.5.2 -======= -bb4fc720238a6545946c35de78e417141625a69c v1.4.5_1.7.2 ->>>>>>> other diff --git a/activity.png b/activity.png deleted file mode 100644 index 2e31c92b1ebda74e95d5f3f4e0e7511f5a2a98fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79264 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[WqC<1QXyLa<`{ab<+C^3yU1AIs6qA?Ug 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 diff --git a/build.gradle b/build.gradle index 2013550..910ddbc 100644 --- a/build.gradle +++ b/build.gradle @@ -1,153 +1,505 @@ +//version: eb0b030ab9cb1d0f9a31f11e69e1ceed1dab2c89 +/* +DO NOT CHANGE THIS FILE! + +Also, you may replace this file at any time if there is an update available. +Please check https://github.com/SinTh0r4s/ExampleMod1.7.10/blob/main/build.gradle for updates. + */ + + +import com.github.jengelman.gradle.plugins.shadow.tasks.ConfigureShadowRelocation +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar + +import java.util.concurrent.TimeUnit + buildscript { repositories { - mavenCentral() maven { name = "forge" - url = "http://files.minecraftforge.net/maven" + url = "https://maven.minecraftforge.net" } maven { name = "sonatype" url = "https://oss.sonatype.org/content/repositories/snapshots/" } + maven { + name = "Scala CI dependencies" + url = "https://repo1.maven.org/maven2/" + } + maven { + name = "jitpack" + url = "https://jitpack.io" + } } dependencies { - classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT' + classpath 'com.github.GTNewHorizons:ForgeGradle:1.2.4' } } +plugins { + id 'idea' + id 'scala' + id("org.ajoberstar.grgit") version("3.1.1") + id("com.github.johnrengelman.shadow") version("4.0.4") + id("com.palantir.git-version") version("0.12.3") +} + +apply plugin: 'forge' + +def projectJavaVersion = JavaLanguageVersion.of(8) + +java { + toolchain { + languageVersion.set(projectJavaVersion) + } +} + +idea { + module { + inheritOutputDirs = true + downloadJavadoc = true + downloadSources = true + } +} + +checkPropertyExists("modName") +checkPropertyExists("modId") +checkPropertyExists("modGroup") +checkPropertyExists("autoUpdateBuildScript") +checkPropertyExists("minecraftVersion") +checkPropertyExists("forgeVersion") +checkPropertyExists("replaceGradleTokenInFile") +checkPropertyExists("gradleTokenModId") +checkPropertyExists("gradleTokenModName") +checkPropertyExists("gradleTokenVersion") +checkPropertyExists("gradleTokenGroupName") +checkPropertyExists("apiPackage") +checkPropertyExists("accessTransformersFile") +checkPropertyExists("usesMixins") +checkPropertyExists("mixinPlugin") +checkPropertyExists("mixinsPackage") +checkPropertyExists("coreModClass") +checkPropertyExists("containsMixinsAndOrCoreModOnly") +checkPropertyExists("usesShadowedDependencies") +checkPropertyExists("developmentEnvironmentUserName") + +def checkPropertyExists(String propertyName) { + if (project.hasProperty(propertyName) == false) { + throw new GradleException("This project requires a property \"" + propertyName + "\"! Please add it your \"gradle.properties\". You can find all properties and their description here: https://github.com/SinTh0r4s/ExampleMod1.7.10/blob/main/gradle.properties") + } +} + + +String javaSourceDir = "src/main/java/" +String scalaSourceDir = "src/main/scala/" + +String targetPackageJava = javaSourceDir + modGroup.toString().replaceAll("\\.", "/") +String targetPackageScala = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") +if((new File(targetPackageJava).exists() || new File(targetPackageScala).exists()) == false) { + throw new GradleException("Could not resolve \"modGroup\"! Could not find " + targetPackageJava + " or " + targetPackageScala) +} + +if(apiPackage) { + targetPackageJava = javaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + apiPackage.toString().replaceAll("\\.", "/") + targetPackageScala = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + apiPackage.toString().replaceAll("\\.", "/") + if((new File(targetPackageJava).exists() || new File(targetPackageScala).exists()) == false) { + throw new GradleException("Could not resolve \"apiPackage\"! Could not find " + targetPackageJava + " or " + targetPackageScala) + } +} + +if(accessTransformersFile) { + String targetFile = "src/main/resources/META-INF/" + accessTransformersFile + if(new File(targetFile).exists() == false) { + throw new GradleException("Could not resolve \"accessTransformersFile\"! Could not find " + targetFile) + } +} + +if(usesMixins.toBoolean()) { + if(mixinsPackage.isEmpty() || mixinPlugin.isEmpty()) { + throw new GradleException("\"mixinPlugin\" requires \"mixinsPackage\" and \"mixinPlugin\" to be set!") + } + + targetPackageJava = javaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + mixinsPackage.toString().replaceAll("\\.", "/") + targetPackageScala = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + mixinsPackage.toString().replaceAll("\\.", "/") + if((new File(targetPackageJava).exists() || new File(targetPackageScala).exists()) == false) { + throw new GradleException("Could not resolve \"mixinsPackage\"! Could not find " + targetPackageJava + " or " + targetPackageScala) + } + + String targetFileJava = javaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + mixinPlugin.toString().replaceAll("\\.", "/") + ".java" + String targetFileScala = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + mixinPlugin.toString().replaceAll("\\.", "/") + ".scala" + String targetFileScalaJava = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + mixinPlugin.toString().replaceAll("\\.", "/") + ".java" + if((new File(targetFileJava).exists() || new File(targetFileScala).exists() || new File(targetFileScalaJava).exists()) == false) { + throw new GradleException("Could not resolve \"mixinPlugin\"! Could not find " + targetFileJava + " or " + targetFileScala + " or " + targetFileScalaJava) + } +} + +if(coreModClass) { + String targetFileJava = javaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + coreModClass.toString().replaceAll("\\.", "/") + ".java" + String targetFileScala = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + coreModClass.toString().replaceAll("\\.", "/") + ".scala" + String targetFileScalaJava = scalaSourceDir + modGroup.toString().replaceAll("\\.", "/") + "/" + coreModClass.toString().replaceAll("\\.", "/") + ".java" + if((new File(targetFileJava).exists() || new File(targetFileScala).exists() || new File(targetFileScalaJava).exists()) == false) { + throw new GradleException("Could not resolve \"coreModClass\"! Could not find " + targetFileJava + " or " + targetFileScala + " or " + targetFileScalaJava) + } +} + +configurations.all { + resolutionStrategy.cacheChangingModulesFor(0, TimeUnit.SECONDS) + + // Make sure GregTech build won't time out + System.setProperty("org.gradle.internal.http.connectionTimeout", 120000 as String) + System.setProperty("org.gradle.internal.http.socketTimeout", 120000 as String) +} + +// Fix Jenkins' Git: chmod a file should not be detected as a change and append a '.dirty' to the version +'git config core.fileMode false'.execute() +// Pulls version from git tag +version = minecraftVersion + "-" + gitVersion() +group = modGroup +archivesBaseName = modId + +minecraft { + version = minecraftVersion + "-" + forgeVersion + "-" + minecraftVersion + runDir = "run" + + if (replaceGradleTokenInFile) { + replaceIn replaceGradleTokenInFile + if(gradleTokenModId) { + replace gradleTokenModId, modId + } + if(gradleTokenModName) { + replace gradleTokenModName, modName + } + if(gradleTokenVersion) { + replace gradleTokenVersion, versionDetails().lastTag + } + if(gradleTokenGroupName) { + replace gradleTokenGroupName, modGroup + } + } +} + +if(file("addon.gradle").exists()) { + apply from: "addon.gradle" +} + +apply from: 'repositories.gradle' + configurations { - deployerJars - //packed - //compile.extendsFrom packed + implementation.extendsFrom(shadowImplementation) } -//add dependency repositories repositories { - mavenLocal() - mavenCentral() maven { - name = "chickenbones" - url = "http://chickenbones.net/maven/" + name = "Overmind forge repo mirror" + url = "https://gregtech.overminddl1.com/" + } + if(usesMixins.toBoolean()) { + maven { + name = "sponge" + url = "https://repo.spongepowered.org/repository/maven-public" + } + maven { + url = "https://jitpack.io" + } } -} - -apply plugin: 'java' -apply plugin: 'forge' -apply plugin: 'maven' - -version = "1.5.11-RC3_1.7.10" -group= "mcp.mobius.waila" // http://maven.apache.org/guides/mini/guide-naming-conventions.html -archivesBaseName = "Waila" - -// Define properties file -ext.configFile = file "build.properties" - -configFile.withReader { - // Load config. It shall from now be referenced as simply config or project.config - def prop = new Properties() - prop.load(it) - project.ext.config = new ConfigSlurper().parse prop } dependencies { - compile "codechicken:CodeChickenLib:${config.mc_version}-${config.ccl_version}:dev" - compile "codechicken:CodeChickenCore:${config.mc_version}-${config.ccc_version}:dev" - compile "codechicken:NotEnoughItems:${config.mc_version}-${config.nei_version}:dev" - deployerJars "org.apache.maven.wagon:wagon-ssh:2.2" -} - -minecraft { - version = "1.7.10-${config.forge_version}-1.7.10" - runDir = "eclipse" -} - -def root = project.projectDir.parentFile -sourceSets { - main { - java { - srcDir new File(root, "src") + if(usesMixins.toBoolean()) { + annotationProcessor("org.ow2.asm:asm-debug-all:5.0.3") + annotationProcessor("com.google.guava:guava:24.1.1-jre") + annotationProcessor("com.google.code.gson:gson:2.8.6") + annotationProcessor("org.spongepowered:mixin:0.8-SNAPSHOT") + // using 0.8 to workaround a issue in 0.7 which fails mixin application + compile("org.spongepowered:mixin:0.7.11-SNAPSHOT") { + // Mixin includes a lot of dependencies that are too up-to-date + exclude module: "launchwrapper" + exclude module: "guava" + exclude module: "gson" + exclude module: "commons-io" + exclude module: "log4j-core" } - resources { - srcDir new File(root, "resources") + compile("com.github.GTNewHorizons:SpongeMixins:1.3.3:dev") + } +} + +apply from: 'dependencies.gradle' + +def mixinConfigJson = "mixins." + modId + ".json" +def mixingConfigRefMap = "mixins." + modId + ".refmap.json" +def refMap = "${tasks.compileJava.temporaryDir}" + File.separator + mixingConfigRefMap +def mixinSrg = "${tasks.reobf.temporaryDir}" + File.separator + "mixins.srg" + +task generateAssets { + if(usesMixins.toBoolean()) { + new File(projectDir.toString() + "/src/main/resources/", mixinConfigJson).text = """{ + "required": true, + "minVersion": "0.7.11", + "package": "${modGroup}.${mixinsPackage}", + "plugin": "${modGroup}.${mixinPlugin}", + "refmap": "${mixingConfigRefMap}", + "target": "@env(DEFAULT)", + "compatibilityLevel": "JAVA_8" +} + +""" + } +} + +task relocateShadowJar(type: ConfigureShadowRelocation) { + target = tasks.shadowJar + prefix = modGroup + ".shadow" +} + +shadowJar { + manifest { + attributes(getManifestAttributes()) + } + + minimize() // This will only allow shading for actually used classes + configurations = [project.configurations.shadowImplementation] + dependsOn(relocateShadowJar) +} + +jar { + manifest { + attributes(getManifestAttributes()) + } + + if(usesShadowedDependencies.toBoolean()) { + dependsOn(shadowJar) + enabled = false + } +} + +reobf { + if(usesMixins.toBoolean()) { + addExtraSrgFile mixinSrg + } +} + +afterEvaluate { + if(usesMixins.toBoolean()) { + tasks.compileJava { + options.compilerArgs += [ + "-AreobfSrgFile=${tasks.reobf.srg}", + "-AoutSrgFile=${mixinSrg}", + "-AoutRefMapFile=${refMap}", + // Elan: from what I understand they are just some linter configs so you get some warning on how to properly code + "-XDenableSunApiLintControl", + "-XDignore.symbol.file" + ] } } } +runClient { + def arguments = [] + + if(usesMixins.toBoolean()) { + arguments += [ + "--mods=../build/libs/$modId-${version}.jar", + "--tweakClass org.spongepowered.asm.launch.MixinTweaker" + ] + } + + if(developmentEnvironmentUserName) { + arguments += [ + "--username", + developmentEnvironmentUserName + ] + } + + args(arguments) +} + +runServer { + def arguments = [] + + if (usesMixins.toBoolean()) { + arguments += [ + "--mods=../build/libs/$modId-${version}.jar", + "--tweakClass org.spongepowered.asm.launch.MixinTweaker" + ] + } + + args(arguments) +} + +tasks.withType(JavaExec).configureEach { + javaLauncher.set( + javaToolchains.launcherFor { + languageVersion = projectJavaVersion + } + ) +} + processResources -{ - // this will ensure that this task is redone when the versions change. - inputs.property "version", project.version - inputs.property "mcversion", project.minecraft.version + { + // this will ensure that this task is redone when the versions change. + inputs.property "version", project.version + inputs.property "mcversion", project.minecraft.version - // replace stuff in mcmod.info, nothing else - from(sourceSets.main.resources.srcDirs) { - include 'mcmod.info' - - // replace version and mcversion - expand 'version':project.version, 'mcversion':project.minecraft.version + // replace stuff in mcmod.info, nothing else + from(sourceSets.main.resources.srcDirs) { + include 'mcmod.info' + + // replace version and mcversion + expand "minecraftVersion": project.minecraft.version, + "modVersion": versionDetails().lastTag, + "modId": modId, + "modName": modName + } + + // copy everything else, thats not the mcmod.info + from(sourceSets.main.resources.srcDirs) { + exclude 'mcmod.info' + } + } + +def getManifestAttributes() { + def manifestAttributes = [:] + if(containsMixinsAndOrCoreModOnly.toBoolean() == false) { + manifestAttributes += ["FMLCorePluginContainsFMLMod": true] } - - // copy everything else, thats not the mcmod.info - from(sourceSets.main.resources.srcDirs) { - exclude 'mcmod.info' + + if(accessTransformersFile) { + manifestAttributes += ["FMLAT" : accessTransformersFile.toString()] } + + if(coreModClass) { + manifestAttributes += ["FMLCorePlugin": modGroup + "." + coreModClass] + } + + if(usesMixins.toBoolean()) { + manifestAttributes += [ + "TweakClass" : "org.spongepowered.asm.launch.MixinTweaker", + "MixinConfigs" : mixinConfigJson, + "ForceLoadAsMod" : containsMixinsAndOrCoreModOnly.toBoolean() == false + ] + } + return manifestAttributes } -//def commonManifest = { -// attributes 'FMLCorePlugin': 'mcp.mobius.wailacore.asm.CoreDescription' -// attributes 'FMLCorePluginContainsFMLMod': 'mcp.mobius.waila.Waila' -//} - -jar { - exclude "**/client/gui/inventory/GuiContainer.class" - exclude "**/client/gui/inventory/GuiContainer.java" - -// manifest commonManifest - -// from { -// configurations.packed.collect { -// it.isDirectory() ? it : zipTree(it).matching { -// exclude "META-INF", "META-INF/**", "*META-INF*", "meta-inf" -// exclude "**.jar", "**/*.jar", "*.jar" -// } -// } -// } +task sourcesJar(type: Jar) { + from (sourceSets.main.allJava) + from (file("$projectDir/LICENSE")) + getArchiveClassifier().set('sources') } -task sourceJar(type: Jar) { - from sourceSets.main.java - from new File(root, "dev") - classifier = 'sources' +task shadowDevJar(type: ShadowJar) { + from sourceSets.main.output + getArchiveClassifier().set("dev") + + manifest { + attributes(getManifestAttributes()) + } + + minimize() // This will only allow shading for actually used classes + configurations = [project.configurations.shadowImplementation] +} + +task relocateShadowDevJar(type: ConfigureShadowRelocation) { + target = tasks.shadowDevJar + prefix = modGroup + ".shadow" +} + +task circularResolverJar(type: Jar) { + dependsOn(relocateShadowDevJar) + dependsOn(shadowDevJar) + enabled = false } task devJar(type: Jar) { from sourceSets.main.output - classifier = 'dev' + getArchiveClassifier().set("dev") + + manifest { + attributes(getManifestAttributes()) + } + + if(usesShadowedDependencies.toBoolean()) { + dependsOn(circularResolverJar) + enabled = false + } +} + +task apiJar(type: Jar) { + from (sourceSets.main.allJava) { + include modGroup.toString().replaceAll("\\.", "/") + "/" + apiPackage.toString() + '/**' + } + + from (sourceSets.main.output) { + include modGroup.toString().replaceAll("\\.", "/") + "/" + apiPackage.toString() + '/**' + } + + from (sourceSets.main.resources.srcDirs) { + include("LICENSE") + } + + getArchiveClassifier().set('api') } artifacts { - archives sourceJar, devJar -} - -uploadArchives { - dependsOn 'reobf' - repositories.mavenDeployer { - configuration = configurations.deployerJars - repository(url: "scp://mobiusstrip.eu/home/mobius/web/maven"){ - authentication(userName: "mobius") - } - - pom { - groupId = project.group - version = project.version - artifactId = project.archivesBaseName - project { - name project.archivesBaseName - packaging 'jar' - description 'Waila ' - url 'http://mobiusstrip.eu' - } - } + archives sourcesJar + archives devJar + if(apiPackage) { + archives apiJar } - +} + +// Updating +task updateBuildScript { + doLast { + if (updateBuildScript()) return + + print("Build script already up-to-date!") + } +} + +if (isNewBuildScriptVersionAvailable()) { + if (autoUpdateBuildScript.toBoolean()) { + updateBuildScript() + } else { + println("Build script update available! Run 'gradle updateBuildScript'") + } +} + +static URL availableBuildScriptUrl() { + new URL("https://raw.githubusercontent.com/SinTh0r4s/ExampleMod1.7.10/main/build.gradle") +} + +static boolean updateBuildScript() { + if (isNewBuildScriptVersionAvailable()) { + def buildscriptFile = new File("build.gradle") + availableBuildScriptUrl().withInputStream { i -> buildscriptFile.withOutputStream { it << i } } + print("Build script updated. Please REIMPORT the project or RESTART your IDE!") + return true + } + return false +} + +static boolean isNewBuildScriptVersionAvailable() { + Map parameters = ["connectTimeout": 2000, "readTimeout": 2000] + + String currentBuildScript = new File("build.gradle").getText() + String currentBuildScriptHash = getVersionHash(currentBuildScript) + String availableBuildScript = availableBuildScriptUrl().newInputStream(parameters).getText() + String availableBuildScriptHash = getVersionHash(availableBuildScript) + + boolean isUpToDate = currentBuildScriptHash.empty || availableBuildScriptHash.empty || currentBuildScriptHash == availableBuildScriptHash + return !isUpToDate +} + +static String getVersionHash(String buildScriptContent) { + String versionLine = buildScriptContent.find("^//version: [a-z0-9]*") + if(versionLine != null) { + return versionLine.split(": ").last() + } + return "" +} + +configure(updateBuildScript) { + group = 'forgegradle' + description = 'Updates the build script to the latest version' } diff --git a/build.properties b/build.properties deleted file mode 100644 index 8b1f6ac..0000000 --- a/build.properties +++ /dev/null @@ -1,7 +0,0 @@ -mc_version=1.7.10 -forge_version=10.13.4.1448 -ccl_version=1.1.3.138 -ccc_version=1.0.7.+ -nei_version=1.0.5.+ -mod_version=1.0 -waila_version=1.5.2a diff --git a/dependencies.gradle b/dependencies.gradle new file mode 100644 index 0000000..ee0ecaf --- /dev/null +++ b/dependencies.gradle @@ -0,0 +1,5 @@ +// Add your dependencies here + +dependencies { + compile("com.github.GTNewHorizons:NotEnoughItems:unified-build-script-SNAPSHOT:dev") +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..097b11a --- /dev/null +++ b/gradle.properties @@ -0,0 +1,60 @@ +modName = Waila + +# This is a case-sensitive string to identify your mod. Convention is to use lower case. +modId = Waila + +modGroup = mcp.mobius.waila + +# WHY is there no version field? +# The build script relies on git to provide a version via tags. It is super easy and will enable you to always know the +# code base or your binary. Check out this tutorial: https://blog.mattclemente.com/2017/10/13/versioning-with-git-tags/ + +# Will update your build.gradle automatically whenever an update is available +autoUpdateBuildScript = false + +minecraftVersion = 1.7.10 +forgeVersion = 10.13.4.1614 + +# Select a username for testing your mod with breakpoints. You may leave this empty for a random user name each time you +# restart Minecraft in development. Choose this dependent on your mod: +# Do you need consistent player progressing (for example Thaumcraft)? -> Select a name +# Do you need to test how your custom blocks interacts with a player that is not the owner? -> leave name empty +developmentEnvironmentUserName = "Developer" + +# Define a source file of your project with: +# public static final String VERSION = "GRADLETOKEN_VERSION"; +# The string's content will be replaced with your mods version when compiled. You should use this to specify your mod's +# version in @Mod([...], version = VERSION, [...]) +# Leave these properties empty to skip individual token replacements +replaceGradleTokenInFile = Waila.java +gradleTokenModId = +gradleTokenModName = +gradleTokenVersion = GRADLETOKEN_VERSION +gradleTokenGroupName = + +# In case your mod provides an API for other mods to implement you may declare its package here. Otherwise you can +# leave this property empty. +# Example value: apiPackage = api + modGroup = com.myname.mymodid -> com.myname.mymodid.api +apiPackage = + +# Specify the configuration file for Forge's access transformers here. I must be placed into /src/main/resources/META-INF/ +# Example value: mymodid_at.cfg +accessTransformersFile = + +# Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled! +usesMixins = false +# Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise. +mixinPlugin = +# Specify the package that contains all of your Mixins. You may only place Mixins in this package or the build will fail! +mixinsPackage = +# Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin! +# This parameter is for legacy compatability only +# Example value: coreModClass = asm.FMLPlugin + modGroup = com.myname.mymodid -> com.myname.mymodid.asm.FMLPlugin +coreModClass = +# If your project is only a consolidation of mixins or a core mod and does NOT contain a 'normal' mod ( = some class +# that is annotated with @Mod) you want this to be true. When in doubt: leave it on false! +containsMixinsAndOrCoreModOnly = false + +# If enabled, you may use 'shadowImplementation' for dependencies. They will be integrated in your jar. It is your +# responsibility check the licence and request permission for distribution, if required. +usesShadowedDependencies = false diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..5c2d1cf016b3885f6930543d57b744ea8c220a1a GIT binary patch literal 55616 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 \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..9618d8d --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,100 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/jitpack.yml b/jitpack.yml new file mode 100644 index 0000000..09bbb51 --- /dev/null +++ b/jitpack.yml @@ -0,0 +1,2 @@ +before_install: + - ./gradlew setupCIWorkspace \ No newline at end of file diff --git a/repositories.gradle b/repositories.gradle new file mode 100644 index 0000000..7d02b58 --- /dev/null +++ b/repositories.gradle @@ -0,0 +1,7 @@ +// Add any additional repositiroes for your dependencies here + +repositories { + maven { + url = "https://jitpack.io" + } +} diff --git a/src/main/java/mcp/mobius/waila/Waila.java b/src/main/java/mcp/mobius/waila/Waila.java index cd8835c..ed77a95 100644 --- a/src/main/java/mcp/mobius/waila/Waila.java +++ b/src/main/java/mcp/mobius/waila/Waila.java @@ -44,7 +44,7 @@ import mcp.mobius.waila.cbcore.LangUtil; import mcp.mobius.waila.client.KeyEvent; import mcp.mobius.waila.commands.CommandDumpHandlers; -@Mod(modid="Waila", name="Waila", version="1.5.11", dependencies="after:NotEnoughItems@[1.0.4.0,)", acceptableRemoteVersions="*") +@Mod(modid="Waila", name="Waila", version="GRADLETOKEN_VERSION", dependencies="after:NotEnoughItems@[1.0.4.0,)", acceptableRemoteVersions="*") /* @NetworkMod(channels = {"Waila"},clientSideRequired=false, serverSideRequired=false, connectionHandler = WailaConnectionHandler.class, packetHandler = WailaPacketHandler.class, versionBounds="[1.5.0,)") diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 7154872..bd1fc2e 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -1,10 +1,10 @@ [ { - "modid": "waila", - "name": "Waila", + "modid": "${modId}", + "name": "${modName}", "description": "All your data are belong to us.", - "version": "${version}", - "mcversion": "${mcversion}", + "version": "${modVersion}", + "mcversion": "${minecraftVersion}", "url": "", "updateUrl": "", "authors": ["ProfMobius"],