Skip to content

Commit

Permalink
refactor: overhaul project structure
Browse files Browse the repository at this point in the history
  • Loading branch information
Zxnii committed Jul 29, 2024
1 parent 996bd06 commit 3cc71da
Show file tree
Hide file tree
Showing 76 changed files with 1,304 additions and 798 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@

name: Build

on: [push, pull_request]
on: [ push, pull_request ]

jobs:
build:
strategy:
matrix:
java: [
"17" # Latest version
]
"17" # Latest version
]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
Expand Down
172 changes: 18 additions & 154 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,173 +1,37 @@
import dev.architectury.pack200.java.Pack200Adapter
import net.fabricmc.loom.task.RemapJarTask

// todo: sort out forge

plugins {
idea
java

kotlin("jvm") version "1.9.10"
kotlin("plugin.serialization") version "1.9.10"

id("org.polyfrost.loom") version "1.6.polyfrost.5"
id("dev.architectury.architectury-pack200") version "0.1.3"
id("com.github.johnrengelman.shadow") version "8.1.1"
id("org.polyfrost.loom") version "1.6.polyfrost.5" apply false
id("dev.architectury.architectury-pack200") version "0.1.3" apply false
id("com.github.johnrengelman.shadow") version "8.1.1" apply false
}

group = rootProject.group
version = rootProject.version
allprojects {
plugins.apply("java")
plugins.apply("idea")

val minecraftVersion = property("minecraft_version").toString()
val mappingVersion = property("mapping_version").toString()

val shadowImpl: Configuration by configurations.creating {
configurations.implementation.get().extendsFrom(this)
}
plugins.apply("org.jetbrains.kotlin.jvm")

val shadowRun: Configuration by configurations.creating {
configurations.runtimeOnly.get().extendsFrom(this)
}

sourceSets.main {
output.setResourcesDir(sourceSets.main.flatMap { it.java.classesDirectory })
}

repositories {
mavenCentral()
mavenLocal()
maven("https://repo.spongepowered.org/maven/")
maven("https://jitpack.io")
}

java {
toolchain.languageVersion.set(JavaLanguageVersion.of(8))
}

kotlin {
jvmToolchain(8)
}

@Suppress("UnstableApiUsage")
loom {
log4jConfigs.from(file("log4j2.xml"))
forge {
pack200Provider.set(Pack200Adapter())
mixinConfig("spice.mixins.json")
}
runConfigs {
"client" {
property("mixin.debug", "true")
programArgs("--tweakClass", "org.spongepowered.asm.launch.MixinTweaker")
}
remove(getByName("server"))
repositories {
mavenCentral()
mavenLocal()
maven("https://repo.spongepowered.org/maven/")
maven("https://jitpack.io")
}
mixin.defaultRefmapName.set("spice.mixins.refmap.json")
}

dependencies {
val lwjglVersion = "3.3.3"
val platforms = arrayOf(
"linux",
"windows", "windows-x86",
"macos-arm64", "macos"
)

minecraft("com.mojang:minecraft:$minecraftVersion")
mappings("de.oceanlabs.mcp:mcp_stable:$mappingVersion")
forge("net.minecraftforge:forge:1.8.9-11.15.1.2318-1.8.9")

compileOnly("com.github.weave-mc:weave-loader:0.2.4")

implementation("org.spongepowered:mixin:0.7.11-SNAPSHOT") {
isTransitive = false
dependencies {
if (name != "common") implementation(project(":common"))
}

implementation("org.ow2.asm:asm-tree:9.7")

shadowImpl("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")
shadowImpl("org.lwjgl:lwjgl:$lwjglVersion")

platforms.forEach { shadowRun("org.lwjgl:lwjgl:$lwjglVersion:natives-$it") }

arrayOf(
"opengl",
"openal",
"glfw"
).forEach { module ->
shadowImpl("org.lwjgl:lwjgl-$module:$lwjglVersion")

platforms.forEach { shadowRun("org.lwjgl:lwjgl-$module:$lwjglVersion:natives-$it") }
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(8))
}

// it works!! it barely works, but it works oh my fucking god thank god
modules {
module("org.lwjgl.lwjgl:lwjgl") {
replacedBy("org.lwjgl:lwjgl")
}

module("org.ow2.asm:asm-debug-all") {
replacedBy("org.ow2.asm:asm-tree")
}
kotlin {
jvmToolchain(8)
}
}

val remapJar by tasks.named<RemapJarTask>("remapJar") {
archiveClassifier.set("forge")

from(tasks.shadowJar)

inputFile.set(tasks.shadowJar.get().archiveFile)
}

val weaveJar by tasks.register<Jar>("weaveJar") {
group = "build"
dependsOn(tasks.shadowJar)

from(zipTree(tasks.shadowJar.get().archiveFile))

archiveClassifier.set("weave")

doLast {
copy {
from(archiveFile)
into(File("${System.getProperty("user.home")}/.weave/mods"))
}
}
}

tasks.withType(JavaCompile::class) {
options.encoding = "UTF-8"
}

tasks.withType(Jar::class) {
archiveBaseName.set("spice")
manifest.attributes.run {
this["FMLCorePluginContainsFMLMod"] = "true"
this["ForceLoadAsMod"] = "true"
this["TweakClass"] = "org.spongepowered.asm.launch.MixinTweaker"
this["MixinConfigs"] = "mixins.spice.json"
}
}

tasks.processResources {
inputs.property("version", project.version)

filesMatching(listOf("weave.mod.json", "mcmod.info")) {
expand(inputs.properties)
}
}

tasks.jar {
archiveClassifier.set("without-deps")
destinationDirectory.set(layout.buildDirectory.dir("badjars"))
}

tasks.shadowJar {
destinationDirectory.set(layout.buildDirectory.dir("badjars"))
configurations = listOf(shadowImpl, shadowRun)

archiveClassifier.set("all-dev")
}

tasks.assemble.get().dependsOn(remapJar, weaveJar)
3 changes: 3 additions & 0 deletions common/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
dependencies {
implementation(libs.asmtree)
}
Loading

0 comments on commit 3cc71da

Please sign in to comment.