78 lines
1.9 KiB
JavaScript
78 lines
1.9 KiB
JavaScript
|
module.exports = inject
|
||
|
|
||
|
function inject (bot) {
|
||
|
const Team = require('../team')(bot.registry)
|
||
|
const teams = {}
|
||
|
|
||
|
function teamHandler (packet) {
|
||
|
const { team: teamName, mode } = packet
|
||
|
let team = teams[teamName]
|
||
|
if (mode === 0) {
|
||
|
team = new Team(
|
||
|
packet.team,
|
||
|
packet.name,
|
||
|
packet.friendlyFire,
|
||
|
packet.nameTagVisibility,
|
||
|
packet.collisionRule,
|
||
|
packet.formatting,
|
||
|
packet.prefix,
|
||
|
packet.suffix
|
||
|
)
|
||
|
if (Array.isArray(packet.players)) {
|
||
|
packet.players.forEach(player => {
|
||
|
team.add(player)
|
||
|
bot.teamMap[player] = team
|
||
|
})
|
||
|
}
|
||
|
teams[teamName] = team
|
||
|
bot.emit('teamCreated', teams[teamName])
|
||
|
}
|
||
|
if (team !== undefined) {
|
||
|
if (mode === 1) {
|
||
|
team.members.forEach(member => {
|
||
|
delete bot.teamMap[member]
|
||
|
})
|
||
|
delete teams[teamName]
|
||
|
bot.emit('teamRemoved', teams[teamName])
|
||
|
}
|
||
|
if (mode === 2) {
|
||
|
team.update(
|
||
|
packet.name,
|
||
|
packet.friendlyFire,
|
||
|
packet.nameTagVisibility,
|
||
|
packet.collisionRule,
|
||
|
packet.formatting,
|
||
|
packet.prefix,
|
||
|
packet.suffix
|
||
|
)
|
||
|
bot.emit('teamUpdated', teams[teamName])
|
||
|
}
|
||
|
if (Array.isArray(packet.players)) {
|
||
|
if (mode === 3) {
|
||
|
packet.players.forEach((player) => {
|
||
|
team.add(player)
|
||
|
bot.teamMap[player] = team
|
||
|
})
|
||
|
bot.emit('teamMemberAdded', teams[teamName])
|
||
|
}
|
||
|
if (mode === 4) {
|
||
|
packet.players.forEach((player) => {
|
||
|
team.remove(player)
|
||
|
delete bot.teamMap[player]
|
||
|
})
|
||
|
bot.emit('teamMemberRemoved', teams[teamName])
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (bot.supportFeature('teamUsesScoreboard')) {
|
||
|
bot._client.on('scoreboard_team', teamHandler)
|
||
|
} else {
|
||
|
bot._client.on('teams', teamHandler)
|
||
|
}
|
||
|
|
||
|
bot.teams = teams
|
||
|
bot.teamMap = {}
|
||
|
}
|