@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
87 lines (86 loc) • 9.06 kB
JavaScript
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