Search in sources :

Example 21 with Player

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

the class BaseInventory method sendSlot.

@Override
public void sendSlot(int index, Player... players) {
    InventorySlotPacket pk = new InventorySlotPacket();
    pk.slot = index;
    pk.item = this.getItem(index).clone();
    for (Player player : players) {
        int id = player.getWindowId(this);
        if (id == -1) {
            this.close(player);
            continue;
        }
        pk.inventoryId = id;
        player.dataPacket(pk);
    }
}
Also used : Player(cn.nukkit.Player) InventorySlotPacket(cn.nukkit.network.protocol.InventorySlotPacket)

Example 22 with Player

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

the class BaseInventory method sendContents.

@Override
public void sendContents(Player... players) {
    InventoryContentPacket pk = new InventoryContentPacket();
    pk.slots = new Item[this.getSize()];
    for (int i = 0; i < this.getSize(); ++i) {
        pk.slots[i] = this.getItem(i);
    }
    for (Player player : players) {
        int id = player.getWindowId(this);
        if (id == -1 || !player.spawned) {
            this.close(player);
            continue;
        }
        pk.inventoryId = id;
        player.dataPacket(pk);
    }
}
Also used : Player(cn.nukkit.Player) InventoryContentPacket(cn.nukkit.network.protocol.InventoryContentPacket)

Example 23 with Player

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

the class EntityVehicle method mountEntity.

/**
 * Mount or Dismounts an Entity from a vehicle
 *
 * @param entity The target Entity
 * @return {@code true} if the mounting successful
 */
@Override
public boolean mountEntity(Entity entity) {
    Objects.requireNonNull(entity, "The target of the mounting entity can't be null");
    this.PitchDelta = 0.0D;
    this.YawDelta = 0.0D;
    if (entity.riding != null) {
        EntityVehicleExitEvent ev = new EntityVehicleExitEvent(entity, this);
        server.getPluginManager().callEvent(ev);
        if (ev.isCancelled()) {
            return false;
        }
        SetEntityLinkPacket pk;
        pk = new SetEntityLinkPacket();
        // Weird Weird Weird
        pk.rider = getId();
        pk.riding = entity.getId();
        pk.type = 3;
        Server.broadcastPacket(this.hasSpawned.values(), pk);
        if (entity instanceof Player) {
            pk = new SetEntityLinkPacket();
            pk.rider = getId();
            pk.riding = entity.getId();
            pk.type = 3;
            ((Player) entity).dataPacket(pk);
        }
        entity.riding = null;
        linkedEntity = null;
        entity.setDataFlag(DATA_FLAGS, DATA_FLAG_RIDING, false);
        return true;
    }
    EntityVehicleEnterEvent ev = new EntityVehicleEnterEvent(entity, this);
    server.getPluginManager().callEvent(ev);
    if (ev.isCancelled()) {
        return false;
    }
    SetEntityLinkPacket pk;
    pk = new SetEntityLinkPacket();
    pk.rider = this.getId();
    pk.riding = entity.getId();
    pk.type = 2;
    Server.broadcastPacket(this.hasSpawned.values(), pk);
    if (entity instanceof Player) {
        pk = new SetEntityLinkPacket();
        pk.rider = this.getId();
        pk.riding = 0;
        pk.type = 2;
        ((Player) entity).dataPacket(pk);
    }
    entity.riding = this;
    linkedEntity = entity;
    entity.setDataFlag(DATA_FLAGS, DATA_FLAG_RIDING, true);
    updateRiderPosition(getMountedYOffset());
    return true;
}
Also used : SetEntityLinkPacket(cn.nukkit.network.protocol.SetEntityLinkPacket) Player(cn.nukkit.Player) EntityVehicleEnterEvent(cn.nukkit.event.entity.EntityVehicleEnterEvent) EntityVehicleExitEvent(cn.nukkit.event.entity.EntityVehicleExitEvent)

Example 24 with Player

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

the class EntityXPOrb method onUpdate.

