@@ -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