Search in sources :

Example 11 with Item

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

the class BlockEntityHopper method transferItemsOut.

public boolean transferItemsOut() {
    if (this.inventory.isEmpty()) {
        return false;
    }
    if (!(this.level.getBlockEntity(this.down()) instanceof BlockEntityHopper)) {
        BlockEntity be = this.level.getBlockEntity(this.getSide(BlockFace.fromIndex(this.level.getBlockDataAt(this.getFloorX(), this.getFloorY(), this.getFloorZ()))));
        if (be instanceof InventoryHolder) {
            Inventory inventory = ((InventoryHolder) be).getInventory();
            if (inventory.isFull()) {
                return false;
            }
            for (int i = 0; i < inventory.getSize(); i++) {
                Item item = this.inventory.getItem(i);
                if (item.getId() != 0 && item.getCount() > 0) {
                    Item itemToAdd = item.clone();
                    itemToAdd.setCount(1);
                    Item[] items = inventory.addItem(itemToAdd);
                    if (items.length > 0) {
                        continue;
                    }
                    // whats wrong?
                    inventory.sendContents(inventory.getViewers());
                    item.count--;
                    this.inventory.setItem(i, item);
                    return true;
                }
            }
        }
    // TODO: check for minecart
    }
    return false;
}
Also used : EntityItem(cn.nukkit.entity.item.EntityItem) Item(cn.nukkit.item.Item) InventoryHolder(cn.nukkit.inventory.InventoryHolder) HopperInventory(cn.nukkit.inventory.HopperInventory) Inventory(cn.nukkit.inventory.Inventory)

Example 12 with Item

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

the class BlockEntityBrewingStand method onUpdate.

@Override
public boolean onUpdate() {
    if (closed) {
        return false;
    }
    boolean ret = false;
    Item ingredient = this.inventory.getIngredient();
    boolean canBrew = false;
    Item fuel = this.getInventory().getFuel();
    if (this.fuelAmount <= 0 && fuel.getId() == Item.BLAZE_POWDER && fuel.getCount() > 0) {
        fuel.count--;
        this.fuelAmount = 20;
        this.fuelTotal = 20;
        this.inventory.setFuel(fuel);
        this.sendFuel();
    }
    if (this.fuelAmount > 0) {
        for (int i = 1; i <= 3; i++) {
            if (this.inventory.getItem(i).getId() == Item.POTION) {
                canBrew = true;
            }
        }
        if (this.brewTime <= MAX_BREW_TIME && canBrew && ingredient.getCount() > 0) {
            if (!this.checkIngredient(ingredient)) {
                canBrew = false;
            }
        } else {
            canBrew = false;
        }
    }
    if (canBrew) {
        if (this.brewTime == MAX_BREW_TIME) {
            this.sendBrewTime();
            StartBrewEvent e = new StartBrewEvent(this);
            this.server.getPluginManager().callEvent(e);
            if (e.isCancelled()) {
                return false;
            }
        }
        this.brewTime--;
        if (this.brewTime <= 0) {
            // 20 seconds
            BrewEvent e = new BrewEvent(this);
            this.server.getPluginManager().callEvent(e);
            if (!e.isCancelled()) {
                for (int i = 1; i <= 3; i++) {
                    Item potion = this.inventory.getItem(i);
                    BrewingRecipe recipe = Server.getInstance().getCraftingManager().matchBrewingRecipe(ingredient, potion);
                    if (recipe != null) {
                        this.inventory.setItem(i, recipe.getResult());
                    }
                }
                ingredient.count--;
                this.inventory.setIngredient(ingredient);
                this.fuelAmount--;
                this.sendFuel();
            }
            this.brewTime = MAX_BREW_TIME;
        }
        ret = true;
    } else {
        this.brewTime = MAX_BREW_TIME;
    }
    // this.sendBrewTime();
    lastUpdate = System.currentTimeMillis();
    return ret;
}
Also used : Item(cn.nukkit.item.Item) StartBrewEvent(cn.nukkit.event.inventory.StartBrewEvent) BrewEvent(cn.nukkit.event.inventory.BrewEvent) StartBrewEvent(cn.nukkit.event.inventory.StartBrewEvent) BrewingRecipe(cn.nukkit.inventory.BrewingRecipe)

