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
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
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
// 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]