Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.
at master 314 lines 10 kB view raw
1plugins { 2 id("net.neoforged.moddev.legacyforge") 3 id("dev.kikugie.postprocess.jsonlang") 4 id("me.modmuss50.mod-publish-plugin") 5 id("maven-publish") 6} 7 8val minecraft = stonecutter.current.version 9val mcVersion = stonecutter.current.project.substringBeforeLast('-') 10version = "${property("mod.version")}+${property("deps.minecraft")}" 11if (property("mod.test_build") != "0") version = "$version-tb${property("mod.test_build")}" 12 13tasks.named<ProcessResources>("processResources") { 14 fun prop(name: String) = project.property(name) as String 15 16 val props = HashMap<String, String>().apply { 17 this["version"] = "$version" 18 this["minecraft"] = prop("mod.mc_dep_forge") 19 } 20 21 filesMatching(listOf("neoforge.mod.json", "META-INF/neoforge.mods.toml", "META-INF/mods.toml")) { 22 expand(props) 23 } 24} 25 26version = "$version-forge" 27base.archivesName = property("mod.id") as String 28 29jsonlang { 30 languageDirectories = listOf("assets/${property("mod.id")}/lang") 31 prettyPrint = true 32} 33 34 35repositories { 36 maven ( "https://maven.minecraftforge.net" ) { 37 name = "Minecraft Forge" 38 } 39 maven { 40 name = "Parchment Mappings" 41 url = uri("https://maven.parchmentmc.org") 42 content { 43 includeGroupAndSubgroups("org.parchmentmc") 44 } 45 } 46 maven { 47 name = "Modrinth" 48 url = uri("https://api.modrinth.com/maven") 49 content { 50 includeGroupAndSubgroups("maven.modrinth") 51 } 52 } 53 maven { 54 name = "Terraformers (Mod Menu)" 55 url = uri("https://maven.terraformersmc.com/releases/") 56 content { 57 includeGroupAndSubgroups("com.terraformersmc") 58 includeGroupAndSubgroups("dev.emi") 59 } 60 } 61 maven { 62 name = "Architectury" 63 url = uri("https://maven.architectury.dev/") 64 content { 65 includeGroupAndSubgroups("dev.architectury") 66 includeGroupAndSubgroups("me.shedaniel") 67 } 68 } 69 maven { 70 name = "Jitpack (DimLib)" 71 url = uri("https://jitpack.io") 72 content { 73 includeGroupAndSubgroups("com.github.iPortalTeam") 74 } 75 } 76 maven { 77 name = "CC: Tweaked" 78 url = uri("https://maven.squiddev.cc") 79 content { 80 includeGroupAndSubgroups("cc.tweaked") 81 } 82 } 83 maven { 84 name = "Fabricators of Create (Snapshots)" 85 url = uri("https://mvn.devos.one/snapshots") 86 content { 87 includeGroupAndSubgroups("net.createmod") 88 includeGroupAndSubgroups("dev.engine-room") 89 includeGroupAndSubgroups("io.github.fabricators_of_create") 90 } 91 } 92 maven { 93 name = "Fabricators of Create (Releases)" 94 url = uri("https://mvn.devos.one/releases") 95 content { 96 includeGroupAndSubgroups("net.createmod") 97 includeGroupAndSubgroups("dev.engine-room") 98 includeGroupAndSubgroups("io.github.fabricators_of_create") 99 } 100 } 101 maven { 102 name = "Create, Ponder, Flywheel" 103 url = uri("https://maven.createmod.net") 104 content { 105 includeGroupAndSubgroups("net.createmod") 106 includeGroupAndSubgroups("dev.engine-room") 107 includeGroupAndSubgroups("com.simibubi") 108 } 109 } 110 maven { 111 name = "Fuzs Mod Resources" 112 url = uri("https://raw.githubusercontent.com/Fuzss/modresources/main/maven/") 113 content { 114 includeGroupAndSubgroups("fuzs") 115 } 116 } 117 maven { 118 name = "Registrate" 119 url = uri("https://maven.ithundxr.dev/mirror") 120 content { 121 includeGroupAndSubgroups("com.tterrag") 122 } 123 } 124 maven { 125 name = "Sinytra (FFAPI)" 126 url = uri("https://maven.su5ed.dev/releases") 127 content { 128 includeGroupAndSubgroups("dev.su5ed") 129 } 130 } 131 maven { 132 name = "Sinytra" 133 url = uri("https://maven.su5ed.dev/releases") 134 content { 135 includeGroupAndSubgroups("org.sinytra") 136 includeGroupAndSubgroups("dev.su5ed") 137 } 138 } 139} 140 141legacyForge { 142 version = property("deps.forge") as String 143 validateAccessTransformers = true 144 145 if (hasProperty("deps.parchment")) parchment { 146 val (mc, ver) = (property("deps.parchment") as String).split(':') 147 mappingsVersion = ver 148 minecraftVersion = mc 149 } 150 151 runs { 152 register("client") { 153 gameDirectory = file("run/") 154 client() 155 } 156 register("server") { 157 gameDirectory = file("run/") 158 server() 159 } 160 } 161 162 mods { 163 register(property("mod.id") as String) { 164 sourceSet(sourceSets["main"]) 165 } 166 } 167 sourceSets["main"].resources.srcDir("src/main/generated") 168} 169 170 171dependencies { 172 modImplementation("dev.architectury:architectury-forge:${property("deps.architectury")}") 173 modImplementation("me.shedaniel.cloth:cloth-config-forge:${property("deps.cloth")}") 174 modImplementation("cc.tweaked:cc-tweaked-${property("deps.minecraft")}-forge:${property("deps.cct")}") 175 modCompileOnly("dev.emi:emi-forge:${property("deps.emi")}+${property("deps.minecraft")}:api") 176 modRuntimeOnly("dev.emi:emi-forge:${property("deps.emi")}+${property("deps.minecraft")}") 177 178 179 // Create 180 modCompileOnly("com.simibubi.create:create-${property("deps.minecraft")}:${property("deps.create")}:slim") { isTransitive = false } 181 modImplementation("net.createmod.ponder:Ponder-Forge-${property("deps.minecraft")}:${property("deps.ponder")}") 182 modCompileOnly("dev.engine-room.flywheel:flywheel-forge-api-${property("deps.minecraft")}:${property("deps.flywheel")}") 183 modRuntimeOnly("dev.engine-room.flywheel:flywheel-forge-${property("deps.minecraft")}:${property("deps.flywheel")}") 184 modImplementation("com.tterrag.registrate:Registrate:${property("deps.registrate")}") 185 186 // https://maven.su5ed.dev/#/releases/dev/su5ed/sinytra/fabric-api 187 // The Forge backport bundles relevant modules of FFAPI instead of requiring the entire mod. 188 modImplementation("dev.su5ed.sinytra:fabric-loader:2.7.11+0.16.5+1.20.1") 189 modImplementation("dev.su5ed.sinytra.fabric-api:fabric-api-base:0.4.32+ef105b4977") 190 modImplementation("dev.su5ed.sinytra.fabric-api:fabric-networking-api-v1:1.3.14+fb7c822677") 191 modImplementation("dev.su5ed.sinytra.fabric-api:fabric-resource-loader-v0:0.11.12+4b4151c077") 192 jarJar("dev.su5ed.sinytra:fabric-loader:2.7.11+0.16.5+1.20.1") 193 jarJar("dev.su5ed.sinytra.fabric-api:fabric-api-base:0.4.32+ef105b4977") 194 jarJar("dev.su5ed.sinytra.fabric-api:fabric-networking-api-v1:1.3.14+fb7c822677") 195 jarJar("dev.su5ed.sinytra.fabric-api:fabric-resource-loader-v0:0.11.12+4b4151c077") 196 197 198 annotationProcessor("org.spongepowered:mixin:0.8.5:processor") 199 annotationProcessor("io.github.llamalad7:mixinextras-common:0.5.0") 200 compileOnly("io.github.llamalad7:mixinextras-common:0.5.0") 201 implementation("io.github.llamalad7:mixinextras-forge:0.5.0") 202 jarJar("io.github.llamalad7:mixinextras-forge:0.5.0") 203 implementation("org.jspecify:jspecify:1.0.0") 204} 205 206 207mixin { 208 add(sourceSets["main"], "infinity.refmap.json") 209 config("infinity-forge.mixins.json") 210} 211 212tasks.named<Jar>("jar") { 213 manifest { 214 attributes( 215 "MixinConfigs" to "infinity-forge.mixins.json" 216 ) 217 } 218} 219 220tasks.register<Sync>("syncDatagen") { 221 from(project(":${minecraft}-fabric").tasks.named("runDatagen")) 222 into(file("src/main/generated/")) 223} 224 225tasks { 226 processResources { 227 exclude("**/fabric.mod.json", "**/*.accesswidener", "**/neoforge.mods.toml") 228 exclude("**/config/21") 229 exclude("**/config/22") 230 } 231 232 named("createMinecraftArtifacts") { 233 dependsOn("stonecutterGenerate") 234 } 235 236 register<Copy>("buildAndCollect") { 237 group = "build" 238 from(jar.map { it.archiveFile }) 239 into(rootProject.layout.buildDirectory.file("libs/${project.property("mod.version")}")) 240 dependsOn("build") 241 } 242} 243 244java { 245 withSourcesJar() 246 val javaCompat = if (stonecutter.eval(stonecutter.current.version, ">=1.20.5")) { 247 JavaVersion.VERSION_21 248 } else { 249 JavaVersion.VERSION_17 250 } 251 sourceCompatibility = javaCompat 252 targetCompatibility = javaCompat 253} 254 255val additionalVersionsStr = findProperty("publish.additionalVersions") as String? 256val additionalVersions: List<String> = additionalVersionsStr 257 ?.split(",") 258 ?.map { it.trim() } 259 ?.filter { it.isNotEmpty() } 260 ?: emptyList() 261 262publishMods { 263 file = (tasks.named<org.gradle.jvm.tasks.Jar>("reobfJar").map { it.archiveFile.get() }) 264 additionalFiles.from(tasks.named<org.gradle.jvm.tasks.Jar>("sourcesJar").map { it.archiveFile.get() }) 265 266 type = STABLE 267 displayName = "${property("mod.name")} ${property("mod.version")} for ${stonecutter.current.version} Forge" 268 version = "${property("mod.version")}+${property("deps.minecraft")}-forge" 269 changelog = provider { rootProject.file("CHANGELOG-LATEST.md").readText() } 270 modLoaders.add("forge") 271 272 modrinth { 273 projectId = property("publish.modrinth") as String 274 accessToken = env.MODRINTH_API_KEY.orNull() 275 minecraftVersions.add(stonecutter.current.version) 276 minecraftVersions.addAll(additionalVersions) 277 requires("architectury-api") 278 requires("cloth-config") 279 if (hasProperty("deps.emi")) { 280 optional("emi") 281 } 282 if (hasProperty("deps.rrv")) { 283 optional("rrv") 284 } 285 286 } 287 288 curseforge { 289 projectId = property("publish.curseforge") as String 290 accessToken = env.CURSEFORGE_API_KEY.orNull() 291 minecraftVersions.add(stonecutter.current.version) 292 minecraftVersions.addAll(additionalVersions) 293 requires("architectury-api") 294 requires("cloth-config") 295 if (hasProperty("deps.emi")) { 296 optional("emi") 297 } 298 if (hasProperty("deps.rrv")) { 299 optional("rrv") 300 } 301 } 302} 303 304publishing { 305 publications { 306 create<MavenPublication>("maven") { 307 groupId = "net.lerariemann" 308 artifactId = "infinity" 309 version = "${property("mod.version")}+${property("deps.minecraft")}" 310 311 from(components["java"]) 312 } 313 } 314}