onelnchr-mc-loaders
Version:
Provides metadata for minecraft modloaders
132 lines • 4.96 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.tomateModsModLoader = exports.url = exports.id = void 0;
exports.listLoaders = listLoaders;
exports.listAllLoaderVersions = listAllLoaderVersions;
exports.listLoaderVersions = listLoaderVersions;
exports.getProfile = getProfile;
exports.getMCLCLaunchConfig = getMCLCLaunchConfig;
exports.listSupportedGameVersions = listSupportedGameVersions;
const axios_1 = __importStar(require("axios"));
const path_1 = __importDefault(require("path"));
const fs_1 = __importDefault(require("fs"));
const errors_1 = require("../errors");
exports.id = 'quilt';
const api = axios_1.default.create({
baseURL: 'https://meta.quiltmc.org/v3/',
});
exports.url = 'https://quiltmc.org/';
async function listLoaders() {
const loaders = await api.get('/versions/loader');
if (loaders.data.length <= 0)
throw new Error('Error while fetching quilt metadata; Loader length is zero');
return loaders.data;
}
/**
* Returns all loader versions.
*/
async function listAllLoaderVersions() {
const loaders = await listLoaders();
return loaders.map((loader) => loader.version);
}
/**
* Returns all loader versions that are available for a given game version.
* This returns the same as listAllLoaderVersions on quilt
*/
async function listLoaderVersions(_gameVersion) {
return listAllLoaderVersions();
}
async function getProfile(gameVersion, loaderVersion) {
try {
const profile = await api.get(`/versions/loader/${gameVersion}/${loaderVersion}/profile/json`);
return profile.data;
}
catch (e) {
if (e instanceof axios_1.AxiosError) {
if (e.response?.status === 404) {
throw new Error(`Version "${gameVersion}" could not be found`);
}
}
throw e;
}
}
/**
* Downloads the latest version json and returns a partial MCLC config
*/
async function getMCLCLaunchConfig(config) {
if (!config.loaderVersion) {
const [loader] = await listLoaders();
config.loaderVersion = loader.version;
}
if (!config.loaderVersion) {
throw new errors_1.InvalidVersionError(config.gameVersion);
}
const profile = await getProfile(config.gameVersion, config.loaderVersion);
const versionPath = path_1.default.join(config.rootPath, 'versions', `quilt-${config.gameVersion}-${config.loaderVersion}`, `quilt-${config.gameVersion}-${config.loaderVersion}.json`);
fs_1.default.mkdirSync(path_1.default.dirname(versionPath), { recursive: true });
fs_1.default.writeFileSync(versionPath, JSON.stringify(profile));
return {
root: config.rootPath,
version: {
number: config.gameVersion,
type: 'release',
custom: `quilt-${config.gameVersion}-${config.loaderVersion}`,
},
};
}
/**
* Returns all game versions a loader supports
*/
async function listSupportedGameVersions() {
return (await api.get('/versions/game')).data;
}
/**
* The loader config for the 'tomate-mods' package
*/
exports.tomateModsModLoader = {
overrideMods: {
P7dR8mSH: 'qvIfYCYJ', // Fabric Api -> QFAPI
'308769': '634179', // Fabric Api -> QFAPI
Ha28R6CL: 'lwVhp9o5', // Fabric Language Kotlin -> QKL
'306612': '720410', // Fabric Language Kotlin -> QKL
},
modrinthCategories: ['quilt', 'fabric'],
curseforgeCategory: '5',
};
//# sourceMappingURL=quilt.js.map