Package org.bukkit.inventory

Examples of org.bukkit.inventory.ItemStack


  @EventHandler
  public void onSmeltSocket(final FurnaceSmeltEvent event) {
    if (!plugin.furnanceMap.containsKey(event.getBlock())
        && !plugin.getItemAPI().isTool(event.getResult().getType()))
      return;
    ItemStack is = plugin.furnanceMap.remove(event.getBlock());
    if (is == null)
      return;
    Material fuel = is.getType();
    if (!is.hasItemMeta() || !is.getItemMeta().hasDisplayName())
      return;
    ChatColor fuelColor = findColor(is.getItemMeta().getDisplayName());

    ItemStack tool = event.getResult();
    ItemStack oldtool = event.getSource();
    ItemMeta metaold;
    if (oldtool.hasItemMeta())
      metaold = oldtool.getItemMeta();
    else
      metaold = Bukkit.getItemFactory().getItemMeta(oldtool.getType());

    if (!metaold.hasLore()) {
      event.setCancelled(true);
      event.setResult(oldtool);
      return;
    }

    boolean namTest = false;
    for (String n : metaold.getLore())
      if (ChatColor.stripColor(n).equalsIgnoreCase("(Socket)")) {
        namTest = true;
      }
    if (!namTest) {
      event.setResult(event.getSource());
      return;
    }

    tool.addUnsafeEnchantments(oldtool.getEnchantments());

    ItemMeta meta = tool.getItemMeta();
    if (fuel.equals(Material.SKULL_ITEM)) {
      ChatColor color = ChatColor.WHITE;
      if (metaold.hasDisplayName())
        color = findColor(metaold.getDisplayName());
      SkullMeta skull = (SkullMeta) is.getItemMeta();
      String skullName = skull.getOwner();
      if ((skullName == null) || (skullName.trim().length() < 1)) {
        switch (is.getData().getData()) {
        // TODO: Fix
        case 4: {
          skullName = "Creeper";
          break;
        }
        case 3: {
          skullName = "Steve";
          break;
        }
        case 0: {
          skullName = "Skeleton";
          break;
        }
        case 1: {
          skullName = "Wither";
          break;
        }
        case 2: {
          skullName = "Zombie";
          break;
        }
        default: {
          skullName = "";
          break;
        }
        }
      }
      String old = null;
      if (metaold.hasDisplayName())
        old = metaold.getDisplayName();
      if (old != null) {
        if (old.contains("'")) {
          old = old.split("'")[1].substring(2);
        }
        metaold.setDisplayName(color + skullName + "'s "
            + ChatColor.stripColor(old));
      }
    }
    List<String> list = new ArrayList<String>();
    for (String s : metaold.getLore()) {
      list.add(s);
    }
    if (list.contains(fuelColor + "(Socket)")) {
      if (plugin.getItemAPI().isArmor(tool.getType())
          && plugin.defenselore.size() > 0) {
        list.remove(fuelColor + "(Socket)");
        String effect = plugin.defenselore.get(plugin.getSingleRandom()
            .nextInt(plugin.defenselore.size()));
        String effectToRemove = null;
        for (String s : list) {
          String[] split = s.split(" ");
          if (split.length <= 1)
            continue;
          String[] splitEffect = effect.split(" ");
          if (splitEffect.length <= 1)
            continue;
          if (ChatColor.stripColor(split[1]).equals(splitEffect[1])) {
            effectToRemove = s;
            int level = getInt(s, 0) + getInt(effect, 0);
            String levelString = (level > 0) ? "+"
                + String.valueOf(level) : String.valueOf(level);
            String newEffect = levelString;
            for (String s2 : splitEffect) {
              if (s2.equals(splitEffect[0]))
                continue;
              newEffect = newEffect + " " + s2;
            }
            effect = newEffect;
          }
        }
        if (effectToRemove != null)
          list.remove(effectToRemove);
        list.add(fuelColor + effect);
      } else if (plugin.getItemAPI().isTool(tool.getType())
          && plugin.offenselore.size() > 0) {
        list.remove(fuelColor + "(Socket)");
        String effect = plugin.offenselore.get(plugin.getSingleRandom()
            .nextInt(plugin.offenselore.size()));
        String effectToRemove = null;
        for (String s : list) {
          String[] split = s.split(" ");
          if (split.length <= 1)
            continue;
          String[] splitEffect = effect.split(" ");
          if (splitEffect.length <= 1)
            continue;
          if (ChatColor.stripColor(split[1]).equals(splitEffect[1])) {
            effectToRemove = s;
            int level = getInt(s, 0) + getInt(effect, 0);
            String levelString = (level > 0) ? "+"
                + String.valueOf(level) : String.valueOf(level);
            String newEffect = levelString;
            for (String s2 : splitEffect) {
              if (s2.equals(splitEffect[0]))
                continue;
              newEffect = newEffect + " " + s2;
            }
            effect = newEffect;
          }
        }
        if (effectToRemove != null)
          list.remove(effectToRemove);
        list.add(fuelColor + effect);
      }
    }
    SocketEnhancementEvent see = new SocketEnhancementEvent(
        event.getSource(), is, tool, ((Furnace) event.getBlock()
            .getState()));
    plugin.getServer().getPluginManager().callEvent(see);
    meta.setDisplayName(metaold.getDisplayName());
    meta.setLore(list);
    tool.setItemMeta(meta);
    tool.setDurability(oldtool.getDurability());
    event.setResult(tool);
    return;
  }
