diff --git a/src/gql/mods/mod.graphql b/src/gql/mods/mod.graphql index ceb4b69f4..83da4f4b9 100644 --- a/src/gql/mods/mod.graphql +++ b/src/gql/mods/mod.graphql @@ -27,6 +27,7 @@ query GetMod($mod: String!) { version created_at game_version + required_on_remote } beta { id @@ -45,6 +46,7 @@ query GetMod($mod: String!) { version created_at game_version + required_on_remote } release { id @@ -63,6 +65,7 @@ query GetMod($mod: String!) { version created_at game_version + required_on_remote } } downloads diff --git a/src/lib/components/mods/ModLatestVersions.svelte b/src/lib/components/mods/ModLatestVersions.svelte index dcc584ee4..869e58dea 100644 --- a/src/lib/components/mods/ModLatestVersions.svelte +++ b/src/lib/components/mods/ModLatestVersions.svelte @@ -8,7 +8,7 @@ import type { Version, VersionDependency, VersionTarget } from '$lib/generated'; import { T } from '@tolgee/svelte'; - type IVersion = Pick & { + type IVersion = Pick & { targets?: Pick[]; } & { dependencies?: Pick[] }; @@ -27,6 +27,34 @@ export let modReference!: string; export const { t } = getTranslate(); + + function formatRemote(targets: Pick[]) { + if (!Array.isArray(targets)) { + return; + } + + const HasClient = targets.some((target) => target.targetName === 'Windows'); + const HasServer = + targets.some((target) => target.targetName === 'WindowsServer') || + targets.some((target) => target.targetName === 'LinuxServer'); + + if (HasClient && !HasServer) { + return $t({ + key: 'version.required_on_remote.client', + defaultValue: `This mod is only required on the client to function, so no server builds are provided.` + }); + } else if (!HasClient && HasServer) { + return $t({ + key: 'version.required_on_remote.server', + defaultValue: `This mod is only required on the server to function, so no client builds are provided.` + }); + } else if (HasClient && HasServer) { + return $t({ + key: 'version.required_on_remote.both', + defaultValue: `This mod is only required on the server or the client to function, but not required on both. See mod page/documentation for details.` + }); + } + }
@@ -62,6 +90,11 @@
+ {#if !latestVersions[stability].required_on_remote} +
+ {formatRemote(latestVersions[stability].targets ?? [])} +
+ {/if} {/if}