/*
* Copyright (c) CovertJaguar, 2014 http://railcraft.info
*
* This code is the property of CovertJaguar
* and may only be used with explicit written
* permission unless otherwise specified on the
* license page at http://railcraft.info/wiki/info:license.
*/
package mods.railcraft.common.plugins.forestry;
import cpw.mods.fml.common.Optional;
import forestry.api.storage.IBackpackDefinition;
import mods.railcraft.common.items.RailcraftItem;
import mods.railcraft.common.util.inventory.InvTools;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.StatCollector;
import net.minecraftforge.oredict.OreDictionary;
import java.util.ArrayList;
import java.util.List;
/**
* @author CovertJaguar <http://www.railcraft.info>
*/
@Optional.Interface(iface = "forestry.api.storage.IBackpackDefinition", modid = "Forestry")
public abstract class BaseBackpack implements IBackpackDefinition {
protected List<ItemStack> items = new ArrayList<ItemStack>(50);
@Override
public void addValidItem(ItemStack stack) {
addItem(stack);
}
@Override
public void addValidItems(List<ItemStack> validItems) {
for (ItemStack stack : validItems) {
addItem(stack);
}
}
public void addItem(ItemStack stack) {
if (stack == null) return;
items.add(stack);
}
public void addItem(RailcraftItem item) {
if (item == null) return;
items.add(item.getWildcard());
}
public void addItem(Item item) {
if (item == null) return;
items.add(new ItemStack(item, 1, OreDictionary.WILDCARD_VALUE));
}
public void addItem(Block block) {
if (block == null) return;
items.add(new ItemStack(block, 1, OreDictionary.WILDCARD_VALUE));
}
@Deprecated
@Optional.Method(modid = "Forestry")
public boolean isValidItem(EntityPlayer player, ItemStack pickup) {
return isValidItem(pickup);
}
@Override
public boolean isValidItem(ItemStack pickup) {
for (ItemStack stack : items) {
if (InvTools.isItemEqualIgnoreNBT(stack, pickup))
return true;
}
return false;
}
@Deprecated
@Optional.Method(modid = "Forestry")
public String getName() {
return "Update Forestry!";
}
@Override
public String getName(ItemStack backpack) {
Item item = backpack.getItem();
String name = ("" + StatCollector.translateToLocal(item.getUnlocalizedNameInefficiently(backpack) + ".name")).trim();
if (backpack.stackTagCompound != null && backpack.stackTagCompound.hasKey("display", 10)) {
NBTTagCompound nbt = backpack.stackTagCompound.getCompoundTag("display");
if (nbt.hasKey("Name", 8))
name = nbt.getString("Name");
}
return name;
}
}