From 0aecfa314003bcb9da21408d6082506e979c8c64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois-Xavier=20Talbot?= <108630700+fetchfern@users.noreply.github.com> Date: Tue, 24 Mar 2026 16:39:04 -0400 Subject: [PATCH] hosting: support java 25 (#5654) * Add Java 25, handle new version format * Changelog * Revert "Changelog" This reverts commit 0c1c7e2fe8d7ba9bc3d3a5e1ae6d8b0e7c2cd3f5. --- .../hosting/manage/[id]/options/startup.vue | 44 ++++++++++++++++--- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/apps/frontend/src/pages/hosting/manage/[id]/options/startup.vue b/apps/frontend/src/pages/hosting/manage/[id]/options/startup.vue index c48452832..d8fd8c985 100644 --- a/apps/frontend/src/pages/hosting/manage/[id]/options/startup.vue +++ b/apps/frontend/src/pages/hosting/manage/[id]/options/startup.vue @@ -150,6 +150,7 @@ const JAVA_VERSIONS = [ { value: 11, label: 'Java 11' }, { value: 17, label: 'Java 17' }, { value: 21, label: 'Java 21' }, + { value: 25, label: 'Java 25' }, ] const JRE_VENDORS: { value: Archon.Content.v1.JreVendor; label: string }[] = [ @@ -203,19 +204,50 @@ const hasUnsavedChanges = computed( // Java version filtering const showAllVersions = ref(false) +type MinecraftReleaseVersion = { + major: number + minor: number +} + +function parseMinecraftReleaseVersion(version: string): MinecraftReleaseVersion | null { + const [majorPart, minorPart] = version.split('.') + + if (!majorPart || !minorPart) return null + + const major = Number(majorPart) + const minor = Number(minorPart) + + if (!Number.isInteger(major) || !Number.isInteger(minor)) return null + + return { major, minor } +} + +function filterJavaVersions(compatibleVersions: number[]) { + return JAVA_VERSIONS.filter((version) => compatibleVersions.includes(version.value)) +} + const displayedJavaVersions = computed(() => { if (showAllVersions.value) return JAVA_VERSIONS const mcVersion = server.value?.mc_version ?? '' if (!mcVersion) return JAVA_VERSIONS - const [, minor] = mcVersion.split('.').map(Number) + const releaseVersion = parseMinecraftReleaseVersion(mcVersion) + if (!releaseVersion) return JAVA_VERSIONS - if (minor >= 20) return JAVA_VERSIONS.filter((v) => v.value === 21) - if (minor >= 17) return JAVA_VERSIONS.filter((v) => [17, 21].includes(v.value)) - if (minor >= 12) return JAVA_VERSIONS - if (minor >= 6) return JAVA_VERSIONS.filter((v) => [8, 11].includes(v.value)) - return JAVA_VERSIONS.filter((v) => v.value === 8) + if (releaseVersion.major > 1) { + if (releaseVersion.major >= 26) { + return filterJavaVersions([25]) + } + + return JAVA_VERSIONS + } + + if (releaseVersion.minor >= 20) return filterJavaVersions([21]) + if (releaseVersion.minor >= 17) return filterJavaVersions([17, 21]) + if (releaseVersion.minor >= 12) return filterJavaVersions([8, 11, 17, 21]) + if (releaseVersion.minor >= 6) return filterJavaVersions([8, 11]) + return filterJavaVersions([8]) }) // Save mutation