diff --git a/src/network/Client.ts b/src/network/Client.ts index 6f290e8..f22e05c 100644 --- a/src/network/Client.ts +++ b/src/network/Client.ts @@ -29,16 +29,21 @@ export abstract class Client extends EventEmitter { this.metadata.name = data.newname; } - let idx = this.players.indexOf(data.oldname); - if (idx < 0) { - // Weird - console.warn( - `Someone (${data.oldname}) changed name but wasn't on the player list` - ); - this.players.push(data.newname); - break; + // Only mutate player list if we have one + // This is because rename messages can be received during the initial + // handshake, to signal a forced name change before joining. + if (this.players) { + let idx = this.players.indexOf(data.oldname); + if (idx < 0) { + // Weird + console.warn( + `Someone (${data.oldname}) changed name but wasn't on the player list` + ); + this.players.push(data.newname); + break; + } + Vue.set(this.players, idx, data.newname); } - Vue.set(this.players, idx, data.newname); this.emit("rename", data.oldname, data.newname); break; // A new player joined the room (this includes us)