diff --git a/packages/lib/link/messages.js b/packages/lib/link/messages.js index b09e3134..5aa971e8 100644 --- a/packages/lib/link/messages.js +++ b/packages/lib/link/messages.js @@ -1152,6 +1152,7 @@ messages.instanceStatusChanged = new Event({ "status": { enum: [ "stopped", "starting", "running", "stopping", "creating_save", "exporting_data", ]}, + "game_port": { type: ["null", "integer"] }, }, }); diff --git a/packages/master/src/ControlConnection.js b/packages/master/src/ControlConnection.js index dfc07981..d00a1e2d 100644 --- a/packages/master/src/ControlConnection.js +++ b/packages/master/src/ControlConnection.js @@ -170,7 +170,7 @@ class ControlConnection extends BaseConnection { id, name: instance.config.get("instance.name"), assigned_slave: instance.config.get("instance.assigned_slave"), - game_port: instance.config.get("factorio.game_port"), + game_port: instance.game_port, status: instance.status, }; } @@ -182,7 +182,7 @@ class ControlConnection extends BaseConnection { id: instance.config.get("instance.id"), name: instance.config.get("instance.name"), assigned_slave: instance.config.get("instance.assigned_slave"), - game_port: instance.config.get("factorio.game_port"), + game_port: instance.game_port, status: instance.status, }); } @@ -202,7 +202,7 @@ class ControlConnection extends BaseConnection { id: instance.config.get("instance.id"), name: instance.config.get("instance.name"), assigned_slave: instance.config.get("instance.assigned_slave"), - game_port: instance.config.get("factorio.game_port"), + game_port: instance.game_port, status: instance.status, }); } diff --git a/packages/master/src/SlaveConnection.js b/packages/master/src/SlaveConnection.js index dde922d1..a8e1e456 100644 --- a/packages/master/src/SlaveConnection.js +++ b/packages/master/src/SlaveConnection.js @@ -88,6 +88,7 @@ class SlaveConnection extends BaseConnection { let prev = instance.status; instance.status = message.data.status; + instance.game_port = message.data.game_port; logger.verbose(`Instance ${instance.config.get("instance.name")} State: ${instance.status}`); this._master.instanceUpdated(instance); await libPlugin.invokeHook(this._master.plugins, "onInstanceStatusChanged", instance, prev); diff --git a/packages/slave/slave.js b/packages/slave/slave.js index 222c6687..99c9988c 100755 --- a/packages/slave/slave.js +++ b/packages/slave/slave.js @@ -260,7 +260,9 @@ class Instance extends libLink.Link { notifyStatus(status) { this._status = status; libLink.messages.instanceStatusChanged.send(this, { - instance_id: this.id, status, + instance_id: this.id, + status, + game_port: this.server ? this.server.gamePort : this.config.get("factorio.game_port") || null, }); } @@ -1297,6 +1299,7 @@ class Slave extends libLink.Link { libLink.messages.instanceStatusChanged.send(this, { instance_id, status: instanceConnection ? instanceConnection.status : "stopped", + game_port: null, }); // save a copy of the instance config