Fix export when default mod pack is used

This commit is contained in:
Hornwitser committed 2023-02-02 01:07:08 +01:00
1 parent 8db1b48691
commit 91af66e2db
2 files changed
+14 -9

No files matched your search

+14 -8
View File
@@ -191,6 +191,12 @@ class Instance extends libLink.Link {
}
});
/**
* Mod pack currently running on this instance
* @type {module:lib/data.ModPack>}
*/
this.activeModPack = undefined;
/**
* Per player statistics recorded by this instance.
* @type {Map<string, module:lib/PlayerStats>}
@@ -593,13 +599,13 @@ rcon.print(game.table_to_json(players))`.replace(/\r?\n/g, " ");
*/
async syncMods() {
const modPackId = this.config.get("factorio.mod_pack");
let modPack;
let response;
if (modPackId === null) {
modPack = new libData.ModPack();
response = await libLink.messages.getDefaultModPack.send(this);
} else {
const response = await libLink.messages.getModPack.send(this, { id: modPackId });
modPack = new libData.ModPack(response.mod_pack);
response = await libLink.messages.getModPack.send(this, { id: modPackId });
}
this.activeModPack = new libData.ModPack(response.mod_pack);
// TODO validate factorioVersion
@@ -625,7 +631,7 @@ rcon.print(game.table_to_json(players))`.replace(/\r?\n/g, " ");
// Add mods from mod the pack
const modsDir = this._slave.config.get("slave.mods_directory");
for (let mod of modPack.mods.values()) {
for (let mod of this.activeModPack.mods.values()) {
const modFile = `${mod.name}_${mod.version}.zip`;
const target = path.join(modsDir, modFile);
const link = this.path("mods", modFile);
@@ -643,11 +649,11 @@ rcon.print(game.table_to_json(players))`.replace(/\r?\n/g, " ");
// Write mod-list.json
await fs.outputFile(this.path("mods", "mod-list.json"), JSON.stringify({
mods: [{ name: "base" }, ...modPack.mods.values()].map(m => ({ name: m.name, enabled: true })),
mods: [{ name: "base" }, ...this.activeModPack.mods.values()].map(m => ({ name: m.name, enabled: true })),
}, null, 2));
// Write mod-settings.dat
await fs.outputFile(this.path("mods", "mod-settings.dat"), modPack.toModSettingsDat());
await fs.outputFile(this.path("mods", "mod-settings.dat"), this.activeModPack.toModSettingsDat());
}
/**
@@ -1064,7 +1070,7 @@ rcon.print(game.table_to_json(players))`.replace(/\r?\n/g, " ");
let content = await zip.generateAsync({ type: "nodebuffer" });
let url = new URL(this._slave.config.get("slave.master_url"));
url.pathname += "api/upload-export";
url.searchParams.set("mod_pack_id", this.config.get("factorio.mod_pack"));
url.searchParams.set("mod_pack_id", this.activeModPack.id);
let response = await phin({
url, method: "PUT",
data: content,
-1
View File
@@ -265,7 +265,6 @@ describe("Integration of Clusterio", function() {
);
await execCtl(`instance config set-prop test factorio.settings visibility "'${value}'"`);
await execCtl("instance config set-prop test factorio.settings require_user_verification false");
await execCtl("instance config set test factorio.mod_pack 12");
});
});