feat: ported copyJar from fantabos.co client
also removed useless comments from the forge example
This commit is contained in:
parent
9f9292f26c
commit
d174f06d0e
2 changed files with 90 additions and 81 deletions
151
build.gradle
151
build.gradle
|
@ -9,37 +9,42 @@ buildscript {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
apply plugin: 'net.minecraftforge.gradle'
|
apply plugin: 'net.minecraftforge.gradle'
|
||||||
// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
|
|
||||||
apply plugin: 'eclipse'
|
apply plugin: 'eclipse'
|
||||||
apply plugin: 'maven-publish'
|
apply plugin: 'maven-publish'
|
||||||
apply plugin: "com.palantir.git-version"
|
apply plugin: "com.palantir.git-version"
|
||||||
|
|
||||||
version gitVersion()
|
version gitVersion()
|
||||||
group = 'co.fantabos.boscovicino' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
|
group = 'co.fantabos.bscv'
|
||||||
archivesBaseName = 'boscovicino'
|
archivesBaseName = 'boscovicino'
|
||||||
|
|
||||||
|
project.ext {
|
||||||
|
minecraftVersion = getProjectProperty("bscv.mc.version", "1.16.5")
|
||||||
|
forgeVersion = getProjectProperty("bscv.forge.version", "1.16.5-36.2.39")
|
||||||
|
copyJarDo = getProjectProperty("copyjar.do", "false")
|
||||||
|
copyJarUseVersionSubDir = getProjectProperty("copyjar.useVersionSubDir", "false")
|
||||||
|
copyJarKeepBackups = getProjectProperty("copyjar.keepBackups", "true")
|
||||||
|
copyJarTargetGameDir = getProjectProperty("copyjar.targetGameDir", getOsGameDir())
|
||||||
|
}
|
||||||
|
|
||||||
|
def getProjectProperty(String property, String fallback) { //allows for custom gradle.properties while retaining default fallback values
|
||||||
|
return (project.hasProperty(property)) ? project.property(property) : fallback
|
||||||
|
}
|
||||||
|
|
||||||
|
def getOsGameDir() {
|
||||||
|
if (org.gradle.internal.os.OperatingSystem.current().isWindows())
|
||||||
|
return System.getenv("APPDATA") + "/.minecraft"
|
||||||
|
else if (org.gradle.internal.os.OperatingSystem.current().isMacOsX())
|
||||||
|
return System.properties["user.home"] + "/Library/Application Support/minecraft"
|
||||||
|
else
|
||||||
|
return System.properties["user.home"] + "/.minecraft"
|
||||||
|
}
|
||||||
|
|
||||||
java.toolchain.languageVersion = JavaLanguageVersion.of(8) // Mojang ships Java 8 to end users, so your mod should target Java 8.
|
java.toolchain.languageVersion = JavaLanguageVersion.of(8) // Mojang ships Java 8 to end users, so your mod should target Java 8.
|
||||||
|
|
||||||
println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch'))
|
println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch'))
|
||||||
minecraft {
|
|
||||||
// The mappings can be changed at any time, and must be in the following format.
|
|
||||||
// Channel: Version:
|
|
||||||
// snapshot YYYYMMDD Snapshot are built nightly.
|
|
||||||
// stable # Stables are built at the discretion of the MCP team.
|
|
||||||
// official MCVersion Official field/method names from Mojang mapping files
|
|
||||||
//
|
|
||||||
// You must be aware of the Mojang license when using the 'official' mappings.
|
|
||||||
// See more information here: https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md
|
|
||||||
//
|
|
||||||
// Use non-default mappings at your own risk. they may not always work.
|
|
||||||
// Simply re-run your setup task after changing the mappings to update your workspace.
|
|
||||||
mappings channel: 'official', version: '1.16.5'
|
|
||||||
// makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
|
|
||||||
|
|
||||||
// accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
|
|
||||||
|
|
||||||
// Default run configurations.
|
minecraft {
|
||||||
// These can be tweaked, removed, or duplicated as needed.
|
mappings channel: 'official', version: "${project.ext.minecraftVersion}"
|
||||||
runs {
|
runs {
|
||||||
client {
|
client {
|
||||||
workingDirectory project.file('run')
|
workingDirectory project.file('run')
|
||||||
|
@ -50,32 +55,6 @@ minecraft {
|
||||||
// "REGISTRIES": For firing of registry events.
|
// "REGISTRIES": For firing of registry events.
|
||||||
// "REGISTRYDUMP": For getting the contents of all registries.
|
// "REGISTRYDUMP": For getting the contents of all registries.
|
||||||
property 'forge.logging.markers', 'REGISTRIES'
|
property 'forge.logging.markers', 'REGISTRIES'
|
||||||
|
|
||||||
// Recommended logging level for the console
|
|
||||||
// You can set various levels here.
|
|
||||||
// Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels
|
|
||||||
property 'forge.logging.console.level', 'debug'
|
|
||||||
|
|
||||||
mods {
|
|
||||||
bscv {
|
|
||||||
source sourceSets.main
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
|
||||||
workingDirectory project.file('run')
|
|
||||||
|
|
||||||
// Recommended logging data for a userdev environment
|
|
||||||
// The markers can be changed as needed.
|
|
||||||
// "SCAN": For mods scan.
|
|
||||||
// "REGISTRIES": For firing of registry events.
|
|
||||||
// "REGISTRYDUMP": For getting the contents of all registries.
|
|
||||||
property 'forge.logging.markers', 'REGISTRIES'
|
|
||||||
|
|
||||||
// Recommended logging level for the console
|
|
||||||
// You can set various levels here.
|
|
||||||
// Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels
|
|
||||||
property 'forge.logging.console.level', 'debug'
|
property 'forge.logging.console.level', 'debug'
|
||||||
|
|
||||||
mods {
|
mods {
|
||||||
|
@ -88,16 +67,10 @@ minecraft {
|
||||||
data {
|
data {
|
||||||
workingDirectory project.file('run')
|
workingDirectory project.file('run')
|
||||||
|
|
||||||
// Recommended logging data for a userdev environment
|
|
||||||
// The markers can be changed as needed.
|
|
||||||
// "SCAN": For mods scan.
|
// "SCAN": For mods scan.
|
||||||
// "REGISTRIES": For firing of registry events.
|
// "REGISTRIES": For firing of registry events.
|
||||||
// "REGISTRYDUMP": For getting the contents of all registries.
|
// "REGISTRYDUMP": For getting the contents of all registries.
|
||||||
property 'forge.logging.markers', 'REGISTRIES'
|
property 'forge.logging.markers', 'REGISTRIES'
|
||||||
|
|
||||||
// Recommended logging level for the console
|
|
||||||
// You can set various levels here.
|
|
||||||
// Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels
|
|
||||||
property 'forge.logging.console.level', 'debug'
|
property 'forge.logging.console.level', 'debug'
|
||||||
|
|
||||||
// Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources.
|
// Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources.
|
||||||
|
@ -116,32 +89,9 @@ minecraft {
|
||||||
sourceSets.main.resources { srcDir 'src/generated/resources' }
|
sourceSets.main.resources { srcDir 'src/generated/resources' }
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
// Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed
|
minecraft "net.minecraftforge:forge:${project.ext.forgeVersion}"
|
||||||
// that the dep is a ForgeGradle 'patcher' dependency. And it's 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:1.16.5-36.2.39'
|
|
||||||
|
|
||||||
// You may put jars on which you depend on in ./libs or you may define them like so..
|
|
||||||
// compile "some.group:artifact:version:classifier"
|
|
||||||
// compile "some.group:artifact:version"
|
|
||||||
|
|
||||||
// Real examples
|
|
||||||
// compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env
|
|
||||||
// compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env
|
|
||||||
|
|
||||||
// The 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime.
|
|
||||||
// provided 'com.mod-buildcraft:buildcraft:6.0.8:dev'
|
|
||||||
|
|
||||||
// These dependencies get remapped to your current MCP mappings
|
|
||||||
// deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev'
|
|
||||||
|
|
||||||
// For more info...
|
|
||||||
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
|
|
||||||
// http://www.gradle.org/docs/current/userguide/dependency_management.html
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Example for how to get properties into the manifest for reading by the runtime..
|
|
||||||
jar {
|
jar {
|
||||||
archiveName = "${jar.baseName}.${jar.extension}"
|
archiveName = "${jar.baseName}.${jar.extension}"
|
||||||
manifest {
|
manifest {
|
||||||
|
@ -157,11 +107,50 @@ jar {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Example configuration to allow publishing using the maven-publish task
|
jar.finalizedBy('reobfJar')
|
||||||
// This is the preferred method to reobfuscate your jar file
|
|
||||||
jar.finalizedBy('reobfJar')
|
tasks.register('copyJar', Copy) {
|
||||||
// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing
|
if(!project.ext.copyJarDo.toBoolean()) return
|
||||||
//publish.dependsOn('reobfJar')
|
def modDir = "${project.ext.copyJarTargetGameDir}/mods/"
|
||||||
|
|
||||||
|
//check if the per-version subdirectory is disabled
|
||||||
|
if(project.ext.copyJarUseVersionSubDir.toBoolean())
|
||||||
|
modDir = modDir + project.ext.minecraftVersion
|
||||||
|
|
||||||
|
// find previous jar (if it exists)
|
||||||
|
final previousJars = project.fileTree(dir: modDir).matching {
|
||||||
|
include project.archivesBaseName + '*'
|
||||||
|
}.files
|
||||||
|
|
||||||
|
//change filename
|
||||||
|
if (previousJars) {
|
||||||
|
if(copyJarKeepBackups.toBoolean()) {
|
||||||
|
//create .backups folder
|
||||||
|
final backupDir = modDir + '/.backups/'
|
||||||
|
project.file(backupDir).mkdirs()
|
||||||
|
|
||||||
|
for (File previousJar : previousJars) {
|
||||||
|
final n = modDir + '/.backups/' + previousJar.getName() + '.bk'
|
||||||
|
def f = project.file(n)
|
||||||
|
def i = 1
|
||||||
|
while (f.exists()) {
|
||||||
|
f = project.file(n + '_' + i)
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
previousJar.renameTo(f)
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
previousJars
|
||||||
|
.stream()
|
||||||
|
.filter(f -> f.toString().toLowerCase().endsWith("jar")) //dont kill old backups but smite existing jars
|
||||||
|
.forEach(f -> f.delete())
|
||||||
|
}
|
||||||
|
|
||||||
|
//copy jar from build/libs to the forge mod folder
|
||||||
|
//from shadowJar //we want the über version, not the small one
|
||||||
|
from reobfJar
|
||||||
|
into modDir
|
||||||
|
}
|
||||||
|
|
||||||
publishing {
|
publishing {
|
||||||
publications {
|
publications {
|
||||||
|
|
20
gradle.properties.example
Normal file
20
gradle.properties.example
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
## The following is an example gradle.properties file.
|
||||||
|
# You can use the gradle.properties file to customize several parts of the building process.
|
||||||
|
# You don't necessarily have to use all the keys. You can delete them, there are fallback values.
|
||||||
|
# Still, beware that misuse of the properties file may result in build failure.
|
||||||
|
# You shouldn't touch the properties starting with "bscv" unless you really know what you are doing.
|
||||||
|
|
||||||
|
#The Minecraft version the client is for. Changing this may break things, take care.
|
||||||
|
bscv.mc.version=1.16.5
|
||||||
|
#The Forge version the client is built with. Minor version changes SHOULD work fine.
|
||||||
|
bscv.forge.version=1.16.5-36.2.39
|
||||||
|
#Tells build.gradle to automatically copy the resulting artifact to your mods folder.
|
||||||
|
copyjar.do=false
|
||||||
|
#Whether you want tha artifact to be stored in a version-specific subfolder (e.g. mods/1.12.2/).
|
||||||
|
copyjar.useVersionSubDir=false
|
||||||
|
#Saves old artifacts found in the mods folder in a .backup subfolder.
|
||||||
|
copyjar.keepBackups=true
|
||||||
|
#Tells the build.gradle where to find the game folder to copy the JAR in.
|
||||||
|
#Only use this if you want to use the auto-copy feature with third party launchers such as PolyMC and MultiMC.
|
||||||
|
#Note that, regardless of your OS, you should use "/" as folder separator.
|
||||||
|
copyjar.targetGameDir=C:/Program Files/MultiMC/instances/BoSCoVicino/.minecraft
|
Loading…
Reference in a new issue