UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

87 lines (86 loc) 9.06 kB
import { NetworkUtil } from "../NetworkUtil.es.js"; import Identifiers from "../Identifiers.es.js"; import DataPacket from "./DataPacket.es.js"; import TextType from "../type/TextType.es.js"; //#region src/network/packet/TextPacket.ts /** * Packet for chat messages, announcements etc. */ var TextPacket = class 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); } }; //#endregion export { TextPacket as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dFBhY2tldC5lcy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmV0d29yay9wYWNrZXQvVGV4dFBhY2tldC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgSWRlbnRpZmllcnMgZnJvbSAnLi4vSWRlbnRpZmllcnMnO1xuaW1wb3J0IHsgTmV0d29ya1V0aWwgfSBmcm9tICcuLi9OZXR3b3JrVXRpbCc7XG5pbXBvcnQgVGV4dFR5cGUgZnJvbSAnLi4vdHlwZS9UZXh0VHlwZSc7XG5pbXBvcnQgRGF0YVBhY2tldCBmcm9tICcuL0RhdGFQYWNrZXQnO1xuXG4vKipcbiAqIFBhY2tldCBmb3IgY2hhdCBtZXNzYWdlcywgYW5ub3VuY2VtZW50cyBldGMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRleHRQYWNrZXQgZXh0ZW5kcyBEYXRhUGFja2V0IHtcbiAgICBwdWJsaWMgc3RhdGljIE5ldElEID0gSWRlbnRpZmllcnMuVGV4dFBhY2tldDtcblxuICAgIC8qKlxuICAgICAqIFRoZSB0eXBlIG9mIHRoZSBjaGF0IG1lc3NhZ2UuXG4gICAgICogRWcuIENoYXQsIEFubm91bmNlbWVudCwgSnNvbiwgZXRjLlxuICAgICAqL1xuICAgIHB1YmxpYyB0eXBlITogVGV4dFR5cGU7XG4gICAgcHVibGljIG5lZWRzVHJhbnNsYXRpb24hOiBib29sZWFuO1xuICAgIHB1YmxpYyBzb3VyY2VOYW1lITogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGFjdHVhbCBjaGF0IG1lc3NhZ2UuXG4gICAgICovXG4gICAgcHVibGljIG1lc3NhZ2UhOiBzdHJpbmc7XG4gICAgcHVibGljIHBhcmFtZXRlcnM6IHN0cmluZ1tdID0gW107XG4gICAgcHVibGljIHh1aWQhOiBzdHJpbmc7XG4gICAgcHVibGljIHBsYXRmb3JtQ2hhdElkITogc3RyaW5nO1xuICAgIHB1YmxpYyBmaWx0ZXJlZCE6IHN0cmluZztcblxuICAgIHB1YmxpYyBkZWNvZGVQYXlsb2FkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnR5cGUgPSB0aGlzLnJlYWRCeXRlKCk7XG4gICAgICAgIHRoaXMubmVlZHNUcmFuc2xhdGlvbiA9IHRoaXMucmVhZEJvb2xlYW4oKTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBUZXh0VHlwZS5DaGF0OlxuICAgICAgICAgICAgY2FzZSBUZXh0VHlwZS5XaGlzcGVyOlxuICAgICAgICAgICAgY2FzZSBUZXh0VHlwZS5Bbm5vdW5jZW1lbnQ6XG4gICAgICAgICAgICAgICAgdGhpcy5zb3VyY2VOYW1lID0gTmV0d29ya1V0aWwucmVhZFN0cmluZyh0aGlzKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBOZXR3b3JrVXRpbC5yZWFkU3RyaW5nKHRoaXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFRleHRUeXBlLlJhdzpcbiAgICAgICAgICAgIGNhc2UgVGV4dFR5cGUuVGlwOlxuICAgICAgICAgICAgY2FzZSBUZXh0VHlwZS5TeXN0ZW06XG4gICAgICAgICAgICBjYXNlIFRleHRUeXBlLkpzb25XaGlzcGVyOlxuICAgICAgICAgICAgY2FzZSBUZXh0VHlwZS5Kc29uOlxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IE5ldHdvcmtVdGlsLnJlYWRTdHJpbmcodGhpcyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgVGV4dFR5cGUuVHJhbnNsYXRpb246XG4gICAgICAgICAgICBjYXNlIFRleHRUeXBlLlBvcHVwOlxuICAgICAgICAgICAgY2FzZSBUZXh0VHlwZS5KdWtlYm94UG9wdXA6XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlID0gTmV0d29ya1V0aWwucmVhZFN0cmluZyh0aGlzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb3VudCA9IHRoaXMucmVhZFVuc2lnbmVkVmFySW50KCk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5wdXNoKE5ldHdvcmtVdGlsLnJlYWRTdHJpbmcodGhpcykpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBUZXh0VHlwZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy54dWlkID0gTmV0d29ya1V0aWwucmVhZFN0cmluZyh0aGlzKTtcbiAgICAgICAgdGhpcy5wbGF0Zm9ybUNoYXRJZCA9IE5ldHdvcmtVdGlsLnJlYWRTdHJpbmcodGhpcyk7XG4gICAgICAgIHRoaXMuZmlsdGVyZWQgPSBOZXR3b3JrVXRpbC5yZWFkU3RyaW5nKHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbmNvZGVQYXlsb2FkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndyaXRlQnl0ZSh0aGlzLnR5cGUpO1xuICAgICAgICB0aGlzLndyaXRlQm9vbGVhbih0aGlzLm5lZWRzVHJhbnNsYXRpb24pO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFRleHRUeXBlLkNoYXQ6XG4gICAgICAgICAgICBjYXNlIFRleHRUeXBlLldoaXNwZXI6XG4gICAgICAgICAgICBjYXNlIFRleHRUeXBlLkFubm91bmNlbWVudDpcbiAgICAgICAgICAgICAgICBOZXR3b3JrVXRpbC53cml0ZVN0cmluZyh0aGlzLCB0aGlzLnNvdXJjZU5hbWUpO1xuICAgICAgICAgICAgY2FzZSBUZXh0VHlwZS5SYXc6XG4gICAgICAgICAgICBjYXNlIFRleHRUeXBlLlRpcDpcbiAgICAgICAgICAgIGNhc2UgVGV4dFR5cGUuU3lzdGVtOlxuICAgICAgICAgICAgY2FzZSBUZXh0VHlwZS5Kc29uV2hpc3BlcjpcbiAgICAgICAgICAgIGNhc2UgVGV4dFR5cGUuSnNvbjpcbiAgICAgICAgICAgICAgICBOZXR3b3JrVXRpbC53cml0ZVN0cmluZyh0aGlzLCB0aGlzLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFRleHRUeXBlLlRyYW5zbGF0aW9uOlxuICAgICAgICAgICAgY2FzZSBUZXh0VHlwZS5Qb3B1cDpcbiAgICAgICAgICAgIGNhc2UgVGV4dFR5cGUuSnVrZWJveFBvcHVwOlxuICAgICAgICAgICAgICAgIE5ldHdvcmtVdGlsLndyaXRlU3RyaW5nKHRoaXMsIHRoaXMubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgdGhpcy53cml0ZVVuc2lnbmVkVmFySW50KHRoaXMucGFyYW1ldGVycy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFyYW1ldGVyIG9mIHRoaXMucGFyYW1ldGVycykge1xuICAgICAgICAgICAgICAgICAgICBOZXR3b3JrVXRpbC53cml0ZVN0cmluZyh0aGlzLCBwYXJhbWV0ZXIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgVGV4dFR5cGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIE5ldHdvcmtVdGlsLndyaXRlU3RyaW5nKHRoaXMsIHRoaXMueHVpZCk7XG4gICAgICAgIE5ldHdvcmtVdGlsLndyaXRlU3RyaW5nKHRoaXMsIHRoaXMucGxhdGZvcm1DaGF0SWQpO1xuICAgICAgICBOZXR3b3JrVXRpbC53cml0ZVN0cmluZyh0aGlzLCB0aGlzLmZpbHRlcmVkKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBUUEsSUFBcUIsYUFBckIsY0FBd0MsV0FBVztDQUMvQyxPQUFjLFFBQVEsWUFBWTs7Ozs7Q0FNbEM7Q0FDQTtDQUNBOzs7O0NBS0E7Q0FDQSxhQUE4QixDQUFDO0NBQy9CO0NBQ0E7Q0FDQTtDQUVBLGdCQUE2QjtFQUN6QixLQUFLLE9BQU8sS0FBSyxTQUFTO0VBQzFCLEtBQUssbUJBQW1CLEtBQUssWUFBWTtFQUV6QyxRQUFRLEtBQUssTUFBYjtHQUNJLEtBQUssU0FBUztHQUNkLEtBQUssU0FBUztHQUNkLEtBQUssU0FBUztJQUNWLEtBQUssYUFBYSxZQUFZLFdBQVcsSUFBSTtJQUM3QyxLQUFLLFVBQVUsWUFBWSxXQUFXLElBQUk7SUFDMUM7R0FFSixLQUFLLFNBQVM7R0FDZCxLQUFLLFNBQVM7R0FDZCxLQUFLLFNBQVM7R0FDZCxLQUFLLFNBQVM7R0FDZCxLQUFLLFNBQVM7SUFDVixLQUFLLFVBQVUsWUFBWSxXQUFXLElBQUk7SUFDMUM7R0FFSixLQUFLLFNBQVM7R0FDZCxLQUFLLFNBQVM7R0FDZCxLQUFLLFNBQVM7SUFDVixLQUFLLFVBQVUsWUFBWSxXQUFXLElBQUk7SUFDMUMsTUFBTSxRQUFRLEtBQUssbUJBQW1CO0lBQ3RDLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxPQUFPLEtBQ3ZCLEtBQUssV0FBVyxLQUFLLFlBQVksV0FBVyxJQUFJLENBQUM7SUFHckQ7R0FFSixTQUNJLE1BQU0sSUFBSSxNQUFNLGtCQUFrQjtFQUMxQztFQUVBLEtBQUssT0FBTyxZQUFZLFdBQVcsSUFBSTtFQUN2QyxLQUFLLGlCQUFpQixZQUFZLFdBQVcsSUFBSTtFQUNqRCxLQUFLLFdBQVcsWUFBWSxXQUFXLElBQUk7Q0FDL0M7Q0FFQSxnQkFBNkI7RUFDekIsS0FBSyxVQUFVLEtBQUssSUFBSTtFQUN4QixLQUFLLGFBQWEsS0FBSyxnQkFBZ0I7RUFFdkMsUUFBUSxLQUFLLE1BQWI7R0FDSSxLQUFLLFNBQVM7R0FDZCxLQUFLLFNBQVM7R0FDZCxLQUFLLFNBQVMsY0FDVixZQUFZLFlBQVksTUFBTSxLQUFLLFVBQVU7R0FDakQsS0FBSyxTQUFTO0dBQ2QsS0FBSyxTQUFTO0dBQ2QsS0FBSyxTQUFTO0dBQ2QsS0FBSyxTQUFTO0dBQ2QsS0FBSyxTQUFTO0lBQ1YsWUFBWSxZQUFZLE1BQU0sS0FBSyxPQUFPO0lBQzFDO0dBRUosS0FBSyxTQUFTO0dBQ2QsS0FBSyxTQUFTO0dBQ2QsS0FBSyxTQUFTO0lBQ1YsWUFBWSxZQUFZLE1BQU0sS0FBSyxPQUFPO0lBQzFDLEtBQUssb0JBQW9CLEtBQUssV0FBVyxNQUFNO0lBQy9DLEtBQUssTUFBTSxhQUFhLEtBQUssWUFDekIsWUFBWSxZQUFZLE1BQU0sU0FBUztJQUczQztHQUNKLFNBQ0ksTUFBTSxJQUFJLE1BQU0sa0JBQWtCO0VBQzFDO0VBRUEsWUFBWSxZQUFZLE1BQU0sS0FBSyxJQUFJO0VBQ3ZDLFlBQVksWUFBWSxNQUFNLEtBQUssY0FBYztFQUNqRCxZQUFZLFlBQVksTUFBTSxLQUFLLFFBQVE7Q0FDL0M7QUFDSiJ9