silver-mc-java-core
Version:
A library starting minecraft game NW.js and Electron.js
64 lines (51 loc) • 2.14 kB
text/typescript
/**
* @author Luuxis
* @license CC-BY-NC 4.0 - https://creativecommons.org/licenses/by-nc/4.0/
*/
import path from 'path';
import fs from 'fs';
import os from 'os';
export default class MinecraftLoader {
options: any;
constructor(options: any) {
this.options = options;
}
async ProcessJson(version: any) {
let archMapping: any = { arm64: "aarch64", arm: 'aarch' }[os.arch()]
let pathLWJGL = path.join(__dirname, `../../assets/LWJGL/${archMapping}`);
let versionJinput = version.libraries.find((lib: any) => {
if (lib.name.startsWith("net.java.jinput:jinput-platform:")) {
return true;
} else if (lib.name.startsWith("net.java.jinput:jinput:")) {
return true;
}
})?.name.split(":").pop();
let versionLWJGL = version.libraries.find((lib: any) => {
if (lib.name.startsWith("org.lwjgl:lwjgl:")) {
return true;
} else if (lib.name.startsWith("org.lwjgl.lwjgl:lwjgl:")) {
return true;
}
})?.name.split(":").pop();
if (versionJinput) {
version.libraries = version.libraries.filter((lib: any) => {
if (lib.name.includes("jinput")) return false
return true;
});
}
if (versionLWJGL) {
version.libraries = version.libraries.filter((lib: any) => {
if (lib.name.includes("lwjgl")) return false;
return true;
});
if (versionLWJGL.includes('2.9')) {
let versionLWJGLNatives = JSON.parse(fs.readFileSync(path.join(pathLWJGL, '2.9.4.json'), 'utf-8'));
version.libraries.push(...versionLWJGLNatives.libraries);
} else {
let versionLWJGLNatives = JSON.parse(fs.readFileSync(path.join(pathLWJGL, `${versionLWJGL}.json`), 'utf-8'));
version.libraries.push(...versionLWJGLNatives.libraries);
}
}
return version;
}
}