@bdsx/containermenu
Version:
ContainerMenu - An API allowing you to create fake container menus.
63 lines • 5.93 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.FakeDoubleContainer = void 0;
const FakeContainer_1 = require("./FakeContainer");
const blockpos_1 = require("bdsx/bds/blockpos");
const PlayerManager_1 = require("../PlayerManager");
const Utils_1 = require("../utils/Utils");
const launcher_1 = require("bdsx/launcher");
const packets_1 = require("bdsx/bds/packets");
const nbt_1 = require("bdsx/bds/nbt");
class FakeDoubleContainer extends FakeContainer_1.FakeContainer {
constructor(block, containerType, containerSize, player, destructItems = true, inventory = {}) {
super(block, containerType, containerSize, player, destructItems, inventory);
}
/**
* Sends the fake container to the client.
*/
sendToPlayer() {
PlayerManager_1.PlayerManager.setContainer(this.netId, this);
this.position = Utils_1.Utils.getAbovePosition(this.netId);
this.position2 = blockpos_1.BlockPos.create(this.position.x + 1, this.position.y, this.position.z);
this.placeContainer(this.position);
this.placeContainer(this.position2);
this.sendNbtData(true);
this.sendNbtData(false);
launcher_1.bedrockServer.serverInstance.nextTick().then(() => {
this.openContainer();
this.updateAllItems();
});
}
/**
* Sends the container's nbt data to the client.
*/
sendNbtData(pairLead = false) {
const pk = packets_1.BlockActorDataPacket.allocate();
pk.pos.set(pairLead ? this.position : this.position2);
let nbtData = {};
if (this.customName)
nbtData["CustomName"] = nbt_1.StringTag.constructWith(this.customName);
nbtData["pairlead"] = nbt_1.ByteTag.constructWith(pairLead ? 1 : 0);
nbtData["pairx"] = nbt_1.IntTag.constructWith(pairLead ? this.position2.x : this.position.x);
nbtData["pairz"] = nbt_1.IntTag.constructWith(pairLead ? this.position2.z : this.position.z);
for (const [key, tag] of Object.entries(nbtData))
pk.data.set(key, tag);
pk.sendTo(this.netId);
pk.dispose();
for (const tag of Object.values(nbtData))
tag.destruct();
}
/**
* Destroys the containers, and destructs all the ItemStack instances, if needed.
*/
destruct() {
this.destroyContainer(this.position);
this.destroyContainer(this.position2);
if (this.destructItems) {
this.destructAllItems();
}
PlayerManager_1.PlayerManager.removeContainer(this.netId);
}
}
exports.FakeDoubleContainer = FakeDoubleContainer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFrZURvdWJsZUNvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkZha2VEb3VibGVDb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQWdEO0FBQ2hELGdEQUE2QztBQUM3QyxvREFBaUQ7QUFDakQsMENBQXVDO0FBQ3ZDLDRDQUE4QztBQUM5Qyw4Q0FBd0Q7QUFDeEQsc0NBQStEO0FBTy9ELE1BQWEsbUJBQW9CLFNBQVEsNkJBQWE7SUFHbEQsWUFBWSxLQUFZLEVBQUUsYUFBNEIsRUFBRSxhQUFxQixFQUFFLE1BQW9CLEVBQUUsZ0JBQXlCLElBQUksRUFBRSxZQUFnQyxFQUFFO1FBQ2xLLEtBQUssQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVk7UUFDZiw2QkFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsU0FBUyxHQUFHLG1CQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4Qix3QkFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzlDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxXQUFXLENBQUMsV0FBb0IsS0FBSztRQUN6QyxNQUFNLEVBQUUsR0FBRyw4QkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RCxJQUFJLE9BQU8sR0FBd0IsRUFBRSxDQUFDO1FBQ3RDLElBQUcsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsZUFBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckYsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLGFBQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxZQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkYsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLFlBQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RixLQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdkUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RDLElBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNuQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUMzQjtRQUNELDZCQUFhLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0o7QUFwREQsa0RBb0RDIn0=