Skip to content
Closed
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
5 changes: 4 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,9 @@ dependencies {
implementation(libs.java.keyring)
implementation(libs.minecraftauth)

implementation(libs.jparser)
implementation(libs.jresolver)

testImplementation(kotlin("test"))
testImplementation(libs.junit.jupiter)
testRuntimeOnly(libs.junit.platform.launcher)
Expand Down Expand Up @@ -239,7 +242,7 @@ publishing {
repositories {
maven {
name = "WagYourMaven"
url = uri("https://maven.wagyourtail.xyz/" + if (project.hasProperty("version_snapshot")) "snapshots/" else "releases/")
url = uri("https://maven.outlands.top/" + if (project.hasProperty("version_snapshot")) "snapshots/" else "releases/")
credentials {
username = project.findProperty("mvn.user") as String? ?: System.getenv("USERNAME")
password = project.findProperty("mvn.key") as String? ?: System.getenv("TOKEN")
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true

maven_group=xyz.wagyourtail.unimined
archives_base_name=unimined
version=1.4.2
version=1.4.9-kappa
11 changes: 8 additions & 3 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[versions]
# Kotlin 2.2.0 is only supported by Gradle 9+. Gradle 9 removes support for Java 8.
kotlin = "2.1.20"
dokka = "2.0.0"
kotlin = "2.3.0"
dokka = "2.1.0"

jb-annotations = "26.0.2-1"

Expand All @@ -23,7 +23,9 @@ commons-compress = "1.28.0"
classtweaker = "0.2"

# JGit 5.x is the last version that supports Java 8.
jgit = "5.13.3.202401111512-r"
jgit = "7.5.0.202512021534-r"

jparser = "3.28.0"

keyring = "1.0.2"
minecraftauth = "4.1.2"
Expand Down Expand Up @@ -56,6 +58,9 @@ commons-compress = { module = "org.apache.commons:commons-compress", version.ref

jgit = { module = "org.eclipse.jgit:org.eclipse.jgit", version.ref = "jgit" }

jparser = { module = "com.github.javaparser:javaparser-core", version.ref = "jparser"}
jresolver = { module = "com.github.javaparser:javaparser-symbol-solver-core", version.ref = "jparser"}

java-keyring = { module = "com.github.javakeyring:java-keyring", version.ref = "keyring" }
minecraftauth = { module = "net.raphimc:MinecraftAuth", version.ref = "minecraftauth" }

Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,20 +84,22 @@ class KotlinClassRemapper(private val remapper: Remapper) {
return type
}

@OptIn(ExperimentalContextParameters::class)
private fun remap(function: KmFunction): KmFunction {
function.typeParameters.replaceAll(this::remap)
function.receiverParameterType = function.receiverParameterType?.let { remap(it) }
function.contextReceiverTypes.replaceAll(this::remap)
function.contextParameters.replaceAll(this::remap)
function.valueParameters.replaceAll(this::remap)
function.returnType = remap(function.returnType)
function.signature = function.signature?.let { remap(it) }
return function
}

@OptIn(ExperimentalContextParameters::class)
private fun remap(property: KmProperty): KmProperty {
property.typeParameters.replaceAll(this::remap)
property.receiverParameterType = property.receiverParameterType?.let { remap(it) }
property.contextReceiverTypes.replaceAll(this::remap)
property.contextParameters.replaceAll(this::remap)
property.setterParameter = property.setterParameter?.let { remap(it) }
property.returnType = remap(property.returnType)
property.fieldSignature = property.fieldSignature?.let { remap(it) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package xyz.wagyourtail.unimined.internal.minecraft.patch.forge

import com.google.gson.JsonObject
import kotlinx.coroutines.runBlocking
import org.apache.commons.lang3.ArchUtils
import org.apache.commons.lang3.SystemUtils
import org.gradle.api.JavaVersion
import org.gradle.api.Project
import org.gradle.api.artifacts.Dependency
Expand All @@ -15,11 +17,14 @@ import xyz.wagyourtail.unimined.internal.minecraft.patch.forge.fg3.FG3MinecraftT
import xyz.wagyourtail.unimined.internal.minecraft.patch.jarmod.JarModMinecraftTransformer
import xyz.wagyourtail.unimined.internal.minecraft.resolver.Library
import xyz.wagyourtail.unimined.internal.minecraft.resolver.parseAllLibraries
import xyz.wagyourtail.unimined.internal.minecraft.transform.fixes.FixParamAnnotations
import xyz.wagyourtail.unimined.util.FinalizeOnRead
import xyz.wagyourtail.unimined.util.LazyMutable
import xyz.wagyourtail.unimined.util.getFiles
import xyz.wagyourtail.unimined.mapping.formats.tsrg.TsrgV1Writer
import java.io.File
import java.net.URI
import java.nio.file.FileSystem
import java.nio.file.Path
import kotlin.io.path.absolutePathString
import kotlin.io.path.createDirectories
Expand Down Expand Up @@ -64,6 +69,14 @@ open class CleanroomMinecraftTransformer(project: Project, provider: MinecraftPr
project.unimined.cleanroomRepos()
project.unimined.arcseekersMaven()
project.unimined.minecraftForgeMaven()
project.repositories.removeIf { it.name == "minecraft" }
project.repositories.maven { repo ->
repo.name = "minecraft"
repo.url = URI.create("https://libraries.minecraft.net/")
repo.content {
it.excludeGroup("ca.weblite")
}
}
}

override fun loader(dep: Any, action: Dependency.() -> Unit) {
Expand Down Expand Up @@ -120,14 +133,69 @@ open class CleanroomMinecraftTransformer(project: Project, provider: MinecraftPr
if (library.name.startsWith("net.java.dev.jna:platform:")) {
return null
}
if (library.name.startsWith("org.apache.httpcomponents:")) {
return null
}
if (library.name.startsWith("ore.lwjgl:") && library.name.split(":").size > 3) {
if (library.name.split(":")[3] != getLwjglClassifier()) {
return null
}
}
return super.libraryFilter(library)
}

private fun getLwjglClassifier(): String {
val processor = ArchUtils.getProcessor()
var classifier = ""
if (SystemUtils.IS_OS_WINDOWS) {
classifier += "windows"
if (processor.isAarch64) {
classifier += "-arm64"
} else if (processor.is32Bit) {
classifier += "-x86"
}
} else if (SystemUtils.IS_OS_LINUX) {
classifier += "linux"
if (processor.isAarch64) {
classifier += "-arm64"
} else if (processor.isRISCV) {
classifier += "-riscv64"
} else if (processor.isPPC) {
classifier += "-ppc64le"
} else if (!processor.isX86) {
classifier += "-arm32"
}
} else if (SystemUtils.IS_OS_MAC) {
classifier += "macos"
if (!processor.isX86) {
classifier += "-arm64"
}
} else if (SystemUtils.IS_OS_FREE_BSD) {
classifier = "freebsd"
}
return classifier
}

override fun applyClientRunTransform(config: RunConfig) {
super.applyClientRunTransform(config)
config.properties["mcp_to_srg"] = {
srgToMCPAsTSRG.absolutePathString()
}
val modClassPath = provider.mods.getClasspath()
val extraPath = mutableSetOf<File>()
project.logger.info("Path before: {}", config.classpath.files.toString())
project.logger.info("Mod paths: {}", modClassPath.toString())
config.classpath = config.classpath.filter {
if (it.isDirectory || modClassPath.contains(it)) {
extraPath += it
false
} else {
true
}
}
project.logger.info("Path after: {}", config.classpath.files.toString())
project.logger.info("Extra mod paths: {}", extraPath.toString())
config.jvmArgs("-Dcrl.dev.extrapath=${extraPath.joinToString(File.pathSeparator) { it.absolutePath }}")
config.javaVersion = JavaVersion.VERSION_21
}

Expand All @@ -136,11 +204,30 @@ open class CleanroomMinecraftTransformer(project: Project, provider: MinecraftPr
config.properties["mcp_to_srg"] = {
srgToMCPAsTSRG.absolutePathString()
}
val modClassPath = provider.mods.getClasspath()
val extraPath = mutableSetOf<File>()
project.logger.info("Path before: {}", config.classpath.files.toString())
project.logger.info("Mod paths: {}", modClassPath.toString())
config.classpath = config.classpath.filter {
if (it.isDirectory || modClassPath.contains(it)) {
extraPath += it
false
} else {
true
}
}
project.logger.info("Path after: {}", config.classpath.files.toString())
project.logger.info("Extra mod paths: {}", extraPath.toString())
config.jvmArgs("-Dcrl.dev.extrapath=${extraPath.joinToString(File.pathSeparator) { it.absolutePath }}")
config.javaVersion = JavaVersion.VERSION_21
}

class CleanroomFG3(project: Project, parent: CleanroomMinecraftTransformer): FG3MinecraftTransformer(project, parent) {

override val transform: MutableList<(FileSystem) -> Unit> = listOf<(FileSystem) -> Unit>(
FixParamAnnotations::apply,
).toMutableList()

// override binpatches.pack.lzma meaning it's `userdev3`
override val userdevClassifier: String = "userdev"

Expand Down
Loading
Loading