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;
}
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;
}
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) };
}
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;
}
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));
}
}
}
}
Aggregations