resonant-induction/archive/java/resonantinduction/old/transport/imprinter/ItemImprinter.java
2014-01-11 17:44:07 +08:00

127 lines
3.8 KiB
Java

package resonantinduction.old.transport.imprinter;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.IProjectile;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import resonantinduction.core.Reference;
import resonantinduction.core.ResonantInductionTabs;
import resonantinduction.core.Settings;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class ItemImprinter extends Item
{
public ItemImprinter(int id)
{
super(Settings.CONFIGURATION.getItem("imprint", id).getInt());
this.setUnlocalizedName("imprint");
this.setCreativeTab(ResonantInductionTabs.CORE);
this.setHasSubtypes(true);
this.maxStackSize = 1;
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister par1IconRegister)
{
this.itemIcon = par1IconRegister.registerIcon(Reference.PREFIX + "imprint");
}
@Override
public int getItemStackLimit()
{
return 1;
}
@Override
public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity)
{
if (entity != null && !(entity instanceof IProjectile) && !(entity instanceof EntityPlayer))
{
String stringName = EntityList.getEntityString(entity);
// TODO add to filter
// player.sendChatToPlayer("Target: " + stringName);
return true;
}
return false;
}
public boolean itemInteractionForEntity(ItemStack par1ItemStack, EntityLivingBase par2EntityLiving)
{
return false;
}
@Override
public void addInformation(ItemStack itemStack, EntityPlayer par2EntityPlayer, List list, boolean par4)
{
List<ItemStack> filterItems = getFilters(itemStack);
if (filterItems.size() > 0)
{
for (ItemStack filterItem : filterItems)
{
list.add(filterItem.getDisplayName());
}
}
else
{
list.add("No filters");
}
}
/** Saves the list of items to filter out inside. */
public static void setFilters(ItemStack itemStack, ArrayList<ItemStack> filterStacks)
{
if (itemStack.getTagCompound() == null)
{
itemStack.setTagCompound(new NBTTagCompound());
}
NBTTagList nbt = new NBTTagList();
for (int i = 0; i < filterStacks.size(); ++i)
{
if (filterStacks.get(i) != null)
{
NBTTagCompound newCompound = new NBTTagCompound();
newCompound.setByte("Slot", (byte) i);
filterStacks.get(i).writeToNBT(newCompound);
nbt.appendTag(newCompound);
}
}
itemStack.getTagCompound().setTag("Items", nbt);
}
public static ArrayList<ItemStack> getFilters(ItemStack itemStack)
{
ArrayList<ItemStack> filterStacks = new ArrayList<ItemStack>();
if (itemStack.getTagCompound() == null)
{
itemStack.setTagCompound(new NBTTagCompound());
}
NBTTagCompound nbt = itemStack.getTagCompound();
NBTTagList tagList = nbt.getTagList("Items");
for (int i = 0; i < tagList.tagCount(); ++i)
{
NBTTagCompound var4 = (NBTTagCompound) tagList.tagAt(i);
byte var5 = var4.getByte("Slot");
filterStacks.add(ItemStack.loadItemStackFromNBT(var4));
}
return filterStacks;
}
}