Skip to content

PrismarineJS/prismarine-chat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b526b31 · Jan 26, 2025

History

92 Commits
Jan 26, 2025
Aug 20, 2021
Apr 28, 2024
Jul 14, 2020
Jul 14, 2020
Oct 25, 2020
Jan 26, 2025
Jul 14, 2020
Sep 30, 2022
Feb 24, 2024
Nov 29, 2022
Feb 24, 2024
Jun 10, 2024
Jan 26, 2025

Repository files navigation

prismarine-chat

NPM version Build Status Discord Gitter Irc Try it on gitpod

A parser for a minecraft chat message

Usage

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

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

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

processNbtMessage

This method is internally called by fromNotch.

mcpc 1.20.3 uses NBT instead of JSON in some places to store chat, so the schema is a bit different. processNbtMessage normalizes the JS object obtained from nbt derealization to the old JSON schema, so it can be used to instantiate a ChatMessage.