Skip to content

Commit 0639b0a

Browse files
committed
use new maven setup for AutoUpdater and
1 parent f9b522c commit 0639b0a

4 files changed

Lines changed: 65 additions & 83 deletions

File tree

.github/workflows/dev-build.yml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,6 @@ jobs:
4646
-PmavenUsername=${{ secrets.MAVEN_USER }} \
4747
-PmavenPassword=${{ secrets.MAVEN_TOKEN }}
4848
49-
- name: Rename JAR (fallback)
50-
run: |
51-
mv build/libs/lambda-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}.jar \
52-
build/libs/lambda-${{ steps.all.outputs.modVersion }}+${{ steps.all.outputs.minecraftVersion }}-dev.${{ github.run_number }}.jar
53-
5449
- name: Upload JAR artifact
5550
uses: actions/upload-artifact@v4
5651
id: upload-git

build.gradle.kts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,15 @@ plugins {
5353
}
5454

5555
group = mavenGroup
56-
version = modVersion
56+
57+
val isDevBuild = project.hasProperty("mavenType") && project.property("mavenType") == "dev"
58+
val buildNum = if (project.hasProperty("buildNumber")) project.property("buildNumber") as String else null
59+
60+
version = if (isDevBuild && buildNum != null) {
61+
"$modVersion+$minecraftVersion-dev.$buildNum"
62+
} else {
63+
modVersion
64+
}
5765

5866
base.archivesName = modId
5967

@@ -241,7 +249,7 @@ java {
241249
}
242250

243251
publishing {
244-
val mavenType = project.findProperty("mavenType")?.toString() ?: "dev"
252+
val mavenType = project.findProperty("mavenType").toString()
245253
val mavenUrl = "https://maven.lambda-client.org/${mavenType}"
246254
val versionBase = "$modVersion+$minecraftVersion"
247255

src/main/kotlin/com/lambda/config/migration/migrations/ModuleConfigMigration.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,16 @@ object ModuleConfigMigration : StepConfigMigration() {
4343
properties.put("loaderPromptHandled", loaderPromptHandled.asString())
4444
LOG.info("Module config category schema v2 -> v3")
4545
}
46+
47+
step(2, 3) { root ->
48+
val autoUpdater = root.get("AutoUpdater") ?: return@step
49+
if (!autoUpdater.isObject) return@step
50+
val settings = autoUpdater.get("Settings") ?: return@step
51+
if (!settings.isObject) return@step
52+
val loaderBranch = settings.get("Loader Branch") ?: return@step
53+
if (!loaderBranch.isString) return@step
54+
if (loaderBranch.asString() != "Snapshot") return@step
55+
settings.asObject().put("Loader Branch", "Dev")
56+
}
4657
}
4758
}

src/main/kotlin/com/lambda/module/modules/client/AutoUpdater.kt

