114 lines
2.3 KiB
TypeScript
114 lines
2.3 KiB
TypeScript
class ChatMessagePart {
|
|
private internal: any = {}
|
|
|
|
get text() {
|
|
return this.internal.text
|
|
}
|
|
set text(text: string) {
|
|
this.internal.text = text
|
|
}
|
|
|
|
click(action: string, value: string) {
|
|
this.internal.clickEvent = { action, value }
|
|
}
|
|
|
|
hover(action: string, value: string) {
|
|
this.internal.hoverEvent = { action, value }
|
|
}
|
|
|
|
convert() {
|
|
return this.internal
|
|
}
|
|
}
|
|
|
|
class Tellraw {
|
|
static duplicateChar = '§卐'
|
|
static create() {
|
|
return new Tellraw().then(Tellraw.duplicateChar)
|
|
}
|
|
|
|
private cache: string = '';
|
|
private parts = [new ChatMessagePart()];
|
|
|
|
then(part: ChatMessagePart | string) {
|
|
if (typeof part === "string") {
|
|
var newPart = new ChatMessagePart()
|
|
newPart.text = part
|
|
this.then(newPart)
|
|
return this
|
|
}
|
|
var last = this.latest()
|
|
if (!last.text) {
|
|
last.text = part.text
|
|
} else {
|
|
this.parts.push(part)
|
|
}
|
|
this.cache = null
|
|
}
|
|
|
|
text(text: string) {
|
|
this.latest().text = text
|
|
return this
|
|
}
|
|
|
|
tip(texts: string) {
|
|
return this.hover(texts)
|
|
}
|
|
|
|
hover(texts: string) {
|
|
this.latest().hover("show_text", texts)
|
|
return this
|
|
}
|
|
|
|
item(item: string) {
|
|
this.latest().hover("show_item", item)
|
|
return this
|
|
}
|
|
|
|
command(command: string) {
|
|
this.latest().click("run_command", command)
|
|
return this
|
|
}
|
|
|
|
suggest(url: string) {
|
|
this.latest().click("suggest_command", url)
|
|
return this
|
|
}
|
|
|
|
file(path: string) {
|
|
this.latest().click("open_file", path)
|
|
return this
|
|
}
|
|
|
|
link(url: string) {
|
|
this.latest().click("open_url", url)
|
|
return this
|
|
}
|
|
|
|
latest() {
|
|
return this.parts[this.parts.length - 1]
|
|
}
|
|
|
|
json() {
|
|
if (!this.cache) {
|
|
var temp = []
|
|
this.parts.forEach(t => {
|
|
temp.push(t.convert())
|
|
})
|
|
this.cache = JSON.stringify(temp)
|
|
console.trace(this.cache)
|
|
}
|
|
return this.cache
|
|
}
|
|
|
|
string() {
|
|
var temp = ''
|
|
this.parts.forEach(t => {
|
|
temp += t.text
|
|
})
|
|
return temp
|
|
}
|
|
}
|
|
|
|
export default Tellraw
|