LookAtMySuitBot/js/node_modules/mineflayer/lib/scoreboard.js

66 lines
1.2 KiB
JavaScript

const sortItems = (a, b) => {
if (a.value > b.value) return -1
if (a.value < b.value) return 1
return 1
}
module.exports = (bot) => {
const ChatMessage = require('prismarine-chat')(bot.registry)
class ScoreBoard {
constructor (packet) {
this.name = packet.name
this.setTitle(packet.displayText)
this.itemsMap = {}
}
setTitle (title) {
try {
this.title = JSON.parse(title).text // version>1.13
} catch {
this.title = title
}
}
add (name, value) {
this.itemsMap[name] = { name, value }
this.itemsMap[name] = {
name,
value,
get displayName () {
if (name in bot.teamMap) {
return bot.teamMap[name].displayName(name)
}
return new ChatMessage(name)
}
}
return this.itemsMap[name]
}
remove (name) {
const removed = this.itemsMap[name]
delete this.itemsMap[name]
return removed
}
get items () {
return Object.values(this.itemsMap).sort(sortItems)
}
}
ScoreBoard.positions = {
get list () {
return this[0]
},
get sidebar () {
return this[1]
},
get belowName () {
return this[2]
}
}
return ScoreBoard
}