package eiteam.esteemedinnovation.armor.exosuit.steam.upgrades;
import eiteam.esteemedinnovation.api.ChargableUtility;
import eiteam.esteemedinnovation.api.exosuit.ExosuitSlot;
import eiteam.esteemedinnovation.commons.util.OreDictHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.event.entity.player.EntityItemPickupEvent;
import static eiteam.esteemedinnovation.armor.ArmorModule.resource;
import static eiteam.esteemedinnovation.storage.StorageModule.ITEM_CANISTER;
public class ItemCanningMachineUpgrade extends ItemSteamExosuitUpgrade {
public ItemCanningMachineUpgrade() {
super(ExosuitSlot.LEGS_HIPS, resource("canner"), null, 1);
}
@Override
public void onPlayerPickupItem(EntityItemPickupEvent event, ItemStack armorStack, EntityEquipmentSlot slot) {
EntityPlayer player = (EntityPlayer) event.getEntityLiving();
if (player.worldObj.isRemote) {
return;
}
if (ChargableUtility.hasPower(player, 10)) {
ItemStack item = event.getItem().getEntityItem();
if (item.hasTagCompound() && item.getTagCompound().hasKey("Canned")) {
return;
}
boolean isCannable = OreDictHelper.mapHasItem(OreDictHelper.ingots, item.getItem()) ||
OreDictHelper.mapHasItem(OreDictHelper.gems, item.getItem()) ||
OreDictHelper.listHasItem(OreDictHelper.nuggets, item.getItem());
if (!isCannable) {
return;
}
int numCans = 0;
for (int i = 0; i < player.inventory.getSizeInventory(); i++) {
ItemStack stackInSlot = player.inventory.getStackInSlot(i);
if (stackInSlot != null && stackInSlot.getItem() == ITEM_CANISTER) {
numCans += stackInSlot.stackSize;
}
}
if (numCans >= item.stackSize) {
if (!item.hasTagCompound()) {
item.setTagCompound(new NBTTagCompound());
}
item.getTagCompound().setInteger("Canned", 0);
for (int i = 0; i < item.stackSize; i++) {
eiteam.esteemedinnovation.api.util.InventoryUtility.consumeInventoryItem(player, ITEM_CANISTER);
player.inventoryContainer.detectAndSendChanges();
}
} else if (numCans != 0) {
item.stackSize -= numCans;
event.getItem().setEntityItemStack(item);
ItemStack item2 = item.copy();
item2.stackSize = numCans;
if (!item2.hasTagCompound()) {
item2.setTagCompound(new NBTTagCompound());
}
item2.getTagCompound().setInteger("Canned", 0);
for (int i = 0; i < numCans; i++) {
eiteam.esteemedinnovation.api.util.InventoryUtility.consumeInventoryItem(player, ITEM_CANISTER);
player.inventoryContainer.detectAndSendChanges();
}
}
}
}
}