Search in sources :

Example 1 with BlockEventPacket

use of cn.nukkit.network.protocol.BlockEventPacket in project Nukkit by Nukkit.

the class ChestInventory method onClose.

@Override
public void onClose(Player who) {
    if (this.getViewers().size() == 1) {
        BlockEventPacket pk = new BlockEventPacket();
        pk.x = (int) this.getHolder().getX();
        pk.y = (int) this.getHolder().getY();
        pk.z = (int) this.getHolder().getZ();
        pk.case1 = 1;
        pk.case2 = 0;
        Level level = this.getHolder().getLevel();
        if (level != null) {
            level.addSound(this.getHolder().add(0.5, 0.5, 0.5), Sound.RANDOM_CHESTCLOSED);
            level.addChunkPacket((int) this.getHolder().getX() >> 4, (int) this.getHolder().getZ() >> 4, pk);
        }
    }
    super.onClose(who);
}
Also used : BlockEventPacket(cn.nukkit.network.protocol.BlockEventPacket) Level(cn.nukkit.level.Level)

Example 2 with BlockEventPacket

use of cn.nukkit.network.protocol.BlockEventPacket in project Nukkit by Nukkit.

the class PlayerEnderChestInventory method onClose.

@Override
public void onClose(Player who) {
    ContainerClosePacket containerClosePacket = new ContainerClosePacket();
    containerClosePacket.windowId = who.getWindowId(this);
    who.dataPacket(containerClosePacket);
    super.onClose(who);
    BlockEnderChest chest = who.getViewingEnderChest();
    if (chest != null && chest.getViewers().size() == 1) {
        BlockEventPacket blockEventPacket = new BlockEventPacket();
        blockEventPacket.x = (int) chest.getX();
        blockEventPacket.y = (int) chest.getY();
        blockEventPacket.z = (int) chest.getZ();
        blockEventPacket.case1 = 1;
        blockEventPacket.case2 = 0;
        Level level = this.getHolder().getLevel();
        if (level != null) {
            level.addSound(this.getHolder().add(0.5, 0.5, 0.5), Sound.RANDOM_CHESTCLOSED);
            level.addChunkPacket((int) this.getHolder().getX() >> 4, (int) this.getHolder().getZ() >> 4, blockEventPacket);
        }
        who.setViewingEnderChest(null);
    }
    super.onClose(who);
}
Also used : BlockEnderChest(cn.nukkit.block.BlockEnderChest) ContainerClosePacket(cn.nukkit.network.protocol.ContainerClosePacket) BlockEventPacket(cn.nukkit.network.protocol.BlockEventPacket) Level(cn.nukkit.level.Level)

Example 3 with BlockEventPacket

use of cn.nukkit.network.protocol.BlockEventPacket in project Nukkit by Nukkit.

the class PlayerEnderChestInventory method onOpen.

@Override
public void onOpen(Player who) {
    if (who != this.getHolder()) {
        return;
    }
    super.onOpen(who);
    ContainerOpenPacket containerOpenPacket = new ContainerOpenPacket();
    containerOpenPacket.windowId = who.getWindowId(this);
    containerOpenPacket.type = this.getType().getNetworkType();
    BlockEnderChest chest = who.getViewingEnderChest();
    if (chest != null) {
        containerOpenPacket.x = (int) chest.getX();
        containerOpenPacket.y = (int) chest.getY();
        containerOpenPacket.z = (int) chest.getZ();
    } else {
        containerOpenPacket.x = containerOpenPacket.y = containerOpenPacket.z = 0;
    }
    who.dataPacket(containerOpenPacket);
    this.sendContents(who);
    if (chest != null && chest.getViewers().size() == 1) {
        BlockEventPacket blockEventPacket = new BlockEventPacket();
        blockEventPacket.x = (int) chest.getX();
        blockEventPacket.y = (int) chest.getY();
        blockEventPacket.z = (int) chest.getZ();
        blockEventPacket.case1 = 1;
        blockEventPacket.case2 = 2;
        Level level = this.getHolder().getLevel();
        if (level != null) {
            level.addSound(this.getHolder().add(0.5, 0.5, 0.5), Sound.RANDOM_CHESTOPEN);
            level.addChunkPacket((int) this.getHolder().getX() >> 4, (int) this.getHolder().getZ() >> 4, blockEventPacket);
        }
    }
}
Also used : BlockEnderChest(cn.nukkit.block.BlockEnderChest) BlockEventPacket(cn.nukkit.network.protocol.BlockEventPacket) Level(cn.nukkit.level.Level) ContainerOpenPacket(cn.nukkit.network.protocol.ContainerOpenPacket)

Example 4 with BlockEventPacket

use of cn.nukkit.network.protocol.BlockEventPacket in project Nukkit by Nukkit.

the class BlockNoteblock method emitSound.

public void emitSound() {
    Instrument instrument = getInstrument();
    BlockEventPacket pk = new BlockEventPacket();
    pk.x = (int) this.x;
    pk.y = (int) this.y;
    pk.z = (int) this.z;
    pk.case1 = instrument.ordinal();
    pk.case2 = this.getStrength();
    this.getLevel().addChunkPacket((int) this.x >> 4, (int) this.z >> 4, pk);
    // TODO: correct pitch
    this.getLevel().addSound(this, instrument.getSound(), 1, this.getStrength());
}
Also used : BlockEventPacket(cn.nukkit.network.protocol.BlockEventPacket)

Example 5 with BlockEventPacket

use of cn.nukkit.network.protocol.BlockEventPacket in project Nukkit by Nukkit.

the class DoubleChestInventory method onClose.

@Override
public void onClose(Player who) {
    if (this.getViewers().size() == 1) {
        BlockEventPacket pk1 = new BlockEventPacket();
        pk1.x = (int) this.right.getHolder().getX();
        pk1.y = (int) this.right.getHolder().getY();
        pk1.z = (int) this.right.getHolder().getZ();
        pk1.case1 = 1;
        pk1.case2 = 0;
        Level level = this.right.getHolder().getLevel();
        if (level != null) {
            level.addSound(this.right.getHolder().add(0.5, 0.5, 0.5), Sound.RANDOM_CHESTCLOSED);
            level.addChunkPacket((int) this.right.getHolder().getX() >> 4, (int) this.right.getHolder().getZ() >> 4, pk1);
        }
        BlockEventPacket pk2 = new BlockEventPacket();
        pk2.x = (int) this.left.getHolder().getX();
        pk2.y = (int) this.left.getHolder().getY();
        pk2.z = (int) this.left.getHolder().getZ();
        pk2.case1 = 1;
        pk2.case2 = 0;
        level = this.left.getHolder().getLevel();
        if (level != null) {
            level.addSound(this.left.getHolder().add(0.5, 0.5, 0.5), Sound.RANDOM_CHESTCLOSED);
            level.addChunkPacket((int) this.left.getHolder().getX() >> 4, (int) this.left.getHolder().getZ() >> 4, pk2);
        }
    }
    this.left.viewers.remove(who);
    this.right.viewers.remove(who);
    super.onClose(who);
}
Also used : BlockEventPacket(cn.nukkit.network.protocol.BlockEventPacket) Level(cn.nukkit.level.Level)

Aggregations

BlockEventPacket (cn.nukkit.network.protocol.BlockEventPacket)7 Level (cn.nukkit.level.Level)6 BlockEnderChest (cn.nukkit.block.BlockEnderChest)2 ContainerClosePacket (cn.nukkit.network.protocol.ContainerClosePacket)1 ContainerOpenPacket (cn.nukkit.network.protocol.ContainerOpenPacket)1