refactor: fix neoforge version naming and remove duplicate/unused code
This commit is contained in:
parent
1d9f4b9bc6
commit
34d690d6a6
3 changed files with 38 additions and 53 deletions
|
|
@ -1,6 +1,9 @@
|
|||
import path from "path";
|
||||
import { readJson } from "../utils/fs";
|
||||
import { Version } from "../utils/types";
|
||||
import { getVersionId, ModloaderConfig } from "./modloaders";
|
||||
|
||||
export function mergeManifests(base: Version, layer: Version) {
|
||||
function mergeManifests(base: Version, layer: Version) {
|
||||
// Copy needed properties to base
|
||||
// Those properties should be enough for forge at least
|
||||
const result = { ...base }
|
||||
|
|
@ -61,3 +64,21 @@ export function mergeManifests(base: Version, layer: Version) {
|
|||
|
||||
return result;
|
||||
}
|
||||
|
||||
export async function prepareManifest(config: ModloaderConfig, versionManifest: Version) {
|
||||
const versionId = getVersionId(config)
|
||||
const moddedVersionManifest = await readJson<Version>(
|
||||
path.join(
|
||||
config.paths.versions,
|
||||
versionId,
|
||||
`${versionId}.json`,
|
||||
),
|
||||
);
|
||||
|
||||
versionManifest = mergeManifests(
|
||||
versionManifest!,
|
||||
moddedVersionManifest,
|
||||
);
|
||||
|
||||
return versionManifest
|
||||
}
|
||||
|
|
@ -24,6 +24,10 @@ export interface ModloaderConfig extends Config {
|
|||
modloader: Modloader
|
||||
}
|
||||
|
||||
export function getVersionId(config: ModloaderConfig) {
|
||||
return `${config.version}-${config.modloader.name}-${config.modloader.version}`
|
||||
}
|
||||
|
||||
async function downloadJar(
|
||||
config: ModloaderConfig,
|
||||
type: "universal" | "installer",
|
||||
|
|
@ -81,7 +85,6 @@ async function downloadJar(
|
|||
throw new InstallError("An error occured while downloadng natives", "natives", config, logger, { cause: error })
|
||||
}
|
||||
|
||||
console.log(filePath)
|
||||
return filePath;
|
||||
}
|
||||
|
||||
|
|
@ -190,6 +193,9 @@ export async function installForge(
|
|||
);
|
||||
}
|
||||
|
||||
const versionId = getVersionId(config)
|
||||
console.log(versionId)
|
||||
|
||||
if (isModernForge(config.version)) {
|
||||
// Modern forge (version >= 1.12.2)
|
||||
const fakeLauncherProfiles = await readJson<LauncherProfiles>(
|
||||
|
|
@ -201,9 +207,10 @@ export async function installForge(
|
|||
|
||||
await fs.cp(
|
||||
path.join(fakeLauncher, "versions", originalVersionId),
|
||||
path.join(config.paths.versions, originalVersionId),
|
||||
path.join(config.paths.versions, versionId),
|
||||
{ recursive: true },
|
||||
);
|
||||
if (config.modloader.name === "neoforge") await fs.rename(path.join(config.paths.versions, versionId, `${originalVersionId}.json`), path.join(config.paths.versions, versionId, `${versionId}.json`))
|
||||
} else {
|
||||
// Older versions (from 1.5.2 to 1.12.2, even older versions are not supported)
|
||||
const universalPath = path.join(fakeLauncher, `forge-${config.version}-${config.modloader.version}-universal.jar`)
|
||||
|
|
@ -218,8 +225,8 @@ export async function installForge(
|
|||
|
||||
// Copy version json
|
||||
const zip = new AdmZip(universalPath)
|
||||
zip.extractEntryTo("version.json", path.join(config.paths.versions, `${config.version}-forge-${config.modloader.version}`))
|
||||
await fs.rename(path.join(config.paths.versions, `${config.version}-forge-${config.modloader.version}`, "version.json"), path.join(config.paths.versions, `${config.version}-forge-${config.modloader.version}`, `${config.version}-forge-${config.modloader.version}.json`))
|
||||
zip.extractEntryTo("version.json", path.join(config.paths.versions, versionId))
|
||||
await fs.cp(path.join(config.paths.versions, versionId, "version.json"), path.join(config.paths.versions, versionId, `${versionId}.json`))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -303,7 +310,7 @@ export async function installFabric(config: ModloaderConfig, logger: logger) {
|
|||
fakeLauncherProfiles.profiles[Object.keys(fakeLauncherProfiles.profiles)[0]]
|
||||
.lastVersionId;
|
||||
|
||||
const versionId = `${config.version}-fabric-${config.modloader.version}`
|
||||
const versionId = getVersionId(config)
|
||||
await ensureDir(path.join(config.paths.versions, versionId))
|
||||
console.log(path.join(config.paths.versions, originalVersionId, `${originalVersionId}.json`), path.join(config.paths.versions, versionId, `${versionId}.json`))
|
||||
await fs.cp(path.join(fakeLauncher, "versions", originalVersionId, `${originalVersionId}.json`), path.join(config.paths.versions, versionId, `${versionId}.json`))
|
||||
|
|
|
|||
|
|
@ -6,8 +6,7 @@ import { ConfigError, InstallError, LaunchError } from "../utils/errors";
|
|||
import { checkJava } from "./java";
|
||||
import { fixVersionWithDoubleName, installFabric, installForge, ModloaderConfig } from "../core/modloaders";
|
||||
import { ChildProcessWithoutNullStreams } from "node:child_process";
|
||||
import { readJson } from "../utils/fs";
|
||||
import { mergeManifests } from "../core/mergeManifests";
|
||||
import { prepareManifest } from "../core/mergeManifests";
|
||||
|
||||
export interface BaseConfig {
|
||||
version: string;
|
||||
|
|
@ -201,53 +200,11 @@ export class Instance extends EventEmitter<InstanceEvents> {
|
|||
if (this.config.modloader) {
|
||||
try {
|
||||
switch (this.config.modloader.name) {
|
||||
case "forge": {
|
||||
const forgeVersionManifest = await readJson<Version>(
|
||||
path.join(
|
||||
this.config.paths.versions,
|
||||
`${this.config.version}-${this.config.modloader.name}-${this.config.modloader.version}`,
|
||||
`${this.config.version}-${this.config.modloader.name}-${this.config.modloader.version}.json`,
|
||||
),
|
||||
);
|
||||
|
||||
this.versionManifest = mergeManifests(
|
||||
this.versionManifest!,
|
||||
forgeVersionManifest,
|
||||
);
|
||||
break;
|
||||
}
|
||||
case "forge":
|
||||
case "neoforge":
|
||||
{
|
||||
const neoForgeVersionManifest = await readJson<Version>(
|
||||
path.join(
|
||||
this.config.paths.versions,
|
||||
`${this.config.modloader.name}-${this.config.modloader.version}`,
|
||||
`${this.config.modloader.name}-${this.config.modloader.version}.json`,
|
||||
),
|
||||
);
|
||||
|
||||
this.versionManifest = mergeManifests(
|
||||
this.versionManifest!,
|
||||
neoForgeVersionManifest,
|
||||
);
|
||||
}
|
||||
break;
|
||||
case "fabric":
|
||||
{
|
||||
const fabricVersionManifest = await readJson<Version>(
|
||||
path.join(
|
||||
this.config.paths.versions,
|
||||
`${this.config.version}-${this.config.modloader.name}-${this.config.modloader.version}`,
|
||||
`${this.config.version}-${this.config.modloader.name}-${this.config.modloader.version}.json`,
|
||||
),
|
||||
);
|
||||
|
||||
this.versionManifest = mergeManifests(
|
||||
this.versionManifest!,
|
||||
fabricVersionManifest,
|
||||
);
|
||||
break;
|
||||
}
|
||||
this.versionManifest = await prepareManifest(this.config as ModloaderConfig, this.versionManifest)
|
||||
break
|
||||
default:
|
||||
throw new Error("Unknown modloader");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue