Search in sources :

Example 26 with Item

use of cn.nukkit.item.Item in project Nukkit by Nukkit.

the class CraftingGrid method removeFromAll.

public void removeFromAll(Item item) {
    int count = item.getCount();
    for (int i = 0; i < this.size; i++) {
        Item target = this.getItem(i);
        if (target.equals(item, true, false)) {
            count--;
            target.count--;
            this.setItem(i, target);
            if (count <= 0)
                break;
        }
    }
    if (count != 0) {
        MainLogger.getLogger().debug("Unexpected ingredient count (" + count + ") in crafting grid");
    }
}
Also used : Item(cn.nukkit.item.Item)

Example 27 with Item

use of cn.nukkit.item.Item in project Nukkit by Nukkit.

the class PlayerInventory method sendArmorSlot.

public void sendArmorSlot(int index, Player[] players) {
    Item[] armor = this.getArmorContents();
    MobArmorEquipmentPacket pk = new MobArmorEquipmentPacket();
    pk.eid = this.getHolder().getId();
    pk.slots = armor;
    pk.encode();
    pk.isEncoded = true;
    for (Player player : players) {
        if (player.equals(this.getHolder())) {
            InventorySlotPacket pk2 = new InventorySlotPacket();
            pk2.inventoryId = InventoryContentPacket.SPECIAL_ARMOR;
            pk2.slot = index - this.getSize();
            pk2.item = this.getItem(index);
            player.dataPacket(pk2);
        } else {
            player.dataPacket(pk);
        }
    }
}
Also used : Item(cn.nukkit.item.Item) Player(cn.nukkit.Player) InventorySlotPacket(cn.nukkit.network.protocol.InventorySlotPacket) MobArmorEquipmentPacket(cn.nukkit.network.protocol.MobArmorEquipmentPacket)

Example 28 with Item

use of cn.nukkit.item.Item in project Nukkit by Nukkit.

the class PlayerInventory method clear.

@Override
public boolean clear(int index, boolean send) {
    if (this.slots.containsKey(index)) {
        Item item = new ItemBlock(new BlockAir(), null, 0);
        Item old = this.slots.get(index);
        if (index >= this.getSize() && index < this.size) {
            EntityArmorChangeEvent ev = new EntityArmorChangeEvent(this.getHolder(), old, item, index);
            Server.getInstance().getPluginManager().callEvent(ev);
            if (ev.isCancelled()) {
                if (index >= this.size) {
                    this.sendArmorSlot(index, this.getViewers());
                } else {
                    this.sendSlot(index, this.getViewers());
                }
                return false;
            }
            item = ev.getNewItem();
        } else {
            EntityInventoryChangeEvent ev = new EntityInventoryChangeEvent(this.getHolder(), old, item, index);
            Server.getInstance().getPluginManager().callEvent(ev);
            if (ev.isCancelled()) {
                if (index >= this.size) {
                    this.sendArmorSlot(index, this.getViewers());
                } else {
                    this.sendSlot(index, this.getViewers());
                }
                return false;
            }
            item = ev.getNewItem();
        }
        if (item.getId() != Item.AIR) {
            this.slots.put(index, item.clone());
        } else {
            this.slots.remove(index);
        }
        this.onSlotChange(index, old, send);
    }
    return true;
}
Also used : BlockAir(cn.nukkit.block.BlockAir) Item(cn.nukkit.item.Item) EntityArmorChangeEvent(cn.nukkit.event.entity.EntityArmorChangeEvent) EntityInventoryChangeEvent(cn.nukkit.event.entity.EntityInventoryChangeEvent) ItemBlock(cn.nukkit.item.ItemBlock)

Example 29 with Item

use of cn.nukkit.item.Item in project Nukkit by Nukkit.

the class PlayerInventory method setArmorContents.

public void setArmorContents(Item[] items) {
    if (items.length < 4) {
        Item[] newItems = new Item[4];
        System.arraycopy(items, 0, newItems, 0, items.length);
        items = newItems;
    }
    for (int i = 0; i < 4; ++i) {
        if (items[i] == null) {
            items[i] = new ItemBlock(new BlockAir(), null, 0);
        }
        if (items[i].getId() == Item.AIR) {
            this.clear(this.getSize() + i);
        } else {
            this.setItem(this.getSize() + i, items[i]);
        }
    }
}
Also used : BlockAir(cn.nukkit.block.BlockAir) Item(cn.nukkit.item.Item) ItemBlock(cn.nukkit.item.ItemBlock)

Example 30 with Item

use of cn.nukkit.item.Item in project Nukkit by Nukkit.

the class PlayerInventory method sendArmorContents.

public void sendArmorContents(Player[] players) {
    Item[] armor = this.getArmorContents();
    MobArmorEquipmentPacket pk = new MobArmorEquipmentPacket();
    pk.eid = this.getHolder().getId();
    pk.slots = armor;
    pk.encode();
    pk.isEncoded = true;
    for (Player player : players) {
        if (player.equals(this.getHolder())) {
            InventoryContentPacket pk2 = new InventoryContentPacket();
            pk2.inventoryId = InventoryContentPacket.SPECIAL_ARMOR;
            pk2.slots = armor;
            player.dataPacket(pk2);
        } else {
            player.dataPacket(pk);
        }
    }
}
Also used : Item(cn.nukkit.item.Item) Player(cn.nukkit.Player) MobArmorEquipmentPacket(cn.nukkit.network.protocol.MobArmorEquipmentPacket) InventoryContentPacket(cn.nukkit.network.protocol.InventoryContentPacket)

Aggregations

Item (cn.nukkit.item.Item)64 Enchantment (cn.nukkit.item.enchantment.Enchantment)13 Player (cn.nukkit.Player)10 ItemBlock (cn.nukkit.item.ItemBlock)10 BlockAir (cn.nukkit.block.BlockAir)8 Random (java.util.Random)7 BlockEntity (cn.nukkit.blockentity.BlockEntity)6 Entity (cn.nukkit.entity.Entity)5 Block (cn.nukkit.block.Block)4 EntityItem (cn.nukkit.entity.item.EntityItem)4 EntityInventoryChangeEvent (cn.nukkit.event.entity.EntityInventoryChangeEvent)4 Inventory (cn.nukkit.inventory.Inventory)3 InventoryHolder (cn.nukkit.inventory.InventoryHolder)3 BlockEntityItemFrame (cn.nukkit.blockentity.BlockEntityItemFrame)2 EntityArmorChangeEvent (cn.nukkit.event.entity.EntityArmorChangeEvent)2 EntityDamageByEntityEvent (cn.nukkit.event.entity.EntityDamageByEntityEvent)2 EntityDamageEvent (cn.nukkit.event.entity.EntityDamageEvent)2 HopperInventory (cn.nukkit.inventory.HopperInventory)2 InventoryAction (cn.nukkit.inventory.transaction.action.InventoryAction)2 TranslationContainer (cn.nukkit.lang.TranslationContainer)2