Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
7f44245
Update main to Gradle kotlin script
gravit0 Sep 24, 2025
45bb7a6
Small update rfb and legacy build tasks
gravit0 Sep 24, 2025
997c0b2
Remove custom lwjgl3ify
gravit0 Jan 14, 2026
4625da6
Fix wrong ClassPatchManager, ObjectHolderRegistry, EnumHelper
gravit0 Jan 14, 2026
5aa6190
Merge branch 'staging' into update-gradle-syntax
gravit0 Jan 14, 2026
8723d6e
Drop pw.prok.imagine
gravit0 Jan 14, 2026
9ddba60
Remove unnessesary patches from EnumHelper for use without lwjgl3ify
gravit0 Feb 21, 2026
f8d00df
Improve GitHub Actions code
gravit0 Feb 21, 2026
6a06ff2
Fix release message, add java9args.txt to artifacts
gravit0 Feb 21, 2026
47a6202
Try add enums to lwjgl3ify early
gravit0 May 3, 2026
397ff1b
Merge branch 'use-original-lwjgl3ify' into all-patches
gravit0 May 3, 2026
88c1df1
Upgrade RFB and ASM
gravit0 May 4, 2026
3234c8a
Merge branch 'update-gradle-syntax' into all-patches
gravit0 May 9, 2026
c629c5e
Fix build
gravit0 May 9, 2026
1167637
Make workable with Java 8 without lwjgl3ify
gravit0 May 9, 2026
ca242bb
Fix manifest attributes
gravit0 Jun 8, 2026
fb8f3ee
Fix build scripts
gravit0 Jun 8, 2026
48e59e8
Fix EndlessIDs compatibility
gravit0 Jun 11, 2026
93f8bcc
Make lwjgl3ify extensible enum integration with rfb-plugin
gravit0 Jun 11, 2026
6303bee
Merge remote-tracking branch 'origin/staging' into all-patches
EverNife Jun 21, 2026
f38e67a
Revert 'all-patches' from staging-build.yml but keep java9args.txt
EverNife Jun 21, 2026
b8915d8
Few updates that were not matching RetroForge fork
EverNife Jun 21, 2026
dd87dac
run gradlew wrapper again
EverNife Jun 21, 2026
ce5a301
FIX NPE on relocations at java8 by: Define the package before definin…
EverNife Jun 22, 2026
e27dae1
Attempt to fix Github Action
EverNife Jun 22, 2026
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
1 change: 1 addition & 0 deletions .github/workflows/staging-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,4 @@ jobs:
This is the most up-to-date build available.
files: |
build/distributions/*
java9args.txt
28 changes: 17 additions & 11 deletions build.gradle → build.gradle.bak
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ repositories {
name 'minecraft'
url 'https://libraries.minecraft.net/'
}
maven {
name 'gtnh'
url 'https://nexus.gtnewhorizons.com/repository/public/'
}
}

minecraft {
Expand All @@ -57,6 +61,7 @@ minecraft {
'https://github.com/juanmuscaria/maven/raw/master',
'https://maven.minecraftforge.net/',
'https://oss.sonatype.org/content/repositories/snapshots/',
'https://nexus.gtnewhorizons.com/repository/public/',
'https://libraries.minecraft.net/'
]
}
Expand All @@ -81,13 +86,17 @@ configurations {

dependencies {
// New java stuff
libraries 'org.apache.commons:commons-lang3:3.12.0'
libraries 'org.apache.commons:commons-compress:1.21'
libraries 'org.ow2.asm:asm:9.5'
libraries 'org.ow2.asm:asm-commons:9.5'
libraries 'org.ow2.asm:asm-tree:9.5'
libraries 'org.ow2.asm:asm-analysis:9.5'
libraries 'org.ow2.asm:asm-util:9.5'
libraries('com.gtnewhorizons.retrofuturabootstrap:RetroFuturaBootstrap:1.0.16') {
exclude group: 'org.apache.logging.log4j'
}
libraries 'com.google.code.gson:gson:2.14.0'
libraries 'org.apache.commons:commons-lang3:3.17.0'
libraries 'org.apache.commons:commons-compress:1.27.1'
libraries 'org.ow2.asm:asm:9.9.1'
libraries 'org.ow2.asm:asm-commons:9.9.1'
libraries 'org.ow2.asm:asm-tree:9.9.1'
libraries 'org.ow2.asm:asm-analysis:9.9.1'
libraries 'org.ow2.asm:asm-util:9.9.1'
libraries 'org.ow2.asm:asm-deprecated:7.1'
libraries 'jakarta.xml.bind:jakarta.xml.bind-api:3.0.1'
libraries "javax.servlet:javax.servlet-api:4.0.1"
Expand All @@ -96,14 +105,12 @@ dependencies {
libraries 'it.unimi.dsi:fastutil:8.5.12'

// Other libs
libraries 'pw.prok:Damask:0.1.2@jar'
libraries 'commons-cli:commons-cli:1.3@jar'
libraries 'org.slf4j:slf4j-simple:1.6.2@jar'
libraries 'org.eclipse.jetty:jetty-servlet:9.0.3.v20130506@jar'
libraries 'commons-io:commons-io:2.4@jar'
libraries 'commons-io:commons-io:2.18.0'
libraries 'net.sf.opencsv:opencsv:2.0@jar'
libraries 'com.beust:jcommander:1.30@jar'
libraries 'io.github.cruciblemc:launchwrapper:1.13@jar'
libraries 'com.typesafe.akka:akka-actor_2.11:2.3.3'
libraries 'com.typesafe:config:1.2.1'
libraries 'org.scala-lang:scala-actors-migration_2.11:1.1.0'
Expand All @@ -127,7 +134,6 @@ dependencies {
libraries 'org.xerial:sqlite-jdbc:3.7.2'
libraries 'mysql:mysql-connector-java:5.1.14'
libraries 'javax.persistence:persistence-api:1.0.2'
libraries 'pw.prok:KImagine:0.2.0@jar'
libraries 'org.apache.httpcomponents:httpclient:4.4.1'
libraries 'net.openhft:affinity:3.0.1'
libraries 'org.fusesource.jansi:jansi:1.11'
Expand Down
286 changes: 286 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,286 @@
import org.gradle.api.tasks.bundling.Jar
import org.gradle.api.tasks.bundling.Zip
import org.gradle.api.publish.maven.MavenPublication
import io.github.cruciblemc.forgegradle.tasks.DelayedJar
import java.io.ByteArrayOutputStream

plugins {
base
id("maven-publish")
id("java-library")
id("crucible") // Assuming this is a custom plugin still available
}

buildscript {
repositories {
mavenCentral()
// mavenLocal() // for testing plugin pre release
maven {
name = "juanmuscaria"
url = uri("https://github.com/juanmuscaria/maven/raw/master")
}
maven {
name = "forge"
url = uri("https://maven.minecraftforge.net/")
}
}
dependencies {
classpath("com.anatawa12.forge:ForgeGradle:1.2-1.1.0")
}
}

repositories {
maven {
name = "juanmuscaria"
url = uri("https://github.com/juanmuscaria/maven/raw/master")
}
maven {
name = "thermos"
url = uri("https://github.com/juanmuscaria/maven/raw/master/ThermosLibs")
}
maven {
name = "forge"
url = uri("https://maven.minecraftforge.net/")
}
maven {
name = "minecraft"
url = uri("https://libraries.minecraft.net/")
}
maven {
name = "gtnh"
url = uri("https://nexus.gtnewhorizons.com/repository/public/")
}
}

configure<io.github.cruciblemc.forgegradle.DevExtension> {
version = "1.7.10"
mcpVersion = "9.08"
mainClass = "cpw.mods.fml.relauncher.ServerLaunchWrapper"
tweakClass = "cpw.mods.fml.common.launcher.FMLTweaker"
installerVersion = "1.4"

// Repos used on the generated subprojects
repos = listOf("https://github.com/juanmuscaria/maven/raw/master/ThermosLibs",
"https://github.com/juanmuscaria/maven/raw/master",
"https://maven.minecraftforge.net/",
"https://oss.sonatype.org/content/repositories/snapshots/",
"https://nexus.gtnewhorizons.com/repository/public/",
"https://libraries.minecraft.net/")
}

extensions.configure<ExtraPropertiesExtension>("ext") {
set("mcVersion", "1.7.10")
set("forgeVersion", "1614")
set("revision", "1.0.7")
}

group = "io.github.cruciblemc"

val crucibleVersion = "5.4" // TODO: Not hardcode
version = if (gitInfo("branch") != "master") {
"${extra["mcVersion"]}-${gitInfo("branch")}-${gitInfo("hash")}"
} else {
"${extra["mcVersion"]}-$crucibleVersion"
}

val libraries by configurations.creating {
isCanBeConsumed = false; isCanBeResolved = true;
}

configurations["implementation"].extendsFrom(libraries)

dependencies {
"libraries"("com.gtnewhorizons.retrofuturabootstrap:RetroFuturaBootstrap:1.1.0") {
exclude(group = "org.apache.logging.log4j")
}
"libraries"("com.google.code.gson:gson:2.14.0")
"libraries"("org.apache.commons:commons-lang3:3.17.0")
"libraries"("org.apache.commons:commons-compress:1.27.1")
"libraries"("org.ow2.asm:asm:9.9.1")
"libraries"("org.ow2.asm:asm-commons:9.9.1")
"libraries"("org.ow2.asm:asm-tree:9.9.1")
"libraries"("org.ow2.asm:asm-analysis:9.9.1")
"libraries"("org.ow2.asm:asm-util:9.9.1")
"libraries"("org.ow2.asm:asm-deprecated:7.1")
"libraries"("jakarta.xml.bind:jakarta.xml.bind-api:3.0.1")
"libraries"("javax.servlet:javax.servlet-api:4.0.1")
"libraries"("com.sun.xml.bind:jaxb-impl:3.0.2")
"libraries"("org.openjdk.nashorn:nashorn-core:15.4")
"libraries"("it.unimi.dsi:fastutil:8.5.12")

// Other libs
"libraries"("commons-cli:commons-cli:1.3@jar")
"libraries"("org.slf4j:slf4j-simple:1.6.2@jar")
"libraries"("org.eclipse.jetty:jetty-servlet:9.0.3.v20130506@jar")
"libraries"("commons-io:commons-io:2.18.0")
"libraries"("net.sf.opencsv:opencsv:2.0@jar")
"libraries"("com.beust:jcommander:1.30@jar")
"libraries"("io.github.cruciblemc:launchwrapper:1.13@jar")
"libraries"("com.typesafe.akka:akka-actor_2.11:2.3.3")
"libraries"("com.typesafe:config:1.2.1")
"libraries"("org.scala-lang:scala-actors-migration_2.11:1.1.0")
"libraries"("org.scala-lang:scala-compiler:2.11.7")
"libraries"("org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2")
"libraries"("org.scala-lang.plugins:scala-continuations-plugin_2.11.2:1.0.2")
"libraries"("org.scala-lang:scala-library:2.11.7")
"libraries"("org.scala-lang:scala-parser-combinators:2.11.0-M4")
"libraries"("org.scala-lang:scala-reflect:2.11.7")
"libraries"("org.scala-lang:scala-swing:2.11.0-M7")
"libraries"("org.scala-lang:scala-xml:2.11.0-M4")
"libraries"("net.sf.jopt-simple:jopt-simple:5.0.1")
"libraries"("lzma:lzma:0.0.1")
"libraries"("org.yaml:snakeyaml:1.9")
"libraries"("commons-lang:commons-lang:2.6")
"libraries"("org.avaje:ebean:2.7.3")
"libraries"("jline:jline:2.6")
"libraries"("net.md-5:SpecialSource:1.10.0")
"libraries"("net.sourceforge.argo:argo:2.25")
"libraries"("com.googlecode.json-simple:json-simple:1.1")
"libraries"("org.xerial:sqlite-jdbc:3.7.2")
"libraries"("mysql:mysql-connector-java:5.1.14")
"libraries"("javax.persistence:persistence-api:1.0.2")
"libraries"("pw.prok:KImagine:0.2.0@jar")
"libraries"("org.apache.httpcomponents:httpclient:4.4.1")
"libraries"("net.openhft:affinity:3.0.1")
"libraries"("org.fusesource.jansi:jansi:1.11")
"libraries"("com.koloboke:koloboke-impl-jdk8:1.0.0")
"libraries"("java3d:vecmath:1.3.1")
"libraries"("net.minecraft:server:1.7.10")
}

tasks.register<Jar>("packageJavadoc") {
dependsOn(":eclipse:cauldron:javadoc")
archiveClassifier.set("javadoc")
destinationDirectory.set(layout.buildDirectory.dir("libs"))
}

tasks.named<Jar>("jar").configure {
manifest {
attributes(
mapOf(
"Thermos-Git-Branch" to gitInfo("branch"),
"Thermos-Git-Hash" to gitInfo("fullHash"),
"Thermos-Group" to project.group,
"Thermos-Channel" to project.name,
"Thermos-Version" to project.version,
"Thermos-Legacy" to true,
"Implementation-Vendor" to "CrucibleMC Team",
"Implementation-Title" to project.name,
"Implementation-Version" to project.version,
"Specification-Vendor" to "Bukkit Team",
"Specification-Title" to "Bukkit",
"Specification-Version" to "1.7.10-R0.1-SNAPSHOT",
"Forge-Version" to "10.13.4.1614",
"TweakClass" to "cpw.mods.fml.common.launcher.FMLTweaker",
"Main-Class" to "cpw.mods.fml.relauncher.ServerLaunchWrapper",
"Class-Path" to generateClasspath(),
"Crucible-Libs" to generateMavenLibs()
)
)
}
}

tasks.named<DelayedJar>("packageServer").configure {
doFirst {
manifest {
attributes(
mapOf(
"Thermos-Git-Branch" to gitInfo("branch"),
"Thermos-Git-Hash" to gitInfo("fullHash"),
"Thermos-Group" to project.group,
"Thermos-Channel" to project.name,
"Thermos-Version" to project.version,
"Thermos-Legacy" to true,
"Implementation-Vendor" to "CrucibleMC Team",
"Implementation-Title" to project.name,
"Implementation-Version" to project.version,
"Specification-Vendor" to "Bukkit Team",
"Specification-Title" to "Bukkit",
"Specification-Version" to "1.7.10-R0.1-SNAPSHOT",
"Forge-Version" to "10.13.4.1614",
"TweakClass" to "cpw.mods.fml.common.launcher.FMLTweaker",
"Main-Class" to "cpw.mods.fml.relauncher.ServerLaunchWrapper",
"Class-Path" to generateClasspath(),
"Crucible-Libs" to generateMavenLibs()
)
)
}
}
}

tasks.register<Zip>("packageLibraries") {
archiveFileName.set("libraries.zip")
destinationDirectory.set(layout.buildDirectory.dir("distributions"))

outputs.upToDateWhen { false }

from(configurations.named("libraries").get().resolvedConfiguration.resolvedArtifacts.map { art ->
val id = art.moduleVersion.id
val intoPath = "${id.group.replace('.', '/')}/${id.name}/${id.version}/"
zipTree(art.file).matching { }.let { copySpec ->
//copySpec.into(intoPath)
}
art.file
})

group = "crucible"
description = "Package all necessary libraries to run Crucible, in case the server cannot download them at runtime"
}

publishing {
publications {
create<MavenPublication>("crucible") {
artifact(tasks.named("packageApi"))
artifact(tasks.named("packageJavadoc"))
}
}
repositories {
maven {
name = "filesystem"
url = uri("${buildDir}/repo")
}
}
}

// Git helper
fun gitInfo(key: String): String {
val cache = project.extra.properties.getOrPut("gitInfoCached") {
if (file(".git").exists()) {
mapOf(
"hash" to runGit("log", "--format=%h", "-n", "1"),
"fullHash" to runGit("log", "--format=%H", "-n", "1"),
"branch" to runGit("rev-parse", "--abbrev-ref", "HEAD"),
"message" to runGit("log", "--format=%B", "-n", "1")
)
} else {
mapOf(
"hash" to "NOT_A_GIT",
"fullHash" to "NOT_A_GIT",
"branch" to "NOT_A_GIT",
"message" to "NOT_A_GIT"
)
}
} as Map<*, *>
return cache[key] as String
}

fun runGit(vararg args: String): String {
val stdout = ByteArrayOutputStream()
project.exec {
commandLine("git", *args)
standardOutput = stdout
}
return stdout.toString().trim()
}

fun generateClasspath(): String =
configurations["libraries"].resolvedConfiguration.resolvedArtifacts.joinToString(" ") { art ->
val id = art.moduleVersion.id
"libraries/${id.group.replace('.', '/')}/${id.name}/${id.version}/${id.name}-${id.version}.jar"
}

fun generateMavenLibs(): String =
configurations["libraries"].resolvedConfiguration.resolvedArtifacts.joinToString(" ") { art ->
val id = art.moduleVersion.id
"${id.group}:${id.name}:${id.version}"
}
6 changes: 3 additions & 3 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ repositories {

dependencies {
// TODO? figure a way to use the runtime dependencies of FG?
implementation("org.ow2.asm:asm:9.6")
implementation("org.ow2.asm:asm-tree:9.6")
implementation("org.ow2.asm:asm:9.8")
implementation("org.ow2.asm:asm-tree:9.8")
implementation("com.google.guava:guava:31.1-jre")
implementation("com.opencsv:opencsv:5.7.0")
implementation("com.cloudbees:diff4j:1.3")
Expand All @@ -33,7 +33,7 @@ dependencies {
implementation("de.oceanlabs.mcp:mcinjector:3.2-SNAPSHOT")
implementation("net.minecraftforge:Srg2Source:4.2.7")

api("com.anatawa12.forge:ForgeGradle:1.2-1.1.0")
api("com.anatawa12.forge:ForgeGradle:1.2-1.1.1")
testImplementation(platform("org.junit:junit-bom:5.9.1"))
testImplementation("org.junit.jupiter:junit-jupiter")

Expand Down
Loading
Loading