Example 13 with Item

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

the class BlockSkull method getDrops.

@Override
public Item[] getDrops(Item item) {
    BlockEntity blockEntity = getLevel().getBlockEntity(this);
    int dropMeta = 0;
    if (blockEntity != null)
        dropMeta = blockEntity.namedTag.getByte("SkullType");
    return new Item[] { new ItemSkull(dropMeta) };
}
Also used : Item(cn.nukkit.item.Item) BlockEntity(cn.nukkit.blockentity.BlockEntity) ItemSkull(cn.nukkit.item.ItemSkull)

Example 14 with Item

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

the class EnchantCommand method execute.

@Override
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
    if (!this.testPermission(sender)) {
        return true;
    }
    if (args.length < 2) {
        sender.sendMessage(new TranslationContainer("commands.generic.usage", this.usageMessage));
        return true;
    }
    Player player = sender.getServer().getPlayer(args[0]);
    if (player == null) {
        sender.sendMessage(new TranslationContainer(TextFormat.RED + "%commands.generic.player.notFound"));
        return true;
    }
    int enchantId;
    int enchantLevel;
    try {
        enchantId = getIdByName(args[1]);
        enchantLevel = args.length == 3 ? Integer.parseInt(args[2]) : 1;
    } catch (NumberFormatException e) {
        sender.sendMessage(new TranslationContainer("commands.generic.usage", this.usageMessage));
        return true;
    }
    Enchantment enchantment = Enchantment.getEnchantment(enchantId);
    if (enchantment == null) {
        sender.sendMessage(new TranslationContainer("commands.enchant.notFound", String.valueOf(enchantId)));
        return true;
    }
    enchantment.setLevel(enchantLevel);
    Item item = player.getInventory().getItemInHand();
    if (item.getId() <= 0) {
        sender.sendMessage(new TranslationContainer("commands.enchant.noItem"));
        return true;
    }
    item.addEnchantment(enchantment);
    player.getInventory().setItemInHand(item);
    Command.broadcastCommandMessage(sender, new TranslationContainer("%commands.enchant.success"));
    return true;
}
Also used : Item(cn.nukkit.item.Item) Player(cn.nukkit.Player) TranslationContainer(cn.nukkit.lang.TranslationContainer) Enchantment(cn.nukkit.item.enchantment.Enchantment)

Example 15 with Item

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

the class EntityHumanType method saveNBT.

@Override
public void saveNBT() {
    super.saveNBT();
    this.namedTag.putList(new ListTag<CompoundTag>("Inventory"));
    if (this.inventory != null) {
        for (int slot = 0; slot < 9; ++slot) {
            this.namedTag.getList("Inventory", CompoundTag.class).add(new CompoundTag().putByte("Count", 0).putShort("Damage", 0).putByte("Slot", slot).putByte("TrueSlot", -1).putShort("id", 0));
        }
        int slotCount = Player.SURVIVAL_SLOTS + 9;
        for (int slot = 9; slot < slotCount; ++slot) {
            Item item = this.inventory.getItem(slot - 9);
            this.namedTag.getList("Inventory", CompoundTag.class).add(NBTIO.putItemHelper(item, slot));
        }
        for (int slot = 100; slot < 104; ++slot) {
            Item item = this.inventory.getItem(this.inventory.getSize() + slot - 100);
            if (item != null && item.getId() != Item.AIR) {
                this.namedTag.getList("Inventory", CompoundTag.class).add(NBTIO.putItemHelper(item, slot));
            }
        }
    }
    this.namedTag.putList(new ListTag<CompoundTag>("EnderItems"));
    if (this.enderChestInventory != null) {
        for (int slot = 0; slot < 27; ++slot) {
            Item item = this.enderChestInventory.getItem(slot);
            if (item != null && item.getId() != Item.AIR) {
                this.namedTag.getList("EnderItems", CompoundTag.class).add(NBTIO.putItemHelper(item, slot));
            }
        }
    }
}
Also used : Item(cn.nukkit.item.Item) CompoundTag(cn.nukkit.nbt.tag.CompoundTag)

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