LookAtMySuitBot/js/node_modules/mineflayer/lib/plugins/team.js

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 = {}
}