Package com.bergerkiller.bukkit.tc.statements

Source Code of com.bergerkiller.bukkit.tc.statements.StatementItems

package com.bergerkiller.bukkit.tc.statements;

import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;

import com.bergerkiller.bukkit.common.inventory.ItemParser;
import com.bergerkiller.bukkit.common.utils.ItemUtil;
import com.bergerkiller.bukkit.tc.Util;
import com.bergerkiller.bukkit.tc.controller.MinecartGroup;
import com.bergerkiller.bukkit.tc.controller.MinecartMember;
import com.bergerkiller.bukkit.tc.controller.type.MinecartMemberChest;
import com.bergerkiller.bukkit.tc.events.SignActionEvent;

public class StatementItems extends Statement {

  @Override
  public boolean match(String text) {
    return text.startsWith("items");
  }

  @Override
  public boolean handle(MinecartMember<?> member, String text, SignActionEvent event) {
    final Inventory inventory = getInventory(member);
    if (inventory == null) {
      return false;
    }
    int count = ItemUtil.getItemCount(getInventory(member), -1, -1);
    return Util.evaluate(count, text);
  }

  @Override
  public boolean handle(MinecartGroup group, String text, SignActionEvent event) {
    final Inventory inventory = getInventory(group);
    if (inventory == null) {
      return false;
    }
    int count = ItemUtil.getItemCount(inventory, -1, -1);
    return Util.evaluate(count, text);
  }

  @Override
  public boolean matchArray(String text) {
    return text.equals("i");
  }
 
  public boolean handleInventory(Inventory inv, String[] items) {
    if (inv == null) {
      return false;
    }
    int opidx;
    int count;
    for (String itemname : items) {
      opidx = Util.getOperatorIndex(itemname);
      String itemnamefixed;
      if (opidx > 0) {
        itemnamefixed = itemname.substring(0, opidx);
      } else {
        itemnamefixed = itemname;
      }
      for (ItemParser parser : Util.getParsers(itemnamefixed)) {
        count = ItemUtil.getItemCount(inv, parser.getTypeId(), parser.getData());
        if (opidx == -1) {
          if (parser.hasAmount()) {
            if (count >= parser.getAmount()) {
              return true;
            }
          } else if (count > 0) {
            return true;
          }
        } else if (Util.evaluate(count, itemname)) {
          return true;
        }
      }
      // Check for 'special' named items
      count = 0;
      for (ItemStack item : inv) {
        if (item != null && ItemUtil.hasDisplayName(item) && ItemUtil.getDisplayName(item).equals(itemnamefixed)) {
          count += item.getAmount();
        }
      }
      if (Util.evaluate(count, itemname)) {
        return true;
      }
    }
    return false;
  }

  public Inventory getInventory(MinecartMember<?> member) {
    if (member instanceof MinecartMemberChest) {
      return ((MinecartMemberChest) member).getEntity().getInventory();
    } else {
      return null;
    }
  }

  public Inventory getInventory(MinecartGroup group) {
    return group.getInventory();
  }

  @Override
  public boolean handleArray(MinecartMember<?> member, String[] items, SignActionEvent event) {
    return handleInventory(getInventory(member), items);
  }
 
  @Override
  public boolean handleArray(MinecartGroup group, String[] items, SignActionEvent event) {
    return handleInventory(getInventory(group), items);
  }
}
TOP

Related Classes of com.bergerkiller.bukkit.tc.statements.StatementItems

TOP
Copyright © 2018 www.massapi.com. 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.