Lines changed: 44 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ object AutoUpdater : Module(
4444
) {
4545
private val debug by setting("Debug", false, "Enable debug logging")
4646
private val loaderBranch by setting("Loader Branch", Branch.Stable, "Select loader update branch")
47-
private val clientBranch by setting("Client Branch", Branch.Snapshot, "Select client update branch")
47+
private val clientBranch by setting("Client Branch", Branch.Dev, "Select client update branch")
4848

4949
private var loaderPromptHandled by property(false)
5050

@@ -54,14 +54,14 @@ object AutoUpdater : Module(
5454
private var firstLaunchStateInitialized = false
5555

5656
private const val MAVEN_URL = "https://maven.lambda-client.org"
57-
private const val LOADER_RELEASES_META = "$MAVEN_URL/releases/com/lambda/lambda-loader/maven-metadata.xml"
58-
private const val LOADER_SNAPSHOTS_META = "$MAVEN_URL/snapshots/com/lambda/lambda-loader/maven-metadata.xml"
59-
private const val CLIENT_RELEASES_META = "$MAVEN_URL/releases/com/lambda/lambda/maven-metadata.xml"
60-
private const val CLIENT_SNAPSHOTS_META = "$MAVEN_URL/snapshots/com/lambda/lambda/maven-metadata.xml"
57+
private const val LOADER_STABLE_META = "$MAVEN_URL/stable/com/lambda/lambda-loader/maven-metadata.xml"
58+
private const val LOADER_DEV_META = "$MAVEN_URL/dev/com/lambda/lambda-loader/maven-metadata.xml"
59+
private const val CLIENT_STABLE_META = "$MAVEN_URL/stable/com/lambda/lambda/maven-metadata.xml"
60+
private const val CLIENT_DEV_META = "$MAVEN_URL/dev/com/lambda/lambda/maven-metadata.xml"
6161

6262
private enum class Branch {
6363
Stable,
64-
Snapshot
64+
Dev
6565
}
6666

6767
const val WINDOW_FLAGS =
@@ -217,8 +217,8 @@ object AutoUpdater : Module(
217217
}
218218
}
219219

220-
fun downloadLatestLoader(): ByteArray? {
221-
return try {
220+
fun downloadLatestLoader(): ByteArray? =
221+
try {
222222
val branch = loaderBranch
223223
val mcVersion = getMinecraftVersion()
224224

@@ -229,36 +229,27 @@ object AutoUpdater : Module(
229229

230230
when (branch) {
231231
Branch.Stable -> {
232-
val xml = URI(LOADER_RELEASES_META).toURL().readText()
233-
version = parseLatestVersion(xml, null)
234-
baseUrl = "$MAVEN_URL/releases"
232+
version = fetchLatestVersion(LOADER_STABLE_META, null)
233+
baseUrl = "$MAVEN_URL/stable"
235234
}
236-
Branch.Snapshot -> {
237-
val xml = URI(LOADER_SNAPSHOTS_META).toURL().readText()
238-
version = parseLatestVersion(xml, null)
239-
baseUrl = "$MAVEN_URL/snapshots"
235+
Branch.Dev -> {
236+
version = fetchLatestVersion(LOADER_DEV_META, null)
237+
baseUrl = "$MAVEN_URL/dev"
240238
}
241239
}
242240

243241
if (version == null && branch == Branch.Stable) {
244-
warn("No stable loader found, falling back to snapshot")
245-
val xml = URI(LOADER_SNAPSHOTS_META).toURL().readText()
246-
version = parseLatestVersion(xml, null)
247-
baseUrl = "$MAVEN_URL/snapshots"
242+
warn("No stable loader found, falling back to dev")
243+
version = fetchLatestVersion(LOADER_DEV_META, null)
244+
baseUrl = "$MAVEN_URL/dev"
248245
}
249246

250247
if (version == null) {
251248
logError("No loader version found")
252249
return null
253250
}
254251

255-
val jarUrl = if (version.endsWith("-SNAPSHOT")) {
256-
val snapshotInfo = getSnapshotInfo(baseUrl, "com/lambda/lambda-loader", version) ?: return null
257-
val baseVersion = version.replace("-SNAPSHOT", "")
258-
"$baseUrl/com/lambda/lambda-loader/$version/lambda-loader-$baseVersion-${snapshotInfo.timestamp}-${snapshotInfo.buildNumber}.jar"
259-
} else {
260-
"$baseUrl/com/lambda/lambda-loader/$version/lambda-loader-$version.jar"
261-
}
252+
val jarUrl = "$baseUrl/com/lambda/lambda-loader/$version/lambda-loader-$version.jar"
262253

263254
if (debug) debug("Downloading from: $jarUrl")
264255

@@ -267,48 +258,40 @@ object AutoUpdater : Module(
267258
logError("Failed to download loader", e)
268259
null
269260
}
270-
}
271261

272-
fun downloadLatestClient(): ByteArray? {
273-
return try {
262+
fun downloadLatestClient(): ByteArray? =
263+
try {
274264
val branch = clientBranch
275265
val mcVersion = getMinecraftVersion()
276266

277267
if (debug) debug("Downloading client for MC $mcVersion from ${branch.name} branch")
278268

279-
var version: String?
280-
var baseUrl: String?
269+
var version: String? = null
270+
var baseUrl: String? = null
281271

282272
when (branch) {
283273
Branch.Stable -> {
284-
val xml = URI(CLIENT_RELEASES_META).toURL().readText()
285-
version = parseLatestVersion(xml, mcVersion)
286-
baseUrl = "$MAVEN_URL/releases"
274+
version = fetchLatestVersion(CLIENT_STABLE_META, mcVersion)
275+
baseUrl = "$MAVEN_URL/stable"
287276
}
288-
Branch.Snapshot -> {
289-
val xml = URI(CLIENT_SNAPSHOTS_META).toURL().readText()
290-
version = parseLatestVersion(xml, mcVersion)
291-
baseUrl = "$MAVEN_URL/snapshots"
277+
Branch.Dev -> {
278+
version = fetchLatestVersion(CLIENT_DEV_META, mcVersion)
279+
baseUrl = "$MAVEN_URL/dev"
292280
}
293281
}
294282

295283
if (version == null && branch == Branch.Stable) {
296-
warn("No stable client found for MC $mcVersion, falling back to snapshot")
297-
val xml = URI(CLIENT_SNAPSHOTS_META).toURL().readText()
298-
version = parseLatestVersion(xml, mcVersion)
299-
baseUrl = "$MAVEN_URL/snapshots"
284+
warn("No stable client found for MC $mcVersion, falling back to dev")
285+
version = fetchLatestVersion(CLIENT_DEV_META, mcVersion)
286+
baseUrl = "$MAVEN_URL/dev"
300287
}
301288

302289
if (version == null) {
303290
logError("No client version found for MC $mcVersion")
304291
return null
305292
}
306293

307-
val jarUrl = if (version.endsWith("-SNAPSHOT")) {
308-
val snapshotInfo = getSnapshotInfo(baseUrl, "com/lambda/lambda", version) ?: return null
309-
val baseVersion = version.replace("-SNAPSHOT", "")
310-
"$baseUrl/com/lambda/lambda/$version/lambda-$baseVersion-${snapshotInfo.timestamp}-${snapshotInfo.buildNumber}.jar"
311-
} else "$baseUrl/com/lambda/lambda/$version/lambda-$version.jar"
294+
val jarUrl = "$baseUrl/com/lambda/lambda/$version/lambda-$version.jar"
312295

313296
if (debug) debug("Downloading from: $jarUrl")
314297

@@ -317,10 +300,21 @@ object AutoUpdater : Module(
317300
logError("Failed to download client", e)
318301
null
319302
}
320-
}
321303

322-
private fun parseLatestVersion(xml: String, mcVersion: String? = null): String? {
323-
return try {
304+
private fun fetchLatestVersion(url: String, mcVersion: String? = null): String? =
305+
try {
306+
val xml = URI(url).toURL().readText()
307+
parseLatestVersion(xml, mcVersion)
308+
} catch (e: java.io.FileNotFoundException) {
309+
if (debug) warn("Metadata not found at $url (repo might be empty)")
310+
null
311+
} catch (e: Exception) {
312+
if (debug) logError("Error fetching metadata from $url", e)
313+
null
314+
}
315+
316+
private fun parseLatestVersion(xml: String, mcVersion: String? = null): String? =
317+
try {
324318
val factory = DocumentBuilderFactory.newInstance()
325319
val builder = factory.newDocumentBuilder()
326320
val document = builder.parse(xml.byteInputStream())
@@ -361,26 +355,6 @@ object AutoUpdater : Module(
361355
logError("Error parsing version", e)
362356
null
363357
}
364-
}
365-
366-
private fun getSnapshotInfo(baseUrl: String, artifactPath: String, version: String): SnapshotInfo? {
367-
return try {
368-
val snapshotMetaUrl = URI("$baseUrl/$artifactPath/$version/maven-metadata.xml").toURL()
369-
val xml = snapshotMetaUrl.readText()
370-
371-
val factory = DocumentBuilderFactory.newInstance()
372-
val builder = factory.newDocumentBuilder()
373-
val document = builder.parse(xml.byteInputStream())
374-
375-
val timestamp = document.getElementsByTagName("timestamp").item(0).textContent
376-
val buildNumber = document.getElementsByTagName("buildNumber").item(0).textContent
377-
378-
SnapshotInfo(version, timestamp, buildNumber)
379-
} catch (e: Exception) {
380-
logError("Error getting snapshot info", e)
381-
null
382-
}
383-
}
384358

385359
private fun getMinecraftVersion() = SharedConstants.getGameVersion().name()
386360

@@ -432,10 +406,4 @@ object AutoUpdater : Module(
432406
loaderPromptHandled = true
433407
showFirstLaunchModal = false
434408
}
435-
436-
private data class SnapshotInfo(
437-
val version: String,
438-
val timestamp: String,
439-
val buildNumber: String
440-
)
441409
}

0 commit comments

Comments
 (0)