@xmcl/curseforge
Version:
An implementation of curseforge (official) API in https://docs.curseforge.com/
64 lines (50 loc) • 2.44 kB
Markdown
[](https://www.npmjs.com/package/@xmcl/curseforge)
[](https://npmjs.com/@xmcl/curseforge)
[](https://packagephobia.now.sh/result?p=@xmcl/curseforge)
[](https://github.com/voxelum/minecraft-launcher-core-node/blob/master/LICENSE)
[](https://github.com/Voxelum/minecraft-launcher-core-node/actions?query=workflow%3ABuild)
Provide the curseforge API wrapper in https://docs.curseforge.com/
This package is depending on undici for HTTP in nodejs, and the browser version will use browser `fetch` instead of undici.
You can search curseforge mods by keyword
```ts
import { CurseforgeV1Client, SearchOptions } from '@xmcl/curseforge'
const api = new CurseforgeV1Client(process.env.CURSEFORGE_API_KEY)
const searchOptions: SearchOptions = {
categoryId: 6, // 6 is mod,
searchFilter: 'search-keyword',
};
const result = await api.searchMods(searchOptions)
const pageSize = result.pagination.pageSize
const total = result.pagination.total
const totalPages = Math.ceil(total / pageSize)
const mods: Mod[] = result.data // mod details
```
You can get the mod detail by mod id
```ts
import { CurseforgeV1Client } from '@xmcl/curseforge'
const api = new CurseforgeV1Client(process.env.CURSEFORGE_API_KEY)
const mod = await api.getMod(123)
console.log(mod.id) // 123
console.log(mod.name) // The mod name
console.log(mod.authors) // [{ id: 123, name: 'The author name' }]
console.log(mod.summary) // The mod summary
```
```ts
// sample code for get file list for a mod
const api = new CurseforgeV1Client(process.env.CURSEFORGE_API_KEY)
const { data: files, pagination } = await api.getModFiles({
modId: 1, // your mod id
gameVersion: '1.16.5', // support minecraft 1.16.5, optional
modLoaderType: FileModLoaderType.Fabric, // only fabric, optional
})
const pageSize = pagination.pageSize
const index = pagination.index
const total = pagination.total // total count
const pages = Math.ceil(total / pageSize) // total pages
const firstFile = files[0]
```