From 7fa0a277c6507d89dc50fc23a314217d22ca4e2f Mon Sep 17 00:00:00 2001 From: Truman Gao <106889354+tdgao@users.noreply.github.com> Date: Mon, 16 Mar 2026 05:52:16 -0700 Subject: [PATCH] feat: handle geyser extension (#5582) * feat: add geyser extension detection * feat: only show geyser if inferred --- .../components/LoaderPicker.vue | 5 +++-- .../ui/create-project-version/stages/LoadersStage.vue | 5 ++++- apps/frontend/src/helpers/infer/loader-parsers.ts | 11 +++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/apps/frontend/src/components/ui/create-project-version/components/LoaderPicker.vue b/apps/frontend/src/components/ui/create-project-version/components/LoaderPicker.vue index eedf25212..4c0ed3356 100644 --- a/apps/frontend/src/components/ui/create-project-version/components/LoaderPicker.vue +++ b/apps/frontend/src/components/ui/create-project-version/components/LoaderPicker.vue @@ -45,9 +45,10 @@ import { Chips, FormattedTag, TagItem } from '@modrinth/ui' const selectedLoaders = defineModel({ default: [] }) -const { loaders } = defineProps<{ +const { loaders, includeGeyser } = defineProps<{ loaders: Labrinth.Tags.v2.Loader[] toggleLoader: (loader: string) => void + includeGeyser?: boolean }>() const loaderGroup = ref('mods') @@ -92,7 +93,7 @@ function groupLoaders(loaders: Labrinth.Tags.v2.Loader[]) { 'bungeecord', 'velocity', 'waterfall', - 'geyser', + ...(includeGeyser ? ['geyser'] : []), ] const SHADER_SORT = ['optifine', 'iris', 'canvas', 'vanilla'] diff --git a/apps/frontend/src/components/ui/create-project-version/stages/LoadersStage.vue b/apps/frontend/src/components/ui/create-project-version/stages/LoadersStage.vue index 63aba691d..a0ff8f677 100644 --- a/apps/frontend/src/components/ui/create-project-version/stages/LoadersStage.vue +++ b/apps/frontend/src/components/ui/create-project-version/stages/LoadersStage.vue @@ -4,6 +4,7 @@ v-model="draftVersion.loaders" :loaders="generatedState.loaders" :toggle-loader="toggleLoader" + :include-geyser="includeGeyser" />
@@ -52,7 +53,9 @@ const generatedState = useGeneratedState() const loaders = computed(() => generatedState.value.loaders) -const { draftVersion } = injectManageVersionContext() +const { draftVersion, inferredVersionData } = injectManageVersionContext() + +const includeGeyser = computed(() => inferredVersionData.value?.loaders?.includes('geyser')) const toggleLoader = (loader: string) => { if (draftVersion.value.loaders.includes(loader)) { diff --git a/apps/frontend/src/helpers/infer/loader-parsers.ts b/apps/frontend/src/helpers/infer/loader-parsers.ts index 365664b90..a50928dd6 100644 --- a/apps/frontend/src/helpers/infer/loader-parsers.ts +++ b/apps/frontend/src/helpers/infer/loader-parsers.ts @@ -236,6 +236,17 @@ export function createLoaderParsers( loaders: ['sponge'], } }, + // Geyser Extensions + 'extension.yml': (file: string): InferredVersionInfo => { + const metadata = yaml.load(file) as any + + return { + name: metadata.version ? `${project.title} ${metadata.version}` : '', + version_number: metadata.version, + version_type: versionType(metadata.version), + loaders: ['geyser'], + } + }, // Modpacks 'modrinth.index.json': (file: string): InferredVersionInfo => { const metadata = JSON.parse(file) as any