UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

91 lines (88 loc) 10.8 kB
import Identifiers from '../Identifiers.es.js'; import { NetworkUtil } from '../NetworkUtil.es.js'; import TextType from '../type/TextType.es.js'; import DataPacket from './DataPacket.es.js'; class TextPacket extends DataPacket { static NetID = Identifiers.TextPacket; /** * The type of the chat message. * Eg. Chat, Announcement, Json, etc. */ type; needsTranslation; sourceName; /** * The actual chat message. */ message; parameters = []; xuid; platformChatId; filtered; decodePayload() { this.type = this.readByte(); this.needsTranslation = this.readBoolean(); switch (this.type) { case TextType.Chat: case TextType.Whisper: case TextType.Announcement: this.sourceName = NetworkUtil.readString(this); this.message = NetworkUtil.readString(this); break; case TextType.Raw: case TextType.Tip: case TextType.System: case TextType.JsonWhisper: case TextType.Json: this.message = NetworkUtil.readString(this); break; case TextType.Translation: case TextType.Popup: case TextType.JukeboxPopup: this.message = NetworkUtil.readString(this); const count = this.readUnsignedVarInt(); for (let i = 0; i < count; i++) { this.parameters.push(NetworkUtil.readString(this)); } break; default: throw new Error("Invalid TextType"); } this.xuid = NetworkUtil.readString(this); this.platformChatId = NetworkUtil.readString(this); this.filtered = NetworkUtil.readString(this); } encodePayload() { this.writeByte(this.type); this.writeBoolean(this.needsTranslation); switch (this.type) { case TextType.Chat: case TextType.Whisper: case TextType.Announcement: NetworkUtil.writeString(this, this.sourceName); case TextType.Raw: case TextType.Tip: case TextType.System: case TextType.JsonWhisper: case TextType.Json: NetworkUtil.writeString(this, this.message); break; case TextType.Translation: case TextType.Popup: case TextType.JukeboxPopup: NetworkUtil.writeString(this, this.message); this.writeUnsignedVarInt(this.parameters.length); for (const parameter of this.parameters) { NetworkUtil.writeString(this, parameter); } break; default: throw new Error("Invalid TextType"); } NetworkUtil.writeString(this, this.xuid); NetworkUtil.writeString(this, this.platformChatId); NetworkUtil.writeString(this, this.filtered); } } export { TextPacket as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dFBhY2tldC5lcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25ldHdvcmsvcGFja2V0L1RleHRQYWNrZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IElkZW50aWZpZXJzIGZyb20gJy4uL0lkZW50aWZpZXJzJztcbmltcG9ydCB7IE5ldHdvcmtVdGlsIH0gZnJvbSAnLi4vTmV0d29ya1V0aWwnO1xuaW1wb3J0IFRleHRUeXBlIGZyb20gJy4uL3R5cGUvVGV4dFR5cGUnO1xuaW1wb3J0IERhdGFQYWNrZXQgZnJvbSAnLi9EYXRhUGFja2V0JztcblxuLyoqXG4gKiBQYWNrZXQgZm9yIGNoYXQgbWVzc2FnZXMsIGFubm91bmNlbWVudHMgZXRjLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZXh0UGFja2V0IGV4dGVuZHMgRGF0YVBhY2tldCB7XG4gICAgcHVibGljIHN0YXRpYyBOZXRJRCA9IElkZW50aWZpZXJzLlRleHRQYWNrZXQ7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdHlwZSBvZiB0aGUgY2hhdCBtZXNzYWdlLlxuICAgICAqIEVnLiBDaGF0LCBBbm5vdW5jZW1lbnQsIEpzb24sIGV0Yy5cbiAgICAgKi9cbiAgICBwdWJsaWMgdHlwZSE6IFRleHRUeXBlO1xuICAgIHB1YmxpYyBuZWVkc1RyYW5zbGF0aW9uITogYm9vbGVhbjtcbiAgICBwdWJsaWMgc291cmNlTmFtZSE6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSBhY3R1YWwgY2hhdCBtZXNzYWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyBtZXNzYWdlITogc3RyaW5nO1xuICAgIHB1YmxpYyBwYXJhbWV0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHB1YmxpYyB4dWlkITogc3RyaW5nO1xuICAgIHB1YmxpYyBwbGF0Zm9ybUNoYXRJZCE6IHN0cmluZztcbiAgICBwdWJsaWMgZmlsdGVyZWQhOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgZGVjb2RlUGF5bG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50eXBlID0gdGhpcy5yZWFkQnl0ZSgpO1xuICAgICAgICB0aGlzLm5lZWRzVHJhbnNsYXRpb24gPSB0aGlzLnJlYWRCb29sZWFuKCk7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgVGV4dFR5cGUuQ2hhdDpcbiAgICAgICAgICAgIGNhc2UgVGV4dFR5cGUuV2hpc3BlcjpcbiAgICAgICAgICAgIGNhc2UgVGV4dFR5cGUuQW5ub3VuY2VtZW50OlxuICAgICAgICAgICAgICAgIHRoaXMuc291cmNlTmFtZSA9IE5ldHdvcmtVdGlsLnJlYWRTdHJpbmcodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlID0gTmV0d29ya1V0aWwucmVhZFN0cmluZyh0aGlzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBUZXh0VHlwZS5SYXc6XG4gICAgICAgICAgICBjYXNlIFRleHRUeXBlLlRpcDpcbiAgICAgICAgICAgIGNhc2UgVGV4dFR5cGUuU3lzdGVtOlxuICAgICAgICAgICAgY2FzZSBUZXh0VHlwZS5Kc29uV2hpc3BlcjpcbiAgICAgICAgICAgIGNhc2UgVGV4dFR5cGUuSnNvbjpcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBOZXR3b3JrVXRpbC5yZWFkU3RyaW5nKHRoaXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFRleHRUeXBlLlRyYW5zbGF0aW9uOlxuICAgICAgICAgICAgY2FzZSBUZXh0VHlwZS5Qb3B1cDpcbiAgICAgICAgICAgIGNhc2UgVGV4dFR5cGUuSnVrZWJveFBvcHVwOlxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IE5ldHdvcmtVdGlsLnJlYWRTdHJpbmcodGhpcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgY291bnQgPSB0aGlzLnJlYWRVbnNpZ25lZFZhckludCgpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMucHVzaChOZXR3b3JrVXRpbC5yZWFkU3RyaW5nKHRoaXMpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgVGV4dFR5cGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMueHVpZCA9IE5ldHdvcmtVdGlsLnJlYWRTdHJpbmcodGhpcyk7XG4gICAgICAgIHRoaXMucGxhdGZvcm1DaGF0SWQgPSBOZXR3b3JrVXRpbC5yZWFkU3RyaW5nKHRoaXMpO1xuICAgICAgICB0aGlzLmZpbHRlcmVkID0gTmV0d29ya1V0aWwucmVhZFN0cmluZyh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW5jb2RlUGF5bG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53cml0ZUJ5dGUodGhpcy50eXBlKTtcbiAgICAgICAgdGhpcy53cml0ZUJvb2xlYW4odGhpcy5uZWVkc1RyYW5zbGF0aW9uKTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBUZXh0VHlwZS5DaGF0OlxuICAgICAgICAgICAgY2FzZSBUZXh0VHlwZS5XaGlzcGVyOlxuICAgICAgICAgICAgY2FzZSBUZXh0VHlwZS5Bbm5vdW5jZW1lbnQ6XG4gICAgICAgICAgICAgICAgTmV0d29ya1V0aWwud3JpdGVTdHJpbmcodGhpcywgdGhpcy5zb3VyY2VOYW1lKTtcbiAgICAgICAgICAgIGNhc2UgVGV4dFR5cGUuUmF3OlxuICAgICAgICAgICAgY2FzZSBUZXh0VHlwZS5UaXA6XG4gICAgICAgICAgICBjYXNlIFRleHRUeXBlLlN5c3RlbTpcbiAgICAgICAgICAgIGNhc2UgVGV4dFR5cGUuSnNvbldoaXNwZXI6XG4gICAgICAgICAgICBjYXNlIFRleHRUeXBlLkpzb246XG4gICAgICAgICAgICAgICAgTmV0d29ya1V0aWwud3JpdGVTdHJpbmcodGhpcywgdGhpcy5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBUZXh0VHlwZS5UcmFuc2xhdGlvbjpcbiAgICAgICAgICAgIGNhc2UgVGV4dFR5cGUuUG9wdXA6XG4gICAgICAgICAgICBjYXNlIFRleHRUeXBlLkp1a2Vib3hQb3B1cDpcbiAgICAgICAgICAgICAgICBOZXR3b3JrVXRpbC53cml0ZVN0cmluZyh0aGlzLCB0aGlzLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIHRoaXMud3JpdGVVbnNpZ25lZFZhckludCh0aGlzLnBhcmFtZXRlcnMubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhcmFtZXRlciBvZiB0aGlzLnBhcmFtZXRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgTmV0d29ya1V0aWwud3JpdGVTdHJpbmcodGhpcywgcGFyYW1ldGVyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFRleHRUeXBlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBOZXR3b3JrVXRpbC53cml0ZVN0cmluZyh0aGlzLCB0aGlzLnh1aWQpO1xuICAgICAgICBOZXR3b3JrVXRpbC53cml0ZVN0cmluZyh0aGlzLCB0aGlzLnBsYXRmb3JtQ2hhdElkKTtcbiAgICAgICAgTmV0d29ya1V0aWwud3JpdGVTdHJpbmcodGhpcywgdGhpcy5maWx0ZXJlZCk7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBUUEsTUFBcUIsbUJBQW1CLFVBQVcsQ0FBQTtBQUFBLEVBQy9DLE9BQWMsUUFBUSxXQUFZLENBQUEsVUFBQTtBQUFBO0FBQUE7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