Search in sources :

Example 51 with Player

use of cn.nukkit.Player in project Nukkit by Nukkit.

the class PlayerInventory method sendHeldItem.

public void sendHeldItem(Player... players) {
    Item item = this.getItemInHand();
    MobEquipmentPacket pk = new MobEquipmentPacket();
    pk.item = item;
    pk.inventorySlot = pk.hotbarSlot = this.getHeldItemIndex();
    for (Player player : players) {
        pk.eid = this.getHolder().getId();
        if (player.equals(this.getHolder())) {
            pk.eid = player.getId();
            this.sendSlot(this.getHeldItemIndex(), player);
        }
        player.dataPacket(pk);
    }
}
Also used : Item(cn.nukkit.item.Item) Player(cn.nukkit.Player) MobEquipmentPacket(cn.nukkit.network.protocol.MobEquipmentPacket)

Example 52 with Player

use of cn.nukkit.Player in project Nukkit by Nukkit.

the class RakNetInterface method closeSession.

@Override
public void closeSession(String identifier, String reason) {
    if (this.players.containsKey(identifier)) {
        Player player = this.players.get(identifier);
        this.identifiers.remove(player.rawHashCode());
        this.players.remove(identifier);
        this.networkLatency.remove(identifier);
        this.identifiersACK.remove(identifier);
        player.close(player.getLeaveMessage(), reason);
    }
}
Also used : Player(cn.nukkit.Player)

Example 53 with Player

use of cn.nukkit.Player in project Nukkit by Nukkit.

the class RakNetInterface method putPacket.

