aboutsummaryrefslogtreecommitdiff
path: root/build.gradle
blob: a29d2f8d53fce27402a894cc89650c242127d138 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
buildscript {
    repositories {
        maven { url = 'https://maven.minecraftforge.net' }
        mavenCentral()
    }
    dependencies {
        classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true
        classpath "com.palantir.gradle.gitversion:gradle-git-version:0.13.0"
    }
}

apply plugin: 'net.minecraftforge.gradle'
apply plugin: 'eclipse'
apply plugin: 'maven-publish'
apply plugin: "com.palantir.git-version"

version          = gitVersion()
group            = 'co.fantabos.bscv'
archivesBaseName = 'boscovicino'

// Minecraft and Forge versions
def minecraftVersion = '1.16.5'
def forgeVersion     = '36.2.34'

project.ext { // external properties coming from gradle.properties
    deployJarDo          = getProjectProperty("deployJar.do", "false")
    deployJarTargetDir   = getProjectProperty("deployJar.targetDir", ".")
}

def getProjectProperty(String property, String fallback) { //allows for custom gradle.properties while retaining default fallback values
    return (project.hasProperty(property)) ? project.property(property) : fallback
}

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'))

minecraft {
    mappings channel: 'official', version: minecraftVersion
    runs {
        client {
            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'
            property 'forge.logging.console.level', 'debug'

            mods {
                bscv {
                    source sourceSets.main
                }
            }
        }

        data {
            workingDirectory project.file('run')

            // "SCAN": For mods scan.
            // "REGISTRIES": For firing of registry events.
            // "REGISTRYDUMP": For getting the contents of all registries.
            property 'forge.logging.markers', 'REGISTRIES'
            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.
            args '--mod', 'bsvc', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')

            mods {
                bscv {
                    source sourceSets.main
                }
            }
        }
    }
}

// Include resources generated by data generators.
sourceSets.main.resources { srcDir 'src/generated/resources' }

dependencies {
    minecraft "net.minecraftforge:forge:${minecraftVersion}-${forgeVersion}"
}

jar {
    archiveName = "${jar.baseName}.${jar.extension}"
    manifest {
        attributes([
            "Specification-Title": "bscv",
            "Specification-Vendor": "ftbsc",
            "Specification-Version": "1", // We are version 1 of ourselves
            "Implementation-Title": project.name,
            "Implementation-Version": "${version}",
            "Implementation-Vendor" :"ftbsc",
            "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
        ])
    }
}

jar.finalizedBy('reobfJar')

//copy jar from build/libs to the forge mod folder
tasks.register('deployJar', Copy) {
    if (!project.ext.deployJarDo.toBoolean()) return
    from project.jar
    into project.ext.deployJarTargetDir
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            artifact jar
        }
    }
    repositories {
        maven {
            url "file:///${project.projectDir}/mcmodsrepo"
        }
    }
}

build {
    //dependsOn shadowJar, reobfShadowJar
    finalizedBy deployJar
}