From 2a1dfa3c424e1b80aff755590a6cf57d10543b89 Mon Sep 17 00:00:00 2001 From: Disy Date: Mon, 14 Sep 2026 22:59:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=8E=B7=E6=89=B9?= =?UTF-8?q?=E6=95=B4=E5=90=88=E5=8C=85=E5=90=8C=E6=AD=A5=E4=B8=8E=20StarLi?= =?UTF-8?q?ght=20=E5=AE=9E=E4=BE=8B=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/instance/HostedModpacks.vue | 214 +++++ .../instance/InstanceModeOptions.vue | 59 ++ .../instance/InstanceModeSettings.vue | 64 ++ .../instance/ModManagementSwitch.vue | 73 ++ .../ui/instance_settings/GeneralSettings.vue | 2 + .../ui/onboarding/onboardingConfig.ts | 18 +- .../src/composables/useInstanceMode.ts | 27 + apps/app-frontend/src/helpers/hosted-packs.ts | 33 + apps/app-frontend/src/helpers/install.ts | 1 + .../app-frontend/src/locales/en-US/index.json | 28 + .../app-frontend/src/locales/zh-CN/index.json | 28 + .../app-frontend/src/locales/zh-TW/index.json | 28 + apps/app-frontend/src/pages/Create.vue | 14 +- apps/app-frontend/src/pages/instance/Mods.vue | 430 ++++----- .../src/providers/setup/creation-modal.ts | 17 +- apps/app/build.rs | 5 + apps/app/src/api/install.rs | 63 +- apps/app/src/api/instance.rs | 1 + packages/app-lib/src/api/instance/run.rs | 2 + packages/app-lib/src/api/mod.rs | 2 +- packages/app-lib/src/api/pack/hosted.rs | 884 ++++++++++++++++++ .../app-lib/src/api/pack/import/axolotl.rs | 1 + packages/app-lib/src/api/pack/mod.rs | 1 + packages/app-lib/src/launcher/mod.rs | 7 +- .../instances/commands/create_instance.rs | 4 +- .../state/instances/commands/edit_instance.rs | 4 + .../src/state/instances/model/launch.rs | 51 + .../app-lib/src/state/legacy_converter.rs | 1 + standards/hosted-modpacks.md | 54 ++ 29 files changed, 1891 insertions(+), 225 deletions(-) create mode 100644 apps/app-frontend/src/components/instance/HostedModpacks.vue create mode 100644 apps/app-frontend/src/components/instance/InstanceModeOptions.vue create mode 100644 apps/app-frontend/src/components/instance/InstanceModeSettings.vue create mode 100644 apps/app-frontend/src/components/instance/ModManagementSwitch.vue create mode 100644 apps/app-frontend/src/composables/useInstanceMode.ts create mode 100644 apps/app-frontend/src/helpers/hosted-packs.ts create mode 100644 packages/app-lib/src/api/pack/hosted.rs create mode 100644 standards/hosted-modpacks.md diff --git a/apps/app-frontend/src/components/instance/HostedModpacks.vue b/apps/app-frontend/src/components/instance/HostedModpacks.vue new file mode 100644 index 0000000..3ed031f --- /dev/null +++ b/apps/app-frontend/src/components/instance/HostedModpacks.vue @@ -0,0 +1,214 @@ + + diff --git a/apps/app-frontend/src/components/instance/InstanceModeOptions.vue b/apps/app-frontend/src/components/instance/InstanceModeOptions.vue new file mode 100644 index 0000000..274ee2e --- /dev/null +++ b/apps/app-frontend/src/components/instance/InstanceModeOptions.vue @@ -0,0 +1,59 @@ + + diff --git a/apps/app-frontend/src/components/instance/InstanceModeSettings.vue b/apps/app-frontend/src/components/instance/InstanceModeSettings.vue new file mode 100644 index 0000000..737f7b3 --- /dev/null +++ b/apps/app-frontend/src/components/instance/InstanceModeSettings.vue @@ -0,0 +1,64 @@ + + diff --git a/apps/app-frontend/src/components/instance/ModManagementSwitch.vue b/apps/app-frontend/src/components/instance/ModManagementSwitch.vue new file mode 100644 index 0000000..895b6a8 --- /dev/null +++ b/apps/app-frontend/src/components/instance/ModManagementSwitch.vue @@ -0,0 +1,73 @@ + + + diff --git a/apps/app-frontend/src/components/ui/instance_settings/GeneralSettings.vue b/apps/app-frontend/src/components/ui/instance_settings/GeneralSettings.vue index 7561487..7159ab6 100644 --- a/apps/app-frontend/src/components/ui/instance_settings/GeneralSettings.vue +++ b/apps/app-frontend/src/components/ui/instance_settings/GeneralSettings.vue @@ -17,6 +17,7 @@ import { computed, type Ref, ref, watch } from 'vue' import { useRouter } from 'vue-router' import InstanceIcon from '@/components/ui/InstanceIcon.vue' +import InstanceModeSettings from '@/components/instance/InstanceModeSettings.vue' import ConfirmDeleteInstanceModal from '@/components/ui/modal/ConfirmDeleteInstanceModal.vue' import { install_duplicate_instance } from '@/helpers/install' import { edit, edit_icon, get_full_path, remove } from '@/helpers/instance' @@ -379,6 +380,7 @@ const messages = defineMessages({