Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PrismarineJS
GitHub Repository: PrismarineJS/mineflayer
Path: blob/master/lib/plugins/team.js
1467 views
1
module.exports = inject
2
3
function inject (bot) {
4
const Team = require('../team')(bot.registry)
5
const teams = {}
6
7
function teamHandler (packet) {
8
const { team: teamName, mode } = packet
9
let team = teams[teamName]
10
if (mode === 0) {
11
team = new Team(
12
packet.team,
13
packet.name,
14
packet.friendlyFire,
15
packet.nameTagVisibility,
16
packet.collisionRule,
17
packet.formatting,
18
packet.prefix,
19
packet.suffix
20
)
21
if (Array.isArray(packet.players)) {
22
packet.players.forEach(player => {
23
team.add(player)
24
bot.teamMap[player] = team
25
})
26
}
27
teams[teamName] = team
28
bot.emit('teamCreated', teams[teamName])
29
}
30
if (team !== undefined) {
31
if (mode === 1) {
32
team.members.forEach(member => {
33
delete bot.teamMap[member]
34
})
35
delete teams[teamName]
36
bot.emit('teamRemoved', teams[teamName])
37
}
38
if (mode === 2) {
39
team.update(
40
packet.name,
41
packet.friendlyFire,
42
packet.nameTagVisibility,
43
packet.collisionRule,
44
packet.formatting,
45
packet.prefix,
46
packet.suffix
47
)
48
bot.emit('teamUpdated', teams[teamName])
49
}
50
if (Array.isArray(packet.players)) {
51
if (mode === 3) {
52
packet.players.forEach((player) => {
53
team.add(player)
54
bot.teamMap[player] = team
55
})
56
bot.emit('teamMemberAdded', teams[teamName])
57
}
58
if (mode === 4) {
59
packet.players.forEach((player) => {
60
team.remove(player)
61
delete bot.teamMap[player]
62
})
63
bot.emit('teamMemberRemoved', teams[teamName])
64
}
65
}
66
}
67
}
68
69
if (bot.supportFeature('teamUsesScoreboard')) {
70
bot._client.on('scoreboard_team', teamHandler)
71
} else {
72
bot._client.on('teams', teamHandler)
73
}
74
75
bot.teams = teams
76
bot.teamMap = {}
77
}
78
79