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