@Override
public Integer putPacket(Player player, DataPacket packet, boolean needACK, boolean immediate) {
    if (this.identifiers.containsKey(player.rawHashCode())) {
        byte[] buffer;
        if (packet.pid() == ProtocolInfo.BATCH_PACKET) {
            buffer = ((BatchPacket) packet).payload;
        } else if (!needACK) {
            this.server.batchPackets(new Player[] { player }, new DataPacket[] { packet }, true);
            return null;
        } else {
            if (!packet.isEncoded) {
                packet.encode();
                packet.isEncoded = true;
            }
            buffer = packet.getBuffer();
            try {
                buffer = Zlib.deflate(Binary.appendBytes(Binary.writeUnsignedVarInt(buffer.length), buffer), Server.getInstance().networkCompressionLevel);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
        String identifier = this.identifiers.get(player.rawHashCode());
        EncapsulatedPacket pk = null;
        if (!needACK) {
            if (packet.encapsulatedPacket == null) {
                packet.encapsulatedPacket = new CacheEncapsulatedPacket();
                packet.encapsulatedPacket.identifierACK = null;
                packet.encapsulatedPacket.buffer = Binary.appendBytes((byte) 0xfe, buffer);
                if (packet.getChannel() != 0) {
                    packet.encapsulatedPacket.reliability = 3;
                    packet.encapsulatedPacket.orderChannel = packet.getChannel();
                    packet.encapsulatedPacket.orderIndex = 0;
                } else {
                    packet.encapsulatedPacket.reliability = 2;
                }
            }
            pk = packet.encapsulatedPacket;
        }
        if (pk == null) {
            pk = new EncapsulatedPacket();
            pk.buffer = Binary.appendBytes((byte) 0xfe, buffer);
            if (packet.getChannel() != 0) {
                packet.reliability = 3;
                packet.orderChannel = packet.getChannel();
                packet.orderIndex = 0;
            } else {
                packet.reliability = 2;
            }
            if (needACK) {
                int iACK = this.identifiersACK.get(identifier);
                iACK++;
                pk.identifierACK = iACK;
                this.identifiersACK.put(identifier, iACK);
            }
        }
        this.handler.sendEncapsulated(identifier, pk, (needACK ? RakNet.FLAG_NEED_ACK : 0) | (immediate ? RakNet.PRIORITY_IMMEDIATE : RakNet.PRIORITY_NORMAL));
        return pk.identifierACK;
    }
    return null;
}
Also used : Player(cn.nukkit.Player) EncapsulatedPacket(cn.nukkit.raknet.protocol.EncapsulatedPacket) PING_DataPacket(cn.nukkit.raknet.protocol.packet.PING_DataPacket) DataPacket(cn.nukkit.network.protocol.DataPacket) InvocationTargetException(java.lang.reflect.InvocationTargetException)

Example 54 with Player

use of cn.nukkit.Player in project Nukkit by Nukkit.

the class BlockFire method onEntityCollide.

@Override
public void onEntityCollide(Entity entity) {
    if (!entity.hasEffect(Effect.FIRE_RESISTANCE)) {
        entity.attack(new EntityDamageByBlockEvent(this, entity, DamageCause.FIRE, 1));
    }
    EntityCombustByBlockEvent ev = new EntityCombustByBlockEvent(this, entity, 8);
    if (entity instanceof EntityArrow) {
        ev.setCancelled();
    }
    Server.getInstance().getPluginManager().callEvent(ev);
    if (!ev.isCancelled() && entity instanceof Player && !((Player) entity).isCreative()) {
        entity.setOnFire(ev.getDuration());
    }
}
Also used : EntityArrow(cn.nukkit.entity.projectile.EntityArrow) EntityCombustByBlockEvent(cn.nukkit.event.entity.EntityCombustByBlockEvent) Player(cn.nukkit.Player) EntityDamageByBlockEvent(cn.nukkit.event.entity.EntityDamageByBlockEvent)

Example 55 with Player

use of cn.nukkit.Player in project Nukkit by Nukkit.

the class BlockPressurePlateBase method onEntityCollide.

@Override
public void onEntityCollide(Entity entity) {
    int power = getRedstonePower();
    if (power == 0) {
        Event ev;
        if (entity instanceof Player) {
            ev = new PlayerInteractEvent((Player) entity, null, this, null, Action.PHYSICAL);
        } else {
            ev = new EntityInteractEvent(entity, this);
        }
        this.level.getServer().getPluginManager().callEvent(ev);
        if (!ev.isCancelled()) {
            updateState(power);
        }
    }
}
Also used : Player(cn.nukkit.Player) PlayerInteractEvent(cn.nukkit.event.player.PlayerInteractEvent) PlayerInteractEvent(cn.nukkit.event.player.PlayerInteractEvent) Event(cn.nukkit.event.Event) EntityInteractEvent(cn.nukkit.event.entity.EntityInteractEvent) BlockRedstoneEvent(cn.nukkit.event.block.BlockRedstoneEvent) EntityInteractEvent(cn.nukkit.event.entity.EntityInteractEvent)

Aggregations

Player (cn.nukkit.Player)85 TranslationContainer (cn.nukkit.lang.TranslationContainer)24 Entity (cn.nukkit.entity.Entity)13 BlockEntity (cn.nukkit.blockentity.BlockEntity)10 Item (cn.nukkit.item.Item)10 Level (cn.nukkit.level.Level)7 IOException (java.io.IOException)6 CompoundTag (cn.nukkit.nbt.tag.CompoundTag)5 Block (cn.nukkit.block.Block)4 ItemBlock (cn.nukkit.item.ItemBlock)4 BlockAir (cn.nukkit.block.BlockAir)3 EventHandler (cn.nukkit.event.EventHandler)3 BaseFullChunk (cn.nukkit.level.format.generic.BaseFullChunk)3 InventoryContentPacket (cn.nukkit.network.protocol.InventoryContentPacket)3 InventorySlotPacket (cn.nukkit.network.protocol.InventorySlotPacket)3 User (me.lucko.luckperms.common.model.User)3 IPlayer (cn.nukkit.IPlayer)2 CommandSender (cn.nukkit.command.CommandSender)2 EntityItem (cn.nukkit.entity.item.EntityItem)2 EntityArrow (cn.nukkit.entity.projectile.EntityArrow)2