@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
59 lines (58 loc) • 5.97 kB
JavaScript
import { NetworkUtil } from "../NetworkUtil.es.js";
import Identifiers from "../Identifiers.es.js";
import DataPacket from "./DataPacket.es.js";
import { Vector3 } from "@jsprismarine/math";
//#region src/network/packet/AddActorPacket.ts
/**
* Packet for adding an entity to the game.
*
* **Bound To:** Client
*
* | Name | Type | Notes |
* | ---- |:----:|:-----:|
* | uniqueEntityId | VarLong | |
* | runtimeEntityId | UnsignedVarLong | |
* | type | String | The namespaced entity ID |
* | position | Vector3 (LFloat) | The entity's position |
* | motion | Vector3 (LFloat) | The entity's motion |
* | pitch | LFloat | |
* | yaw | LFloat | |
* | headYaw | LFloat | |
*/
var AddActorPacket = class extends DataPacket {
static NetID = Identifiers.AddActorPacket;
uniqueEntityId;
runtimeEntityId;
type;
position = new Vector3(0, 0, 0);
motion = new Vector3(0, 0, 0);
pitch;
yaw;
headYaw;
attributes = [];
metadata;
links = [];
encodePayload() {
this.writeVarLong(this.uniqueEntityId || this.runtimeEntityId);
this.writeUnsignedVarLong(this.runtimeEntityId);
NetworkUtil.writeString(this, this.type);
this.writeFloatLE(this.position.getX());
this.writeFloatLE(this.position.getY());
this.writeFloatLE(this.position.getZ());
this.writeFloatLE(this.motion.getX());
this.writeFloatLE(this.motion.getY());
this.writeFloatLE(this.motion.getZ());
this.writeFloatLE(this.pitch);
this.writeFloatLE(this.yaw);
this.writeFloatLE(this.headYaw);
this.writeFloatLE(this.yaw);
this.writeUnsignedVarInt(0);
this.metadata.networkSerialize(this);
this.writeUnsignedVarInt(0);
this.writeUnsignedVarInt(0);
this.writeUnsignedVarInt(this.links.length);
}
};
//#endregion
export { AddActorPacket as default };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRkQWN0b3JQYWNrZXQuZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25ldHdvcmsvcGFja2V0L0FkZEFjdG9yUGFja2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZlY3RvcjMgfSBmcm9tICdAanNwcmlzbWFyaW5lL21hdGgnO1xuaW1wb3J0IHR5cGUgeyBNZXRhZGF0YSB9IGZyb20gJy4uLy4uL2VudGl0eS9NZXRhZGF0YSc7XG5pbXBvcnQgSWRlbnRpZmllcnMgZnJvbSAnLi4vSWRlbnRpZmllcnMnO1xuaW1wb3J0IHsgTmV0d29ya1V0aWwgfSBmcm9tICcuLi9OZXR3b3JrVXRpbCc7XG5pbXBvcnQgRGF0YVBhY2tldCBmcm9tICcuL0RhdGFQYWNrZXQnO1xuXG4vKipcbiAqIFBhY2tldCBmb3IgYWRkaW5nIGFuIGVudGl0eSB0byB0aGUgZ2FtZS5cbiAqXG4gKiAqKkJvdW5kIFRvOioqIENsaWVudFxuICpcbiAqIHwgTmFtZSB8IFR5cGUgfCBOb3RlcyB8XG4gKiB8IC0tLS0gfDotLS0tOnw6LS0tLS06fFxuICogfCB1bmlxdWVFbnRpdHlJZCB8IFZhckxvbmcgfCB8XG4gKiB8IHJ1bnRpbWVFbnRpdHlJZCB8IFVuc2lnbmVkVmFyTG9uZyB8IHxcbiAqIHwgdHlwZSB8IFN0cmluZyB8IFRoZSBuYW1lc3BhY2VkIGVudGl0eSBJRCB8XG4gKiB8IHBvc2l0aW9uIHwgVmVjdG9yMyAoTEZsb2F0KSB8IFRoZSBlbnRpdHkncyBwb3NpdGlvbiB8XG4gKiB8IG1vdGlvbiB8IFZlY3RvcjMgKExGbG9hdCkgfCBUaGUgZW50aXR5J3MgbW90aW9uIHxcbiAqIHwgcGl0Y2ggfCBMRmxvYXQgfCAgfFxuICogfCB5YXcgfCBMRmxvYXQgfCAgfFxuICogfCBoZWFkWWF3IHwgTEZsb2F0IHwgIHxcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWRkQWN0b3JQYWNrZXQgZXh0ZW5kcyBEYXRhUGFja2V0IHtcbiAgICBwdWJsaWMgc3RhdGljIE5ldElEID0gSWRlbnRpZmllcnMuQWRkQWN0b3JQYWNrZXQ7XG5cbiAgICBwdWJsaWMgdW5pcXVlRW50aXR5SWQhOiBiaWdpbnQ7XG4gICAgcHVibGljIHJ1bnRpbWVFbnRpdHlJZCE6IGJpZ2ludDtcbiAgICBwdWJsaWMgdHlwZSE6IHN0cmluZztcbiAgICBwdWJsaWMgcG9zaXRpb246IFZlY3RvcjMgPSBuZXcgVmVjdG9yMygwLCAwLCAwKTtcbiAgICBwdWJsaWMgbW90aW9uOiBWZWN0b3IzID0gbmV3IFZlY3RvcjMoMCwgMCwgMCk7XG4gICAgcHVibGljIHBpdGNoITogbnVtYmVyO1xuICAgIHB1YmxpYyB5YXchOiBudW1iZXI7XG4gICAgcHVibGljIGhlYWRZYXchOiBudW1iZXI7XG5cbiAgICBwdWJsaWMgYXR0cmlidXRlcyA9IFtdO1xuICAgIHB1YmxpYyBtZXRhZGF0YSE6IE1ldGFkYXRhO1xuICAgIHB1YmxpYyBsaW5rcyA9IFtdO1xuXG4gICAgcHVibGljIGVuY29kZVBheWxvYWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud3JpdGVWYXJMb25nKHRoaXMudW5pcXVlRW50aXR5SWQgfHwgdGhpcy5ydW50aW1lRW50aXR5SWQpO1xuICAgICAgICB0aGlzLndyaXRlVW5zaWduZWRWYXJMb25nKHRoaXMucnVudGltZUVudGl0eUlkKTtcblxuICAgICAgICBOZXR3b3JrVXRpbC53cml0ZVN0cmluZyh0aGlzLCB0aGlzLnR5cGUpO1xuXG4gICAgICAgIHRoaXMud3JpdGVGbG9hdExFKHRoaXMucG9zaXRpb24uZ2V0WCgpKTtcbiAgICAgICAgdGhpcy53cml0ZUZsb2F0TEUodGhpcy5wb3NpdGlvbi5nZXRZKCkpO1xuICAgICAgICB0aGlzLndyaXRlRmxvYXRMRSh0aGlzLnBvc2l0aW9uLmdldFooKSk7XG5cbiAgICAgICAgdGhpcy53cml0ZUZsb2F0TEUodGhpcy5tb3Rpb24uZ2V0WCgpKTtcbiAgICAgICAgdGhpcy53cml0ZUZsb2F0TEUodGhpcy5tb3Rpb24uZ2V0WSgpKTtcbiAgICAgICAgdGhpcy53cml0ZUZsb2F0TEUodGhpcy5tb3Rpb24uZ2V0WigpKTtcblxuICAgICAgICB0aGlzLndyaXRlRmxvYXRMRSh0aGlzLnBpdGNoKTtcbiAgICAgICAgdGhpcy53cml0ZUZsb2F0TEUodGhpcy55YXcpO1xuICAgICAgICB0aGlzLndyaXRlRmxvYXRMRSh0aGlzLmhlYWRZYXcpO1xuICAgICAgICB0aGlzLndyaXRlRmxvYXRMRSh0aGlzLnlhdyk7IC8vIGJvZHlZYXdcblxuICAgICAgICB0aGlzLndyaXRlVW5zaWduZWRWYXJJbnQoMCk7IC8vIFRPRE86IGF0dHJpYnV0ZXMuXG4gICAgICAgIHRoaXMubWV0YWRhdGEubmV0d29ya1NlcmlhbGl6ZSh0aGlzKTtcblxuICAgICAgICB0aGlzLndyaXRlVW5zaWduZWRWYXJJbnQoMCk7IC8vID8gdW5rbm93blxuICAgICAgICB0aGlzLndyaXRlVW5zaWduZWRWYXJJbnQoMCk7IC8vID8gdW5rbm93blxuXG4gICAgICAgIC8vIFRPRE86IGxpbmtzXG4gICAgICAgIHRoaXMud3JpdGVVbnNpZ25lZFZhckludCh0aGlzLmxpbmtzLmxlbmd0aCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkEsSUFBcUIsaUJBQXJCLGNBQTRDLFdBQVc7Q0FDbkQsT0FBYyxRQUFRLFlBQVk7Q0FFbEM7Q0FDQTtDQUNBO0NBQ0EsV0FBMkIsSUFBSSxRQUFRLEdBQUcsR0FBRyxDQUFDO0NBQzlDLFNBQXlCLElBQUksUUFBUSxHQUFHLEdBQUcsQ0FBQztDQUM1QztDQUNBO0NBQ0E7Q0FFQSxhQUFvQixDQUFDO0NBQ3JCO0NBQ0EsUUFBZSxDQUFDO0NBRWhCLGdCQUE2QjtFQUN6QixLQUFLLGFBQWEsS0FBSyxrQkFBa0IsS0FBSyxlQUFlO0VBQzdELEtBQUsscUJBQXFCLEtBQUssZUFBZTtFQUU5QyxZQUFZLFlBQVksTUFBTSxLQUFLLElBQUk7RUFFdkMsS0FBSyxhQUFhLEtBQUssU0FBUyxLQUFLLENBQUM7RUFDdEMsS0FBSyxhQUFhLEtBQUssU0FBUyxLQUFLLENBQUM7RUFDdEMsS0FBSyxhQUFhLEtBQUssU0FBUyxLQUFLLENBQUM7RUFFdEMsS0FBSyxhQUFhLEtBQUssT0FBTyxLQUFLLENBQUM7RUFDcEMsS0FBSyxhQUFhLEtBQUssT0FBTyxLQUFLLENBQUM7RUFDcEMsS0FBSyxhQUFhLEtBQUssT0FBTyxLQUFLLENBQUM7RUFFcEMsS0FBSyxhQUFhLEtBQUssS0FBSztFQUM1QixLQUFLLGFBQWEsS0FBSyxHQUFHO0VBQzFCLEtBQUssYUFBYSxLQUFLLE9BQU87RUFDOUIsS0FBSyxhQUFhLEtBQUssR0FBRztFQUUxQixLQUFLLG9CQUFvQixDQUFDO0VBQzFCLEtBQUssU0FBUyxpQkFBaUIsSUFBSTtFQUVuQyxLQUFLLG9CQUFvQixDQUFDO0VBQzFCLEtBQUssb0JBQW9CLENBQUM7RUFHMUIsS0FBSyxvQkFBb0IsS0FBSyxNQUFNLE1BQU07Q0FDOUM7QUFDSiJ9