/**
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
* http://www.mod-buildcraft.com
* <p/>
* BuildCraft is distributed under the terms of the Minecraft Mod Public
* License 1.0, or MMPL. Please check the contents of the license located in
* http://www.mod-buildcraft.com/MMPL-1.0.txt
*/
package buildcraft.transport.pluggable;
import java.util.List;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.transport.IPipe;
import buildcraft.api.transport.IPipeTile;
import buildcraft.api.transport.pluggable.IPipePluggableItem;
import buildcraft.api.transport.pluggable.PipePluggable;
import buildcraft.core.lib.items.ItemBuildCraft;
import buildcraft.core.lib.utils.ColorUtils;
import buildcraft.core.lib.utils.StringUtils;
public class ItemLens extends ItemBuildCraft implements IPipePluggableItem {
public ItemLens() {
super();
setHasSubtypes(true);
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIconFromDamageForRenderPass(int meta, int pass) {
switch (meta) {
case 32:
return pass == 0 ? icons[3] : icons[0];
case 33:
return pass == 0 ? icons[3] : icons[2];
default:
return icons[meta >= 16 ? (1 + (pass & 1)) : (1 - (pass & 1))];
}
}
@Override
@SideOnly(Side.CLIENT)
public boolean requiresMultipleRenderPasses() {
return true;
}
public int getDye(ItemStack stack) {
return 15 - (stack.getItemDamage() & 15);
}
@Override
@SideOnly(Side.CLIENT)
public int getColorFromItemStack(ItemStack stack, int pass) {
if (stack.getItemDamage() >= 32) {
return 16777215;
}
return pass == 0 ? ColorUtils.getRGBColor(getDye(stack)) : 16777215;
}
@Override
public String getItemStackDisplayName(ItemStack itemstack) {
if (itemstack.getItemDamage() >= 32) {
return StringUtils.localize(itemstack.getItemDamage() == 33 ? "item.Filter.name" : "item.Lens.name") + " (" + StringUtils.localize("color.clear") + ")";
} else {
return StringUtils.localize(itemstack.getItemDamage() >= 16 ? "item.Filter.name" : "item.Lens.name") + " (" + StringUtils.localize("color." + ColorUtils.getName(getDye(itemstack))) + ")";
}
}
@Override
public boolean doesSneakBypassUse(World world, int x, int y, int z, EntityPlayer player) {
return true;
}
@Override
public String[] getIconNames() {
return new String[]{"lens/lensFrame", "lens/transparent", "lens/filterFrame", "lens/clear"};
}
@SuppressWarnings({"rawtypes", "unchecked"})
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, List itemList) {
for (int i = 0; i < 34; i++) {
itemList.add(new ItemStack(item, 1, i));
}
}
@Override
public PipePluggable createPipePluggable(IPipe pipe, ForgeDirection side, ItemStack stack) {
if (pipe.getTile().getPipeType() == IPipeTile.PipeType.ITEM) {
return new LensPluggable(stack);
} else {
return null;
}
}
}