diff --git a/server/multiplayer/ServerMultiplayerRoomMixin.js b/server/multiplayer/ServerMultiplayerRoomMixin.js index e73596134..e5eea2e43 100644 --- a/server/multiplayer/ServerMultiplayerRoomMixin.js +++ b/server/multiplayer/ServerMultiplayerRoomMixin.js @@ -236,6 +236,8 @@ const ServerMultiplayerRoomMixin = (RoomClass) => class extends RoomClass { this.kickedUserList.delete(userId); } }); + + this.votekickList = this.votekickList.filter(votekick => now - votekick.createdAt <= BAN_DURATION); } closeConnection ({ userId, username }) { @@ -427,6 +429,7 @@ const ServerMultiplayerRoomMixin = (RoomClass) => class extends RoomClass { if (votekick.check()) { this.emitMessage({ type: 'successful-vk', targetUsername, targetId }); this.kickedUserList.set(targetId, Date.now()); + this.votekickList = this.votekickList.filter(vk => !vk.exists(targetId)); } else { this.kickedUserList.set(targetId, Date.now()); this.emitMessage({ type: 'initiated-vk', targetUsername, threshold }); @@ -455,6 +458,7 @@ const ServerMultiplayerRoomMixin = (RoomClass) => class extends RoomClass { if (thisVotekick.check()) { this.emitMessage({ type: 'successful-vk', targetUsername, targetId }); this.kickedUserList.set(targetId, Date.now()); + this.votekickList = this.votekickList.filter(vk => !vk.exists(targetId)); setTimeout(() => this.closeConnection({ userId: targetId, username: targetUsername }), 1000); diff --git a/server/multiplayer/VoteKick.js b/server/multiplayer/VoteKick.js index 5c1f90d77..5376a775e 100644 --- a/server/multiplayer/VoteKick.js +++ b/server/multiplayer/VoteKick.js @@ -3,6 +3,7 @@ export default class Votekick { this.targetId = targetId; this.voted = Array.isArray(voted) ? voted : []; this.threshold = threshold; + this.createdAt = Date.now(); } exists (givenId) {