Skip to content

Commit 03a3eb1

Browse files
committed
Use moddevgradle
1 parent 039df17 commit 03a3eb1

File tree

15 files changed

+213
-64
lines changed

15 files changed

+213
-64
lines changed

build.gradle

Lines changed: 111 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1+
import java.util.regex.Matcher
12
import se.bjurr.gitchangelog.plugin.gradle.GitChangelogTask
23
import static org.apache.commons.lang3.StringUtils.repeat
34

45
plugins {
56
id 'java-library'
67
id 'eclipse'
78
id 'idea'
8-
id 'net.neoforged.gradle.userdev' version "$neo_gradle_version"
9-
id 'se.bjurr.gitchangelog.git-changelog-gradle-plugin' version '2.1.2'
10-
id 'me.modmuss50.mod-publish-plugin' version '0.5.1'
11-
id 'com.diffplug.spotless' version '6.25.0'
9+
id 'net.neoforged.moddev' version "$mod_dev_gradle"
10+
id 'se.bjurr.gitchangelog.git-changelog-gradle-plugin' version '3.1.1'
11+
id 'me.modmuss50.mod-publish-plugin' version '1.1.0'
12+
id 'com.diffplug.spotless' version '8.1.0'
1213
}
1314

1415
def isRelease = System.getenv('CURSEFORGE_TOKEN')
@@ -36,33 +37,64 @@ println("JVM: ${System.getProperty('java.vm.version')} (${System.getProperty('ja
3637
println("Arch: ${System.getProperty('os.arch')}")
3738
println(repeat('*', 60))
3839

39-
minecraft.accessTransformers.file rootProject.file('src/main/resources/META-INF/accesstransformer.cfg')
40-
41-
runs {
42-
configureEach {
43-
systemProperty 'forge.logging.console.level', 'debug'
40+
sourceSets.main.resources {
41+
srcDir 'src/generated/resources'
42+
exclude '.cache'
43+
}
4444

45-
modSource project.sourceSets.main
46-
if (System.getProperty('idea.active')) {
47-
jvmArguments.add("-XX:+AllowEnhancedClassRedefinition")
48-
}
45+
neoForge {
46+
enable {
47+
version = project.neo_version
48+
disableRecompilation = System.getenv("CI") == "true"
4949
}
5050

51-
client {
51+
parchment {
52+
mappingsVersion = project.parchment_mappings_version
53+
minecraftVersion = project.parchment_minecraft_version
5254
}
5355

54-
server {
55-
programArgument '--nogui'
56+
validateAccessTransformers = true
57+
58+
runs {
59+
configureEach {
60+
logLevel = org.slf4j.event.Level.DEBUG
61+
62+
systemProperty 'neoforge.enabledGameTestNamespaces', 'solargeneration'
63+
64+
if (System.getProperty('idea.active')) {
65+
jvmArguments.add("-XX:+AllowEnhancedClassRedefinition")
66+
}
67+
}
68+
69+
client {
70+
client()
71+
gameDirectory = project.file('runs/client')
72+
}
73+
74+
server {
75+
server()
76+
gameDirectory = project.file('runs/server')
77+
programArgument '--nogui'
78+
}
79+
80+
data {
81+
data()
82+
gameDirectory = project.file('runs/data')
83+
programArguments.addAll '--mod', 'solargeneration', '--all',
84+
'--output', file('src/generated/resources/').getAbsolutePath(),
85+
'--existing', file('src/main/resources/').getAbsolutePath()
86+
}
5687
}
5788

58-
data {
59-
programArguments.addAll '--mod', 'solargeneration', '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath()
89+
mods {
90+
solargeneration {
91+
sourceSet(sourceSets.main)
92+
}
6093
}
6194
}
6295

63-
sourceSets.main.resources {
64-
srcDir 'src/generated/resources'
65-
exclude '.cache'
96+
configurations {
97+
runtimeClasspath.extendsFrom localRuntime
6698
}
6799

68100
repositories {
@@ -79,13 +111,7 @@ repositories {
79111
}
80112
}
81113

82-
configurations {
83-
runtimeClasspath.extendsFrom localRuntime
84-
}
85-
86114
dependencies {
87-
implementation "net.neoforged:neoforge:$neo_version"
88-
89115
//implementation "edivad:EdivadLib-$minecraft_version:3.0.0-snapshot"
90116
implementation "curse.maven:edivadlib-638508:$edivadlib_id"
91117

@@ -100,12 +126,46 @@ spotless {
100126
endWithNewline()
101127
trimTrailingWhitespace()
102128
removeUnusedImports()
103-
indentWithSpaces(2)
129+
leadingTabsToSpaces(2)
104130
}
105131
}
106132

133+
tasks.register('generatePackageInfos') {
134+
def srcDir = layout.projectDirectory.dir("src/main/java")
135+
def javaFiles = project.fileTree(srcDir) { include '**/*.java' }
136+
137+
inputs.dir(srcDir)
138+
outputs.upToDateWhen { false }
139+
140+
doLast {
141+
javaFiles.each { javaFile ->
142+
def packageInfoFile = new File(javaFile.parent, 'package-info.java')
143+
if (!packageInfoFile.exists()) {
144+
def pkgName = javaFile.toString().replaceAll(Matcher.quoteReplacement(File.separator), '/')
145+
pkgName = pkgName.substring(pkgName.indexOf('edivad/solargeneration/'), pkgName.lastIndexOf('/'))
146+
pkgName = pkgName.replaceAll('/', '.')
147+
148+
def pkgInfoText = """
149+
|@FieldsAreNonnullByDefault
150+
|@MethodsReturnNonnullByDefault
151+
|@ParametersAreNonnullByDefault
152+
|package $pkgName;
153+
|
154+
|import javax.annotation.ParametersAreNonnullByDefault;
155+
|import net.minecraft.FieldsAreNonnullByDefault;
156+
|import net.minecraft.MethodsReturnNonnullByDefault;
157+
""".stripMargin().trim()
158+
159+
packageInfoFile.text = pkgInfoText
160+
}
161+
}
162+
}
163+
}
164+
165+
107166
tasks.withType(JavaCompile).configureEach {
108167
options.compilerArgs.addAll(['-Xmaxerrs', '100000'])
168+
options.encoding = 'UTF-8'
109169
}
110170

111171
idea {
@@ -115,7 +175,7 @@ idea {
115175
}
116176
}
117177

118-
tasks.withType(ProcessResources).configureEach {
178+
var generateModMetadata = tasks.register("generateModMetadata", ProcessResources) {
119179
var replaceProperties = [
120180
minecraft_version : minecraft_version,
121181
minecraft_version_range : minecraft_version_range,
@@ -126,10 +186,21 @@ tasks.withType(ProcessResources).configureEach {
126186
edivadlib_version_range : edivadlib_version_range,
127187
]
128188
inputs.properties replaceProperties
189+
expand replaceProperties
190+
from "src/main/templates"
191+
into "build/generated/sources/modMetadata"
192+
}
193+
sourceSets.main.resources.srcDir generateModMetadata
194+
neoForge.ideSyncTask generateModMetadata
129195

130-
filesMatching(['META-INF/neoforge.mods.toml']) {
131-
expand replaceProperties
132-
}
196+
def lastCommit = providers.exec {
197+
commandLine 'git', 'rev-parse', 'HEAD'
198+
}.standardOutput.asText.get().trim()
199+
200+
def penultimateTag = () -> {
201+
providers.exec {
202+
commandLine 'git', 'describe', '--abbrev=0', '--tags', 'HEAD~'
203+
}.standardOutput.asText.get().trim()
133204
}
134205

135206
tasks.named('jar', Jar).configure {
@@ -141,31 +212,19 @@ tasks.named('jar', Jar).configure {
141212
'Implementation-Title' : 'solargeneration',
142213
'Implementation-Version' : project.version,
143214
'Implementation-Vendor' : 'Edivad99',
144-
'Implementation-Commit' : 'git rev-parse HEAD'.execute().text.trim(),
215+
'Implementation-Commit' : lastCommit,
145216
])
146217
}
147218
}
148219

149-
def penultimateTag = { ->
150-
def stdout = new ByteArrayOutputStream()
151-
try {
152-
project.exec { ExecSpec spec ->
153-
spec.commandLine('git', 'describe', '--abbrev=0', '--tags', 'HEAD~').standardOutput(stdout)
154-
}.assertNormalExitValue().rethrowFailure()
155-
} catch (Exception e) {
156-
throw new IllegalStateException("Failed to get the tag; check if 'git' is on the PATH", e)
157-
}
158-
return stdout.toString()
159-
}
160-
161220
tasks.register('makeChangelog', GitChangelogTask) {
162-
fromRepo = projectDir.absolutePath.toString()
163-
fromRevision = penultimateTag()
164-
toRevision = 'HEAD'
165-
file = file('CHANGELOG.md')
166-
untaggedName = 'Next release'
167-
templateContent = file('changelog.mustache').text
168-
ignoreCommitsIfMessageMatches = '^.*Merge branch.*$'
221+
fromRepo.set(projectDir.absolutePath.toString())
222+
fromRevision.set(penultimateTag())
223+
toRevision.set('HEAD')
224+
file.set(file('CHANGELOG.md'))
225+
untaggedName.set('Next release')
226+
templateContent.set(file('changelog.mustache').text)
227+
ignoreCommitsIfMessageMatches.set('^.*Merge branch.*$')
169228
}
170229

171230
publishMods {

gradle.properties

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
11
# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
22
# This is required to provide enough memory for the Minecraft decompilation process.
33
org.gradle.jvmargs=-Xmx1G
4-
org.gradle.daemon=false
5-
org.gradle.debug=false
6-
org.gradle.caching=true # -30~ seconds trimmed from gradle --scan opt
4+
org.gradle.daemon=true
5+
org.gradle.parallel=true
6+
org.gradle.caching=true
7+
org.gradle.configuration-cache=true
78

89
## Environment Properties
9-
minecraft_version=1.21
10-
minecraft_version_range=[1.21,1.22)
11-
neo_version=21.0.40-beta
12-
neo_version_range=[21.0-beta,)
10+
minecraft_version=1.21.1
11+
minecraft_version_range=[1.21.1,1.22)
12+
neo_version=21.1.214
13+
neo_version_range=[21.1,)
1314
loader_version_range=[4,)
14-
neo_gradle_version=7.0.152
15+
mod_dev_gradle=2.0.134
1516

1617
## Parchment
17-
neogradle.subsystems.parchment.minecraftVersion=1.21
18-
neogradle.subsystems.parchment.mappingsVersion=2024.06.23
18+
parchment_minecraft_version=1.21.1
19+
parchment_mappings_version=2024.11.17
1920

2021
## Mod Properties
2122
mod_version=7.0.2
2223
edivadlib_id=5491721
2324
edivadlib_version_range=[3.0.0,)
2425

2526
# Dependencies
26-
jei_version=19.0.0.13
27+
jei_version=19.27.0.335
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@FieldsAreNonnullByDefault
2+
@MethodsReturnNonnullByDefault
3+
@ParametersAreNonnullByDefault
4+
package edivad.solargeneration.blockentity;
5+
6+
import javax.annotation.ParametersAreNonnullByDefault;
7+
import net.minecraft.FieldsAreNonnullByDefault;
8+
import net.minecraft.MethodsReturnNonnullByDefault;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@FieldsAreNonnullByDefault
2+
@MethodsReturnNonnullByDefault
3+
@ParametersAreNonnullByDefault
4+
package edivad.solargeneration.blocks;
5+
6+
import javax.annotation.ParametersAreNonnullByDefault;
7+
import net.minecraft.FieldsAreNonnullByDefault;
8+
import net.minecraft.MethodsReturnNonnullByDefault;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@FieldsAreNonnullByDefault
2+
@MethodsReturnNonnullByDefault
3+
@ParametersAreNonnullByDefault
4+
package edivad.solargeneration.client.screen;
5+
6+
import javax.annotation.ParametersAreNonnullByDefault;
7+
import net.minecraft.FieldsAreNonnullByDefault;
8+
import net.minecraft.MethodsReturnNonnullByDefault;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@FieldsAreNonnullByDefault
2+
@MethodsReturnNonnullByDefault
3+
@ParametersAreNonnullByDefault
4+
package edivad.solargeneration.datagen;
5+
6+
import javax.annotation.ParametersAreNonnullByDefault;
7+
import net.minecraft.FieldsAreNonnullByDefault;
8+
import net.minecraft.MethodsReturnNonnullByDefault;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@FieldsAreNonnullByDefault
2+
@MethodsReturnNonnullByDefault
3+
@ParametersAreNonnullByDefault
4+
package edivad.solargeneration.items;
5+
6+
import javax.annotation.ParametersAreNonnullByDefault;
7+
import net.minecraft.FieldsAreNonnullByDefault;
8+
import net.minecraft.MethodsReturnNonnullByDefault;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@FieldsAreNonnullByDefault
2+
@MethodsReturnNonnullByDefault
3+
@ParametersAreNonnullByDefault
4+
package edivad.solargeneration.menu;
5+
6+
import javax.annotation.ParametersAreNonnullByDefault;
7+
import net.minecraft.FieldsAreNonnullByDefault;
8+
import net.minecraft.MethodsReturnNonnullByDefault;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@FieldsAreNonnullByDefault
2+
@MethodsReturnNonnullByDefault
3+
@ParametersAreNonnullByDefault
4+
package edivad.solargeneration.network.packet;
5+
6+
import javax.annotation.ParametersAreNonnullByDefault;
7+
import net.minecraft.FieldsAreNonnullByDefault;
8+
import net.minecraft.MethodsReturnNonnullByDefault;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@FieldsAreNonnullByDefault
2+
@MethodsReturnNonnullByDefault
3+
@ParametersAreNonnullByDefault
4+
package edivad.solargeneration;
5+
6+
import javax.annotation.ParametersAreNonnullByDefault;
7+
import net.minecraft.FieldsAreNonnullByDefault;
8+
import net.minecraft.MethodsReturnNonnullByDefault;

0 commit comments

Comments
 (0)