119 lines
4.4 KiB
Markdown
119 lines
4.4 KiB
Markdown
# prismarine-chat
|
|
[![NPM version](https://img.shields.io/npm/v/prismarine-chat.svg)](http://npmjs.com/package/prismarine-chat)
|
|
[![Build Status](https://github.com/PrismarineJS/prismarine-chat/workflows/CI/badge.svg)](https://github.com/PrismarineJS/prismarine-chat/actions?query=workflow%3A%22CI%22)
|
|
[![Discord](https://img.shields.io/badge/chat-on%20discord-brightgreen.svg)](https://discord.gg/GsEFRM8)
|
|
[![Gitter](https://img.shields.io/badge/chat-on%20gitter-brightgreen.svg)](https://gitter.im/PrismarineJS/general)
|
|
[![Irc](https://img.shields.io/badge/chat-on%20irc-brightgreen.svg)](https://irc.gitter.im/)
|
|
[![Try it on gitpod](https://img.shields.io/badge/try-on%20gitpod-brightgreen.svg)](https://gitpod.io/#https://github.com/PrismarineJS/prismarine-chat)
|
|
|
|
A parser for a minecraft chat message
|
|
|
|
|
|
## Usage
|
|
|
|
```js
|
|
const registry = require('prismarine-registry')('1.16')
|
|
const ChatMessage = require('prismarine-chat')(registry)
|
|
|
|
const msg = new ChatMessage({"text":"Example chat mesasge"})
|
|
console.log(msg.toString()) // Example chat message
|
|
|
|
```
|
|
## API
|
|
|
|
### ChatMessage(message,[displayWarning])
|
|
* `message` - Can be either text or a minecraft chat JSON object
|
|
* `displayWarning` - Display warnings if true, default to false
|
|
|
|
#### chat.toString([lang])
|
|
|
|
Flattens the message in to plain-text
|
|
* `lang` - (optional) - Set a custom lang (defaults to registry.language)
|
|
|
|
#### chat.toMotd([lang], parent)
|
|
|
|
Converts to motd format
|
|
* `lang` - (optional) - Set a custom lang (defaults to registry.language)
|
|
* `parent` - Set a custom lang (defaults to mcData.language)
|
|
|
|
#### chat.getText(idx, [lang])
|
|
|
|
Returns a text part from the message
|
|
* `idx` - Index of the part
|
|
* `lang` - (optional) - Set a custom lang (defaults to registry.language)
|
|
|
|
#### chat.toAnsi([lang], [codes])
|
|
|
|
Converts to ansi format
|
|
* `lang` - (optional) - Set a custom lang (defaults to registry.language)
|
|
* `codes` - (optional) - Specify which ANSI formatting codes should be used for each Minecraft color code
|
|
|
|
#### chat.toHTML([lang], [codes], [allowedFormats])
|
|
Converts to escaped HTML
|
|
* `lang` - (optional) - Set a custom lang (defaults to registry.language)
|
|
* `codes` - (optional) - Specify which CSS style props should be used for each Minecraft color code
|
|
* `allowedFormats` - The set of allowed formats. Default is ['color', 'bold', 'strikethrough', 'underlined', 'italic']
|
|
|
|
#### chat.length()
|
|
|
|
Returns the count of text extras and child ChatMessages
|
|
Does not count recursively in to the children
|
|
|
|
#### chat.append(ChatMessage)
|
|
|
|
Appends another ChatMessage or a string
|
|
|
|
#### chat.clone()
|
|
|
|
Returns a clone of the ChatMessage
|
|
|
|
```js
|
|
const registry = require('prismarine-registry')('1.16')
|
|
const { MessageBuilder } = require('prismarine-chat')(registry)
|
|
|
|
const msg = new MessageBuilder().setText('Example chat mesasge')
|
|
console.log(JSON.stringify(msg)) // The string as a message component
|
|
|
|
```
|
|
|
|
#### static ChatMessage.fromNotch(msg)
|
|
|
|
Returns a prismarine-chat representation of the message recieved from the 'chat' packet, example shown [here](examples/minecraftprotocol_fromnotch/fromnotch.js)
|
|
|
|
#### static ChatMessage.fromNetwork(messageType, messageParameters)
|
|
|
|
(1.19+) Loads a chat message sent by server that needs to be formatted on client side.
|
|
|
|
### MessageBuilder()
|
|
|
|
#### setBold (val: boolean) : this
|
|
#### setItalic (val: boolean) : this
|
|
#### setUnderlined (val: boolean) : this
|
|
#### setStrikethrough (val: boolean) : this
|
|
#### setObfuscated (val: boolean) : this
|
|
#### setColor (val: string) : this
|
|
#### setText (val: string) : this
|
|
|
|
> check code for examples (and explanations) from here on
|
|
|
|
#### setFont (val: string) : this
|
|
#### setTranslate (val: string) : this
|
|
#### setInsertion (val: string) : this
|
|
#### setKeybind (val: string) : this
|
|
#### setScore (name: string, objective: string) : this
|
|
#### setClickEvent (action: string, value: object) : this
|
|
#### setHoverEvent (action: string, data: object, type?: 'contents'|'value') : this
|
|
#### addExtra (...val: MessageBuilder | string) : this
|
|
#### addWith (...val: MessageBuilder | string) : this
|
|
#### resetFormatting () : void
|
|
sets every one of the formatting options to false and sets text to `reset` type
|
|
|
|
#### toJSON () : object
|
|
`builder.toJSON()` is the same thing as `JSON.stringify(builder)`
|
|
|
|
#### toString () : string
|
|
runs `JSON.stringify()` on `this`
|
|
|
|
#### static MessageBuilder.fromString(str, {colorSeparator = '&'}) : MessageBuilder
|
|
convert string with color codes like `&4Hello&cWorld` to a `MessageBuilder` object
|