diff --git a/mock/mods/sample-mod-1.13-no-deps-client-only.jar b/mock/mods/sample-mod-1.13-no-deps-client-only.jar new file mode 100644 index 000000000..1d67cc59e Binary files /dev/null and b/mock/mods/sample-mod-1.13-no-deps-client-only.jar differ diff --git a/packages/mod-parser/forge.test.ts b/packages/mod-parser/forge.test.ts index 7b76f131f..993bd9797 100644 --- a/packages/mod-parser/forge.test.ts +++ b/packages/mod-parser/forge.test.ts @@ -16,7 +16,12 @@ describe('Forge', () => { test('should not crash if the toml does not have the dependencies', async ({ mock }) => { const metadata = await readForgeModToml(`${mock}/mods/sample-mod-1.13-no-deps.jar`) // eslint-disable-next-line no-template-curly-in-string - expect(metadata).toEqual([{ authors: 'mezz', credits: '', dependencies: [], description: 'JEI is an item and recipe viewing mod for Minecraft, built from the ground up for stability and performance.\n', displayName: 'Just Enough Items', displayURL: 'https://minecraft.curseforge.com/projects/jei', issueTrackerURL: 'https://github.com/mezz/JustEnoughItems/issues?q=is%3Aissue', loaderVersion: '[14,)', logoFile: '', modLoader: 'javafml', modid: 'jei', provides: [], updateJSONURL: '', version: '${file.jarVersion}' }]) + expect(metadata).toEqual([{ authors: 'mezz', credits: '', dependencies: [], description: 'JEI is an item and recipe viewing mod for Minecraft, built from the ground up for stability and performance.\n', displayName: 'Just Enough Items', displayURL: 'https://minecraft.curseforge.com/projects/jei', issueTrackerURL: 'https://github.com/mezz/JustEnoughItems/issues?q=is%3Aissue', loaderVersion: '[14,)', logoFile: '', modLoader: 'javafml', modid: 'jei', provides: [], updateJSONURL: '', version: '${file.jarVersion}', clientSideOnly: false }]) + }) + + test('should read if the mod is client side only', async ({ mock }) => { + const metadata = await readForgeModToml(`${mock}/mods/sample-mod-1.13-no-deps-client-only.jar`) + expect(metadata).toEqual([{ authors: 'mezz', credits: '', dependencies: [], description: 'JEI is an item and recipe viewing mod for Minecraft, built from the ground up for stability and performance.\n', displayName: 'Just Enough Items', displayURL: 'https://minecraft.curseforge.com/projects/jei', issueTrackerURL: 'https://github.com/mezz/JustEnoughItems/issues?q=is%3Aissue', loaderVersion: '[14,)', logoFile: '', modLoader: 'javafml', modid: 'jei', provides: [], updateJSONURL: '', version: '${file.jarVersion}', clientSideOnly: true }]) }) test('should read >1.13 forge mod jar', async ({ mock }) => { @@ -67,6 +72,7 @@ describe('Forge', () => { modLoader: 'javafml', loaderVersion: '[14,)', version: '6.0.0.26', + clientSideOnly: false, }, ], usedForgePackage: true, diff --git a/packages/mod-parser/forge.ts b/packages/mod-parser/forge.ts index 84055d8f0..d83ea4f49 100644 --- a/packages/mod-parser/forge.ts +++ b/packages/mod-parser/forge.ts @@ -196,6 +196,10 @@ export interface ForgeModTOMLData { * A URL to refer people to when problems occur with this mod */ issueTrackerURL: string + /** + * If true, the mod is client side only + */ + clientSideOnly: boolean } export interface ForgeModASMData { @@ -500,6 +504,7 @@ export async function readForgeModToml(mod: ForgeModInput, manifest?: Record