diff --git a/apps/frontend/src/pages/servers/manage/[id]/options/loader.vue b/apps/frontend/src/pages/servers/manage/[id]/options/loader.vue index 22651b4c..6eeba49b 100644 --- a/apps/frontend/src/pages/servers/manage/[id]/options/loader.vue +++ b/apps/frontend/src/pages/servers/manage/[id]/options/loader.vue @@ -330,48 +330,76 @@ Upload .mrpack file + + + -
-
- - -
-
-

- {{ data.project?.title }} -

- - {{ - data.project?.description && data.project.description.length > 150 - ? data.project.description.substring(0, 150) + "..." - : data.project?.description || "" - }} - +
+
+
+ +
+
+

+ {{ data.project?.title }} +

+ + {{ + data.project?.description && data.project.description.length > 150 + ? data.project.description.substring(0, 150) + "..." + : data.project?.description || "" + }} + +
-
- - +
+
+
+

Change modpack version

+

+ Select the version of {{ data.project?.title || "the modpack" }} you want to install + on your server. +

+ +
+ +
+
+ + +
+

+ If enabled, existing mods, worlds, and configurations, will be deleted before + installing the new modpack version. +

+
@@ -618,6 +646,27 @@ const updateData = async () => { }; updateData(); +const latestVersion = computed(() => { + if (!Array.isArray(versions?.value) || versions.value.length === 0) return null; + return versions.value.reduce((latest: any, current: any) => { + if (!latest) return current; + return latest.version_number > current.version_number ? latest : current; + }, null); +}); + +const hasNewerVersion = computed(() => { + if (!currentVersion.value?.version_number || !latestVersion.value?.version_number) return false; + return latestVersion.value.version_number > currentVersion.value.version_number; +}); + +const handleUpdateToLatest = async () => { + if (!latestVersion.value) return; + + version.value = latestVersion.value.version_number; + hardReset.value = false; + await reinstallCurrent(); +}; + const paperVersions = ref>({}); const purpurVersions = ref>({}); @@ -705,6 +754,7 @@ watch(selectedMCVersion, async () => { const onShow = () => { selectedMCVersion.value = props.server.general?.mc_version || ""; selectedLoaderVersion.value = ""; + hardReset.value = false; }; const onHide = () => { @@ -743,7 +793,14 @@ const reinstallCurrent = async () => { const resolvedVersionIds = versionIds.value; const versionId = resolvedVersionIds.find((entry: any) => entry[version.value])?.[version.value]; try { - await props.server.general?.reinstall(serverId, false, projectId, versionId); + await props.server.general?.reinstall( + serverId, + false, + projectId, + versionId, + undefined, + hardReset.value, + ); emit("reinstall"); } catch (error) { handleReinstallError(error);