View Full Code Here


      ConfigurationSection cs = fc.getConfigurationSection(name);
      Material mat = Material.matchMaterial(cs.getString("Material"));
      ChatColor color = ChatColor.valueOf(cs.getString("Color")
          .toUpperCase());
      List<String> lore = cs.getStringList("Lore");
      ItemStack tool = new ItemStack(mat);
      List<String> list = new ArrayList<String>();
      for (String s : lore) {
        list.add(ChatColor.translateAlternateColorCodes(
            "&".toCharArray()[0], s));
      }
      ConfigurationSection cs1 = cs
          .getConfigurationSection("Enchantments");
      if (cs1 != null) {
        for (String ench : cs1.getKeys(false)) {
          Enchantment encha = Enchantment.getByName(ench
              .toUpperCase());
          if (encha == null)
            continue;
          tool.addUnsafeEnchantment(encha, cs1.getInt(ench));
        }
      }
      ItemMeta meta = tool.getItemMeta();
      meta.setDisplayName(color + name);
      meta.setLore(list);
      tool.setItemMeta(meta);
      plugin.custom.add(tool);
    }
  }
View Full Code Here

                byte count = ((ByteTag) item.getValue().get("Count")).getValue();
                byte slot = ((ByteTag) item.getValue().get("Slot")).getValue();
                short damage = ((ShortTag) item.getValue().get("Damage")).getValue();
                short id = ((ShortTag) item.getValue().get("id")).getValue();

                stacks[slot] = new ItemStack(id, count, damage);
            }
            return stacks;
        } catch (IOException ex) {
            iConomy.Server.getLogger().log(Level.WARNING, "[iCo/InvDB] error reading inventory {0}: {1}", new Object[]{name, ex.getMessage()});
            return null;
View Full Code Here

        int major = Constants.Nodes.DatabaseMajorItem.getInteger();
        int minor = Constants.Nodes.DatabaseMinorItem.getInteger();

        // Remove all existing items
        for (int i = 0; i < contents.length; ++i) {
            ItemStack item = contents[i];

            if (item != null)
                if (item.getTypeId() == major || item.getTypeId() == minor)
                    contents[i] = null;
        }

        // Re-add balance to inventory
        for (int i = 0; i < contents.length; ++i) {
            if (contents[i] == null) {
                if (balance >= 1) {
                    int add = (int) balance;

                    if (add > Material.getMaterial(major).getMaxStackSize())
                        add = Material.getMaterial(major).getMaxStackSize();

                    contents[i] = new ItemStack(major, add);
                    balance -= add;
                } else if (balance >= 0.01) {
                    int add = (int) (roundTwoDecimals(balance) * 100);

                    if (add > Material.getMaterial(minor).getMaxStackSize())
                        add = Material.getMaterial(minor).getMaxStackSize();

                    contents[i] = new ItemStack(minor, add);
                    balance -= 0.01 * add;
                } else {
                    balance = 0;
                    break;
                }
View Full Code Here

   * @param at location to spawn
   * @param player that placed something
   * @return the spawned Minecart Member, or null if it failed
   */
  public static MinecartMember<?> spawnBy(Location at, Player player) {
    ItemStack item = player.getItemInHand();
    if (LogicUtil.nullOrEmpty(item)) {
      return null;
    }
    EntityType type = Conversion.toMinecartType.convert(item.getType());
    if (type == null) {
      return null;
    }

    // subtract held item
View Full Code Here

        List<ItemStack> drops = new ArrayList<ItemStack>(2);
        if (getProperties().getSpawnItemDrops()) {
          if (TrainCarts.breakCombinedCarts) {
            drops.addAll(this.entity.getBrokenDrops());
          } else {
            drops.add(new ItemStack(this.entity.getCombinedItem()));
          }
        }
        VehicleDestroyEvent destroyEvent = new VehicleDestroyEvent(this.entity.getEntity(), damager);
        if (CommonUtil.callEvent(destroyEvent).isCancelled()) {
          this.entity.setDamage(40);
View Full Code Here

    return new ItemAnimatedInventory(inventory, self, other);
  }

  @Override
  public void setItem(int index, ItemStack newitem) {
    ItemStack olditem = this.original[index];
    this.source.setItem(index, newitem);
    Object self = this.getSelfAt(index);
    this.original[index] = ItemUtil.cloneItem(newitem);
    if (olditem == null) {
      if (newitem != null) {
        ItemAnimation.start(other, self, newitem);
      }
    } else {
      if (newitem == null) {
        ItemAnimation.start(self, other, olditem);
      } else {
        //same type?
        if (ItemUtil.equalsIgnoreAmount(olditem, newitem)) {
          // Obtain an item stack (trans) to do an animation with
          // Switch between self and other based on changed amount
          ItemStack trans = ItemUtil.cloneItem(newitem);
          int newAmount = trans.getAmount() - olditem.getAmount();
          if (newAmount > 0) {
            trans.setAmount(newAmount);
            ItemAnimation.start(other, self, trans);
          } else if (newAmount < 0) {
            trans.setAmount(-newAmount);
            ItemAnimation.start(self, other, trans);
          }
        } else {
          //swap
          ItemAnimation.start(self, other, olditem);
View Full Code Here

    final int startAmount = parser.hasAmount() ? parser.getAmount() : Integer.MAX_VALUE;
    int amountToTransfer = startAmount;

    // Transfer heatable items
    for (ItemParser p : heatables) {
      ItemStack item = to.getItem(0);
      if (item == null) {
        item = ItemUtil.emptyItem();
      }
      amountToTransfer -= ItemUtil.transfer(from, item, p, amountToTransfer);
      to.setItem(0, item);
    }

    // Transfer fuel (requires manual limiting if no amount is set)
    for (ItemParser p : fuels) {
      if (p == null) {
        continue;
      }
      if (amountToTransfer == 0) {
        break;
      }

      int transferCount = amountToTransfer;
      ItemStack fuel = to.getItem(1);
      if (fuel == null) {
        fuel = ItemUtil.emptyItem();
      }
      if (!p.hasAmount()) {
        // Fill the minimal amount needed to burn all the heatables in the furnace
        ItemStack cookeditem = to.getItem(0);
        if (cookeditem == null || cookeditem.getType() == Material.AIR) continue;
        int fuelNeeded = cookeditem.getAmount() * 200;
        if (fuelNeeded == 0) continue; //nothing to cook
        //===================================================
        fuelNeeded -= toFurnace.getCookTime();
        if (fuelNeeded <= 0) continue; //we got enough
        //===================================================
View Full Code Here

      long time = System.currentTimeMillis();
      long clickInterval = time - lastHitTime;
      lastHitTimes.put(event.getPlayer(), time);

      // Execute the click
      ItemStack item = event.getPlayer().getItemInHand();
      if (!onRightClick(clickedBlock, event.getPlayer(), item, clickInterval)) {
        event.setUseItemInHand(Result.DENY);
        event.setUseInteractedBlock(Result.DENY);
        event.setCancelled(true);
      }
View Full Code Here

    SignAction.handleBuild(event);
    if (event.isCancelled()) {
      // Properly give the sign back to the player that placed it
      // If this is impossible for whatever reason, just drop it
      if (!Util.canInstantlyBuild(event.getPlayer())) {
        ItemStack item = event.getPlayer().getItemInHand();
        if (LogicUtil.nullOrEmpty(item)) {
          event.getPlayer().setItemInHand(new ItemStack(Material.SIGN, 1));
        } else if (MaterialUtil.isType(item, Material.SIGN) && item.getAmount() < ItemUtil.getMaxSize(item)) {
          ItemUtil.addAmount(item, 1);
          event.getPlayer().setItemInHand(item);
        } else {
          // Drop the item
          Location loc = event.getBlock().getLocation().add(0.5, 0.5, 0.5);
          loc.getWorld().dropItemNaturally(loc, new ItemStack(Material.SIGN, 1));
        }
      }

      // Break the block
      event.getBlock().setType(Material.AIR);
View Full Code Here

TOP

Related Classes of org.bukkit.inventory.ItemStack

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.