1- buildscript {
2- repositories {
3- maven { url = ' https://maven.minecraftforge.net' }
4- maven { url = ' https://repo.spongepowered.org/repository/maven-public/' }
5- mavenCentral()
6- }
7- dependencies {
8- classpath group : ' net.minecraftforge.gradle' , name : ' ForgeGradle' , version : ' 6.+' , changing : true
9- classpath ' org.spongepowered:mixingradle:0.7-SNAPSHOT'
10- classpath " gradle.plugin.com.matthewprenger:CurseGradle:1.4.0"
11- classpath group : ' com.modrinth.minotaur' , name : ' Minotaur' , version : ' 2+'
12- }
1+ plugins {
2+ id ' java-library'
3+ id ' eclipse'
4+ id ' idea'
5+ id ' maven-publish'
6+ id ' net.neoforged.gradle.userdev' version ' 7.0.142'
7+ id ' net.darkhax.curseforgegradle' version ' 1.1.15'
8+ id " com.modrinth.minotaur" version " 2.+"
139}
1410
15- apply plugin : ' net.minecraftforge.gradle'
16- apply plugin : ' org.spongepowered.mixin'
17- apply plugin : " com.matthewprenger.cursegradle"
18- apply plugin : ' maven-publish'
19- apply plugin : ' com.modrinth.minotaur'
20-
21- group = ' uk.co.hexeption'
22- version = ' 1.20.1-1.0.0'
2311def env = System . getenv()
2412if (env. GITHUB_RUN_NUMBER ) {
25- version = version + " +" + " ${ env.GITHUB_RUN_NUMBER} "
26- }
27-
28- java {
29- archivesBaseName = ' AEInfinityBooster'
30- toolchain. languageVersion = JavaLanguageVersion . of(17 )
31- }
32- println (' Java: ' + System . getProperty(' java.version' ) + ' JVM: ' + System . getProperty(' java.vm.version' ) + ' (' + System . getProperty(' java.vendor' ) + ' ) Arch: ' + System . getProperty(' os.arch' ))
33-
34- minecraft {
35- mappings channel : ' official' , version : ' 1.20.1'
36-
37- runs {
38- client {
39- workingDirectory project. file(' run/client' )
40-
41- property ' forge.logging.markers' , ' REGISTRIES'
42- property ' forge.logging.console.level' , ' debug'
43-
44- mods {
45- aeinfinitybooster {
46- source sourceSets. main
47- }
48- }
49- }
50-
51- server {
52- workingDirectory project. file(' run/server' )
53-
54- property ' forge.logging.markers' , ' REGISTRIES'
55- property ' forge.logging.console.level' , ' debug'
56-
57- mods {
58- aeinfinitybooster {
59- source sourceSets. main
60- }
61- }
62- }
63-
64- data {
65- workingDirectory project. file(' run/data' )
66-
67- property ' forge.logging.markers' , ' REGISTRIES'
68- property ' forge.logging.console.level' , ' debug'
69-
70- args ' --mod' , ' aeinfinitybooster' , ' --all' , ' --output' , file(' src/generated/resources/' ), ' --existing' , file(' src/main/resources/' )
71-
72- mods {
73- aeinfinitybooster {
74- source sourceSets. main
75- }
76- }
77- }
78- }
13+ mod_version = ' neoforge-1.20.6-1.0.0' + " +" + " ${ env.GITHUB_RUN_NUMBER} "
7914}
8015
81- mixin {
82- add sourceSets. main, " AEInfinityBooster.refmap.json"
83-
84- config " AEInfinityBooster.mixins.json"
85- }
86-
87- sourceSets. main. resources { srcDir ' src/generated/resources' }
16+ version = mod_version
17+ group = mod_group_id
8818
8919repositories {
20+ mavenLocal()
9021 maven {
9122 name " Modmaven"
9223 url " https://modmaven.dev/"
@@ -105,110 +36,112 @@ repositories {
10536 }
10637}
10738
108- dependencies {
109- minecraft ' net.minecraftforge:forge:1.20.1-47.1.43'
110- annotationProcessor ' org.spongepowered:mixin:0.8.5:processor'
111- runtimeOnly fg. deobf(" mezz.jei:jei-1.20.1-forge:15.0.0.12" )
112- compileOnly fg. deobf(" appeng:appliedenergistics2-forge:15.0.9-beta" )
113- runtimeOnly fg. deobf(" appeng:appliedenergistics2-forge:15.0.9-beta" )
39+ base {
40+ archivesName = mod_id
11441}
11542
116- jar {
117- manifest {
118- attributes([
119- " Specification-Title" : " aeinfinitybooster" ,
120- // "Specification-Vendor": "aeinfinitybooster authors",
121- " Specification-Version" : " 1" , // We are version 1 of ourselves
122- " Implementation-Title" : project. name,
123- " Implementation-Version" : project. jar. archiveVersion,
124- // "Implementation-Vendor": "aeinfinitybooster authors",
125- " Implementation-Timestamp" : new Date (). format(" yyyy-MM-dd'T'HH:mm:ssZ" ),
126- " MixinConfigs" : " AEInfinityBooster.mixins.json"
127- ])
43+ // Mojang ships Java 21 to end users starting in 1.20.5, so mods should target Java 21.
44+ java. toolchain. languageVersion = JavaLanguageVersion . of(21 )
45+
46+ runs {
47+ configureEach {
48+ systemProperty ' forge.logging.markers' , ' REGISTRIES'
49+ systemProperty ' forge.logging.console.level' , ' debug'
50+
51+ modSource project. sourceSets. main
52+ }
53+
54+ client {
55+ systemProperty ' forge.enabledGameTestNamespaces' , project. mod_id
56+ }
57+
58+ server {
59+ systemProperty ' forge.enabledGameTestNamespaces' , project. mod_id
60+ programArgument ' --nogui'
61+ }
62+
63+ gameTestServer {
64+ systemProperty ' forge.enabledGameTestNamespaces' , project. mod_id
65+ }
66+
67+ data {
68+ programArguments. addAll ' --mod' , project. mod_id, ' --all' , ' --output' , file(' src/generated/resources/' ). getAbsolutePath(), ' --existing' , file(' src/main/resources/' ). getAbsolutePath()
12869 }
12970}
13071
131- jar . finalizedBy( ' reobfJar ' )
72+ sourceSets . main . resources { srcDir ' src/generated/resources ' }
13273
133- mixin {
134- add sourceSets . main, " AEInfinityBooster.refmap.json "
74+ configurations {
75+ runtimeClasspath . extendsFrom localRuntime
13576}
13677
137- task sourcesJar (type : Jar , dependsOn : classes) {
138- archiveClassifier = ' sources'
139- from sourceSets. main. allSource
78+ dependencies {
79+ implementation " net.neoforged:neoforge:${ neo_version} "
80+ annotationProcessor ' org.spongepowered:mixin:0.8.5:processor'
81+ runtimeOnly " mezz.jei:jei-1.20.6-neoforge:18.0.0.62"
82+ compileOnly " appeng:appliedenergistics2-neoforge:18.1.3-alpha"
83+ runtimeOnly " appeng:appliedenergistics2-neoforge:18.1.3-alpha"
14084}
14185
142- task deobfJar (type : Jar ) {
143- from sourceSets. main. output
144- archiveClassifier = ' deobf'
86+ tasks. withType(ProcessResources ). configureEach {
87+ var replaceProperties = [
88+ minecraft_version : minecraft_version,
89+ minecraft_version_range : minecraft_version_range,
90+ neo_version : neo_version,
91+ neo_version_range : neo_version_range,
92+ loader_version_range : loader_version_range,
93+ mod_id : mod_id,
94+ mod_name : mod_name,
95+ mod_license : mod_license,
96+ mod_version : mod_version,
97+ mod_authors : mod_authors,
98+ mod_description : mod_description
99+ ]
100+ inputs. properties replaceProperties
101+
102+ filesMatching([' META-INF/neoforge.mods.toml' ]) {
103+ expand replaceProperties
104+ }
145105}
146106
147- artifacts {
148- archives jar
149- archives sourcesJar
150- archives deobfJar
107+
108+ tasks. withType(JavaCompile ). configureEach {
109+ options. encoding = ' UTF-8' // Use the UTF-8 charset for Java compilation
151110}
152111
153- curseforge {
154- if (env. CURSE_API_KEY ) {
155- apiKey = env. CURSE_API_KEY
156- }
157- project {
158- id = ' 559313'
159- changelog = ' A changelog can be found at https://github.com/Hexeption/AEInfinityBooster'
160- releaseType = ' release'
161- addGameVersion ' 1.20'
162- addGameVersion ' 1.20.1'
163-
164- mainArtifact(jar) {
165- displayName = " AEInfinityBooster v$version "
166- }
167- relations {
168- requiredDependency ' applied-energistics-2'
169- }
112+ // IDEA no longer automatically downloads sources/javadoc jars for dependencies, so we need to explicitly enable the behavior.
113+ idea {
114+ module {
115+ downloadSources = true
116+ downloadJavadoc = true
170117 }
171118}
172119
173- // configure the maven publication
174- publishing {
175- publications {
176- mavenJava(MavenPublication ) {
177- artifact jar
178- artifact sourcesJar
179- artifact deobfJar
180- }
181- }
120+ task publishCurseForge (type : net.darkhax.curseforgegradle.TaskPublishCurseForge ) {
121+
122+ apiToken = env. CURSE_API_KEY
123+
124+ // The main file to upload
125+ def mainFile = upload(559313 , jar)
126+ mainFile. releaseType = ' release'
127+ mainFile. changelog = ' A changelog can be found at https://github.com/Hexeption/AEInfinityBooster'
128+ mainFile. changelogType = ' markdown'
129+ mainFile. gameVersions = [' 1.20.6' ]
130+ mainFile. addModLoader(" neoforge" )
131+ mainFile. displayName = " AEInfinityBooster v${ version} "
132+
182133
183- // select the repositories you want to publish to
184- repositories {
185- // uncomment to publish to the local maven
186- // mavenLocal()
187- if (env. REPO_PASSWORD ) {
188- maven {
189- url = " https://nexus.hexeption.dev/repository/hex-mods/"
190- credentials {
191- username = " admin"
192- password = env. REPO_PASSWORD
193- }
194- }
195- }
196- }
197134}
198135
199136modrinth {
200- if (env. MODRINTH_API_KEY ) {
201- token = env. MODRINTH_API_KEY
202- }
137+ token = env. MODRINTH_API_KEY
203138 projectId = ' VQhDBNs8'
204139 versionName = " AEInfinityBooster v$version "
205140 changelog = ' A changelog can be found at https://github.com/Hexeption/AEInfinityBooster'
206- versionNumber = " $version "
207141 uploadFile = jar
208- gameVersions = [" 1.20.1 " ]
209- loaders = [" forge " ]
142+ gameVersions = [" 1.20.6 " ]
143+ loaders = [" neoforge " ]
210144 dependencies {
211- required. version " ae2" , " forge-15.0.9-beta "
145+ required. version " ae2" , " 18.1.3-alpha "
212146 }
213147}
214-
0 commit comments