Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
Path: blob/master/lib/team.js
Views: 789
function colorString (color) {1const formatting = [2'black',3'dark_blue',4'dark_green',5'dark_aqua',6'dark_red',7'dark_purple',8'gold',9'gray',10'dark_gray',11'blue',12'green',13'aqua',14'red',15'light_purple',16'yellow',17'white',18'obfuscated',19'bold',20'strikethrough',21'underlined',22'italic',23'reset'24]25if (color === undefined || color > 21 || color === -1) return 'reset'26return formatting[color]27}2829function loader (registry) {30const ChatMessage = require('prismarine-chat')(registry)31const MessageBuilder = ChatMessage.MessageBuilder32return class Team {33constructor (team, name, friendlyFire, nameTagVisibility, collisionRule, formatting, prefix, suffix) {34this.team = team35this.update(name, friendlyFire, nameTagVisibility, collisionRule, formatting, prefix, suffix)36this.membersMap = {}37}3839parseMessage (value) {40if (registry.supportFeature('teamUsesChatComponents')) { // 1.13+41return ChatMessage.fromNotch(value)42} else {43const result = MessageBuilder.fromString(value, { colorSeparator: '§' })44if (result === null) {45return new ChatMessage('')46}47return new ChatMessage(result.toJSON())48}49}5051add (name) {52this.membersMap[name] = ''53return this.membersMap[name]54}5556remove (name) {57const removed = this.membersMap[name]58delete this.membersMap[name]59return removed60}6162update (name, friendlyFire, nameTagVisibility, collisionRule, formatting, prefix, suffix) {63this.name = this.parseMessage(name)64this.friendlyFire = friendlyFire65this.nameTagVisibility = nameTagVisibility66this.collisionRule = collisionRule67this.color = colorString(formatting)68this.prefix = this.parseMessage(prefix)69this.suffix = this.parseMessage(suffix)70}7172// Return a chat component with prefix + color + name + suffix73displayName (member) {74const name = this.prefix.clone()75name.append(new ChatMessage({ text: member, color: this.color }), this.suffix)76return name77}7879get members () {80return Object.keys(this.membersMap)81}82}83}8485module.exports = loader868788