@Override
public boolean onUpdate(int currentTick) {
    if (this.closed) {
        return false;
    }
    int tickDiff = currentTick - this.lastUpdate;
    if (tickDiff <= 0 && !this.justCreated) {
        return true;
    }
    this.lastUpdate = currentTick;
    boolean hasUpdate = entityBaseTick(tickDiff);
    if (this.isAlive()) {
        if (this.pickupDelay > 0 && this.pickupDelay < 32767) {
            // Infinite delay
            this.pickupDelay -= tickDiff;
            if (this.pickupDelay < 0) {
                this.pickupDelay = 0;
            }
        } else {
            for (Entity entity : this.level.getCollidingEntities(this.boundingBox, this)) {
                if (entity instanceof Player) {
                    if (((Player) entity).pickupEntity(this, false)) {
                        return true;
                    }
                }
            }
        }
        this.motionY -= this.getGravity();
        if (this.checkObstruction(this.x, this.y, this.z)) {
            hasUpdate = true;
        }
        if (this.closestPlayer == null || this.closestPlayer.distanceSquared(this) > 64.0D) {
            for (Player p : level.getPlayers().values()) {
                if (!p.isSpectator() && p.distance(this) <= 8) {
                    this.closestPlayer = p;
                    break;
                }
            }
        }
        if (this.closestPlayer != null && this.closestPlayer.isSpectator()) {
            this.closestPlayer = null;
        }
        if (this.closestPlayer != null) {
            double dX = (this.closestPlayer.x - this.x) / 8.0D;
            double dY = (this.closestPlayer.y + (double) this.closestPlayer.getEyeHeight() / 2.0D - this.y) / 8.0D;
            double dZ = (this.closestPlayer.z - this.z) / 8.0D;
            double d = Math.sqrt(dX * dX + dY * dY + dZ * dZ);
            double diff = 1.0D - d;
            if (diff > 0.0D) {
                diff = diff * diff;
                this.motionX += dX / d * diff * 0.1D;
                this.motionY += dY / d * diff * 0.1D;
                this.motionZ += dZ / d * diff * 0.1D;
            }
        }
        this.move(this.motionX, this.motionY, this.motionZ);
        double friction = 1d - this.getDrag();
        if (this.onGround && (Math.abs(this.motionX) > 0.00001 || Math.abs(this.motionZ) > 0.00001)) {
            friction = this.getLevel().getBlock(this.temporalVector.setComponents((int) Math.floor(this.x), (int) Math.floor(this.y - 1), (int) Math.floor(this.z) - 1)).getFrictionFactor() * friction;
        }
        this.motionX *= friction;
        this.motionY *= 1 - this.getDrag();
        this.motionZ *= friction;
        if (this.onGround) {
            this.motionY *= -0.5;
        }
        this.updateMovement();
        if (this.age > 6000) {
            this.kill();
            hasUpdate = true;
        }
    }
    return hasUpdate || !this.onGround || Math.abs(this.motionX) > 0.00001 || Math.abs(this.motionY) > 0.00001 || Math.abs(this.motionZ) > 0.00001;
}
Also used : Entity(cn.nukkit.entity.Entity) Player(cn.nukkit.Player)

Example 25 with Player

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

the class EntityEnderPearl method onUpdate.

@Override
public boolean onUpdate(int currentTick) {
    if (this.closed) {
        return false;
    }
    this.timing.startTiming();
    boolean hasUpdate = super.onUpdate(currentTick);
    if (this.isCollided && this.shootingEntity instanceof Player) {
        this.shootingEntity.teleport(new Vector3(NukkitMath.floorDouble(this.x) + 0.5, this.y, NukkitMath.floorDouble(this.z) + 0.5), TeleportCause.ENDER_PEARL);
        if ((((Player) this.shootingEntity).getGamemode() & 0x01) == 0)
            this.shootingEntity.attack(5);
        this.level.addSound(this, Sound.MOB_ENDERMEN_PORTAL);
    }
    if (this.age > 1200 || this.isCollided) {
        this.kill();
        hasUpdate = true;
    }
    this.timing.stopTiming();
    return hasUpdate;
}
Also used : Player(cn.nukkit.Player) Vector3(cn.nukkit.math.Vector3)

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