Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 24 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ base { archivesName = mod_id }
java.toolchain.languageVersion = JavaLanguageVersion.of(17)
repositories {
mavenCentral()
exclusiveContent {
forRepository { maven { url = 'https://maven.covers1624.net/' } }
filter { includeGroup 'com.teamcofh' }
}
exclusiveContent {
forRepository { maven { url = 'https://api.modrinth.com/maven' } }
filter { includeGroup 'maven.modrinth' }
Expand Down Expand Up @@ -39,7 +43,16 @@ sourceSets.test.runtimeClasspath += sourceSets.main.compileClasspath
configurations.modCompileOnly.transitive = false

dependencies {
modCompileOnly 'maven.modrinth:rxYaglEe:orFPvySe' // advancedae-1.2.7-1.20.1
modCompileOnly 'maven.modrinth:QeB3NRC5:5muSI5qX' // Re-Avaritia 1.4.0 (Forge 1.20.1)
modCompileOnly 'com.teamcofh:cofh_core:1.20.1-11.0.0.51'
modCompileOnly 'com.teamcofh:thermal_core:1.20.1-11.0.0.12'
modCompileOnly 'curse.maven:blood-magic-224791:7253333'
modCompileOnly 'curse.maven:embers-rekindled-300777:7446478'
jarJar('io.github.llamalad7:mixinextras-forge:0.5.0') {
version { strictly '[0.5.0,0.6)'; prefer '0.5.0' }
}
modCompileOnly 'maven.modrinth:rxYaglEe:d83Wdhdn' // AdvancedAE 1.3.6-1.20.1
modCompileOnly 'maven.modrinth:qDJXZJTz:PQ3IlR98' // Mekanism More Machine 1.2.1
modCompileOnly 'maven.modrinth:rqFWfVlz:tT3CLYvK' // apotheosis-1.20.1-7.4.8
modCompileOnly 'maven.modrinth:IiATswDj:d9GM663Q' // applied-mekanistics-1.4.2
modCompileOnly 'maven.modrinth:XxWD5pD3:jYgSnxye' // appliedenergistics2-forge-15.4.11
Expand All @@ -66,7 +79,7 @@ dependencies {
modCompileOnly 'maven.modrinth:lWxpUd04:O8YO7ORj' // industrial-foregoing-1.20.1-3.5.19
modCompileOnly 'maven.modrinth:nvQzSEkH:LecuGude' // jade-1.20.1-forge-11.13.2
modCompileOnly 'maven.modrinth:fRiHVvU7:WtJS5tVw' // emi-1.1.22-1.20.1-forge
modCompileOnly 'maven.modrinth:u6dRKJwZ:zzpNSbJZ' // jei-1.20.1-forge-15.20.0.116
modCompileOnly 'maven.modrinth:u6dRKJwZ:TrKZlZ0b' // JEI 15.74.0.227
modCompileOnly 'maven.modrinth:umyGl7zF:g5igndAv' // kubejs-forge-2001.6.5-build.16
modCompileOnly 'maven.modrinth:Ce6I4WUE:9iboPfea' // mekanism-1.20.1-10.4.15.75
modCompileOnly 'maven.modrinth:OFVYKsAk:x9re7wt4' // mekanismgenerators-1.20.1-10.4.15.75
Expand All @@ -92,10 +105,10 @@ dependencies {
}
mixin {
add sourceSets.main, "${mod_id}.refmap.json"
["${mod_id}.mixins.json", "${mod_id}.create.mixins.json", "${mod_id}.mekanism.mixins.json", "${mod_id}.jade.mixins.json", "${mod_id}.compact.mixins.json"].each { config it }
["${mod_id}.mixins.json", "${mod_id}.create.mixins.json", "${mod_id}.mekanism.mixins.json", "${mod_id}.jade.mixins.json", "${mod_id}.thermal.mixins.json", "${mod_id}.compact.mixins.json"].each { config it }
}
tasks.named('jar') {
manifest.attributes('MixinConfigs': ["${mod_id}.mixins.json", "${mod_id}.create.mixins.json", "${mod_id}.mekanism.mixins.json", "${mod_id}.jade.mixins.json", "${mod_id}.compact.mixins.json"].join(','))
manifest.attributes('MixinConfigs': ["${mod_id}.mixins.json", "${mod_id}.create.mixins.json", "${mod_id}.mekanism.mixins.json", "${mod_id}.jade.mixins.json", "${mod_id}.thermal.mixins.json", "${mod_id}.compact.mixins.json"].join(','))
}
tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8'
Expand All @@ -104,6 +117,7 @@ tasks.withType(JavaCompile).configureEach {
tasks.named('test', Test) {
useJUnitPlatform()
classpath = classpath.filter { !it.name.startsWith('slf4j-api-1.') }
classpath += files(layout.buildDirectory.file("moddev/artifacts/client-extra-${minecraft_version}-${forge_version}.jar"))
}
tasks.named('processResources', ProcessResources) {
inputs.property 'mod_version', mod_version
Expand All @@ -117,3 +131,9 @@ apply from: 'gradle/port-bridge-tests.gradle'
apply from: 'gradle/forge1201-pack-profile.gradle'

apply from: 'gradle/bytecode-contract-tests.gradle'

apply from: 'gradle/merge-game-tests.gradle'

apply from: 'gradle/bundled-compat-libraries.gradle'

apply from: 'gradle/config-ui-check.gradle'
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ org.gradle.caching=true
org.gradle.configuration-cache=false
minecraft_version=1.20.1
minecraft_version_range=[1.20.1,1.20.2)
forge_version=47.3.10
forge_version=47.4.10
loader_version_range=[47,)
mod_id=useless_mod
mod_name=Useless Mod
mod_version=20.2.4.6
mod_version=20.2.4.6-merged.7
mod_group_id=com.sorrowmist.useless
mod_license=MIT
36 changes: 36 additions & 0 deletions gradle/bundled-compat-libraries.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// AdvancedAE only publishes this library inside its JarJar. Materialize a local module
// before resolution so ModDev can remap its Minecraft members instead of using raw SRG bytecode.
def bundledRepo = layout.buildDirectory.dir('compat-repository').get().asFile
repositories {
exclusiveContent {
forRepository { flatDir { dirs bundledRepo } }
filter { includeGroup 'bundled' }
}
}
configurations { advancedAeBundle { transitive = false } }
dependencies { advancedAeBundle 'maven.modrinth:rxYaglEe:d83Wdhdn' }
def addonFile = new File(bundledRepo, 'ae2addonlib-1.0.4-1.20.1.jar')
new java.util.zip.ZipFile(configurations.advancedAeBundle.singleFile).withCloseable { archive ->
def bytes = archive.getInputStream(archive.getEntry(
'META-INF/jarjar/ae2addonlib-1.0.4-1.20.1.jar')).withCloseable { it.readAllBytes() }
if (!addonFile.isFile() || !Arrays.equals(addonFile.bytes, bytes)) {
bundledRepo.mkdirs()
addonFile.bytes = bytes
}
}
dependencies { modCompileOnly 'bundled:ae2addonlib:1.0.4-1.20.1' }

// JEI's disk bookmark regression test also exercises the bundled config serializer.
configurations { jeiBundle { transitive = false } }
dependencies { jeiBundle 'maven.modrinth:u6dRKJwZ:TrKZlZ0b' }
def jeiConfig = tasks.register('extractJeiConfigLibrary', Copy) {
from({ zipTree(configurations.jeiBundle.singleFile) }) {
include 'META-INF/jarjar/mezz_config-1.20.1-forge-0.6.6.jar'
eachFile { path = name }
includeEmptyDirs = false
}
into layout.buildDirectory.dir('compat-libs/jei')
}
dependencies {
portBridgeTestImplementation files(layout.buildDirectory.file('compat-libs/jei/mezz_config-1.20.1-forge-0.6.6.jar')).builtBy(jeiConfig)
}
4 changes: 2 additions & 2 deletions gradle/bytecode-contract-tests.gradle
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// Compare release mixin signatures with the pinned native AE2 and AdvancedAE bytecode.
configurations { contractNative { transitive = false } }
dependencies {
contractNative 'maven.modrinth:XxWD5pD3:Zfyso1sP'
contractNative 'maven.modrinth:rxYaglEe:orFPvySe'
contractNative 'maven.modrinth:XxWD5pD3:jYgSnxye'
contractNative 'maven.modrinth:rxYaglEe:d83Wdhdn'
}
def contractInputs = layout.buildDirectory.file('contract-inputs.json')
tasks.register('writeContractInputs') {
Expand Down
29 changes: 29 additions & 0 deletions gradle/config-ui-check.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// Isolated client checks; no test classes or optional GUI mod enter the release JAR.
if (!providers.gradleProperty('configUiCheck').isPresent()) return

sourceSets {
configUiCheck {
compileClasspath += sourceSets.main.output + sourceSets.main.compileClasspath
runtimeClasspath += sourceSets.main.output + sourceSets.main.runtimeClasspath
}
}
dependencies {
modRuntimeOnly 'maven.modrinth:XxWD5pD3:jYgSnxye'
modRuntimeOnly 'maven.modrinth:Ck4E7v7R:i7Tp1AHw'
modRuntimeOnly 'io.github.llamalad7:mixinextras-forge:0.5.0'
if (!providers.gradleProperty('configUiWithoutConfigured').isPresent()) {
modRuntimeOnly 'curse.maven:configured-457570:5180900'
}
}
legacyForge {
mods { "${mod_id}" { sourceSet sourceSets.configUiCheck } }
runs {
configUiCheck {
client()
gameDirectory = file('run/config-ui-check')
systemProperty 'useless.configUiCheck', 'true'
systemProperty 'useless.configUiScreenshots', providers.gradleProperty('configUiScreenshots')
.getOrElse(file('run/config-ui-check/screenshots').absolutePath)
}
}
}
8 changes: 1 addition & 7 deletions gradle/forge1201-pack-profile.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"com/sorrowmist/useless/content/recipe/adapters/apothicflux/**",
"com/sorrowmist/useless/content/recipe/adapters/arsnouveau/**",
"com/sorrowmist/useless/content/recipe/adapters/astralsorcery/**",
"com/sorrowmist/useless/content/recipe/adapters/avaritia/**",
"com/sorrowmist/useless/content/recipe/adapters/avaritia/ReAvaritiaSculkCraftingRecipeAdapter.java",
"com/sorrowmist/useless/content/recipe/adapters/delight/**",
"com/sorrowmist/useless/content/recipe/adapters/eco/**",
"com/sorrowmist/useless/content/recipe/adapters/extremereactors/**",
Expand All @@ -27,7 +27,6 @@
"com/sorrowmist/useless/content/recipe/adapters/ae/ae2cs/**",
"com/sorrowmist/useless/content/recipe/adapters/ae/ae2lt/**",
"com/sorrowmist/useless/content/recipe/adapters/ae/dataenergistics/**",
"com/sorrowmist/useless/content/recipe/adapters/mekanism/mekanismmoremachine/**",
"com/sorrowmist/useless/compat/apothicflux/**",
"com/sorrowmist/useless/compat/ars/**",
"com/sorrowmist/useless/compat/barbequesdelight/**",
Expand All @@ -44,7 +43,6 @@
"com/sorrowmist/useless/compat/itemobliterator/**",
"com/sorrowmist/useless/compat/kaleidoscope/**",
"com/sorrowmist/useless/compat/lychee/**",
"com/sorrowmist/useless/compat/mekanismmoremachine/**",
"com/sorrowmist/useless/compat/modernindustrialization/**",
"com/sorrowmist/useless/compat/neoecoae/NeoEcoCompat.java",
"com/sorrowmist/useless/compat/neoecoae/NeoEcoDynamicJobAttachment.java",
Expand All @@ -70,7 +68,6 @@
"com/sorrowmist/useless/content/recipe/adapters/industrialforegoing/FluidShapedRecipeAdapter.java",
"com/sorrowmist/useless/content/recipe/adapters/industrialforegoing/FluidShapelessRecipeAdapter.java",
"com/sorrowmist/useless/content/recipe/adapters/ae/extendedae/CrystalAssemblerRecipeAdapter.java",
"com/sorrowmist/useless/content/recipe/adapters/mekanism/RecyclerRecipeAdapter.java",
"com/sorrowmist/useless/content/recipe/adapters/enderio/VatFermentingRecipeAdapter.java",
"com/sorrowmist/useless/compat/ae/AeSourceCompat.java",
"com/sorrowmist/useless/compat/ae/AePressureCompat.java",
Expand All @@ -89,9 +86,6 @@
"com/sorrowmist/useless/content/recipe/adapters/industrialforegoing/FluidShapelessRecipeAdapter.java",
"com/sorrowmist/useless/content/recipe/adapters/industrialforegoing/ExtraUpgradesCraftingRecipeAdapterSupport.java"
],
"mekmm": [
"com/sorrowmist/useless/content/recipe/adapters/mekanism/RecyclerRecipeAdapter.java"
],
"arseng": [
"com/sorrowmist/useless/compat/ae/AeSourceCompat.java"
],
Expand Down
69 changes: 69 additions & 0 deletions gradle/merge-game-tests.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
// Real Forge lifecycle checks; test classes and runtime fixtures never enter the release jar.
if (!providers.gradleProperty('mergeGameTest').isPresent()) return

sourceSets {
gameTest {
compileClasspath += sourceSets.main.output + sourceSets.main.compileClasspath
runtimeClasspath += sourceSets.main.output + sourceSets.main.runtimeClasspath
}
}

// Verify both the oldest supported API and the exact Thermal versions in the local pack.
def thermalTestVersions = providers.gradleProperty('thermalPackGameTest').isPresent()
? [cofh_core: '11.0.2.56', thermal_core: '11.0.6.24',
thermal_foundation: '11.0.6.70', thermal_expansion: '11.0.1.29']
: [cofh_core: '11.0.0.51', thermal_core: '11.0.0.12',
thermal_foundation: '11.0.0.61', thermal_expansion: '11.0.0.26']

dependencies {
modRuntimeOnly 'maven.modrinth:QeB3NRC5:5muSI5qX'
modRuntimeOnly 'curse.maven:ex-deorum-901420:6614784'
modRuntimeOnly 'maven.modrinth:XxWD5pD3:jYgSnxye'
modRuntimeOnly 'maven.modrinth:Ck4E7v7R:i7Tp1AHw'
thermalTestVersions.each { artifact, version ->
modRuntimeOnly "com.teamcofh:${artifact}:1.20.1-${version}"
}
modRuntimeOnly 'curse.maven:blood-magic-224791:7253333'
modRuntimeOnly 'curse.maven:embers-rekindled-300777:7446478'
modRuntimeOnly 'curse.maven:Patchouli-306770:6164575'
modRuntimeOnly 'io.github.llamalad7:mixinextras-forge:0.5.0'
}

if (providers.gradleProperty('compatGameTest').isPresent()) {
sourceSets.gameTest.java.srcDir 'src/compatGameTest/java'
sourceSets.gameTest.resources.srcDir 'src/compatGameTest/resources'
def stretcherRepo = providers.gradleProperty('stretcherRepo').get()
repositories {
flatDir { dirs "${stretcherRepo}/build/libs" }
}
dependencies {
modRuntimeOnly 'maven.modrinth:rxYaglEe:d83Wdhdn'
modRuntimeOnly 'curse.maven:applied-flux-965012:6755986'
modRuntimeOnly 'maven.modrinth:UhW5uCKw:eoUaDkZf'
modRuntimeOnly 'maven.modrinth:Ce6I4WUE:uxe1WQp4'
modRuntimeOnly 'maven.modrinth:IiATswDj:9n9p68Qq'
modRuntimeOnly 'maven.modrinth:qDJXZJTz:PQ3IlR98'
modRuntimeOnly 'maven.modrinth:8BmcQJ2H:aVW7Z5da'
modRuntimeOnly 'local.compat:useless_stretcher:20.1.6.0-compat.2'
gameTestCompileOnly files("${stretcherRepo}/build/devlibs/useless_stretcher-20.1.6.0-compat.2.jar")
}
if (providers.gradleProperty('compatClientProbe').isPresent()) {
repositories { flatDir { dirs providers.gradleProperty('packMods').get() } }
dependencies {
modRuntimeOnly 'maven.modrinth:u6dRKJwZ:TrKZlZ0b'
modRuntimeOnly 'pack.fixture:exmachinis-deorum:1.20.1-3.0.3'
}
legacyForge.runs.client.systemProperty 'useless.compatClientProbe', 'true'
}
}

legacyForge {
mods { "${mod_id}" { sourceSet sourceSets.gameTest } }
runs {
gameTestServer {
type = 'gameTestServer'
gameDirectory = file('run/merge-gametest')
systemProperty 'forge.enabledGameTestNamespaces', mod_id
}
}
}
3 changes: 3 additions & 0 deletions gradle/port-bridge-tests.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ sourceSets {
java.include 'com/sorrowmist/useless/compat/kubejs/GenericStackRecipeComponent.java'
java.include 'com/sorrowmist/useless/compat/kubejs/NativeRecipeComponent.java'
java.include 'com/sorrowmist/useless/content/recipe/adapters/exdeorum/**'
java.include 'com/sorrowmist/useless/content/recipe/adapters/avaritia/**'
java.exclude 'com/sorrowmist/useless/content/recipe/adapters/avaritia/ReAvaritiaSculkCraftingRecipeAdapter.java'
java.include 'com/sorrowmist/useless/content/recipe/adapters/botanypots/**'
java.include 'com/sorrowmist/useless/compat/jei/GenericStackJeiIngredientProvider*.java'
java.include 'com/sorrowmist/useless/compat/jei/AEKeyJeiIngredients.java'
Expand All @@ -30,6 +32,7 @@ sourceSets {
java.include 'com/sorrowmist/useless/compat/mekanism/MekanismChemicalStackView.java'
java.include 'com/sorrowmist/useless/compat/mekanism/MekanismChemicalStorage.java'
java.include 'com/sorrowmist/useless/content/recipe/adapters/mekanism/**'
java.exclude 'com/sorrowmist/useless/content/recipe/adapters/mekanism/MetallurgicItemRecipeAdapter.java'
java.exclude 'com/sorrowmist/useless/content/recipe/adapters/mekanism/RecyclerRecipeAdapter.java'
java.exclude 'com/sorrowmist/useless/content/recipe/adapters/mekanism/mekanismmoremachine/**'
java.include 'com/sorrowmist/useless/content/machines/advanced_alloy_furnace/chemical/ChemicalKeyProvider*.java'
Expand Down
Loading