package openblocks.common.item;
import com.google.common.base.Objects;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
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.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import openblocks.OpenBlocks;
import openblocks.common.Stencil;
import openblocks.common.block.BlockCanvas;
import openblocks.common.tileentity.TileEntityCanvas;
import openmods.utils.render.PaintUtils;
public class ItemStencil extends Item {
public ItemStencil() {
setCreativeTab(OpenBlocks.tabOpenBlocks);
setHasSubtypes(true);
}
@Override
@SideOnly(Side.CLIENT)
public int getSpriteNumber() {
return 0;
}
@Override
public IIcon getIconFromDamage(int dmg) {
return Objects.firstNonNull(Stencil.values()[dmg].getCoverBlockIcon(), itemIcon);
}
@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List list) {
for (Stencil stencil : Stencil.values()) {
list.add(new ItemStack(item, 1, stencil.ordinal()));
}
}
@Override
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
if (PaintUtils.instance.isAllowedToReplace(world, x, y, z)) {
BlockCanvas.replaceBlock(world, x, y, z);
}
TileEntity te = world.getTileEntity(x, y, z);
if (te instanceof TileEntityCanvas) {
TileEntityCanvas canvas = (TileEntityCanvas)te;
int stencilId = stack.getItemDamage();
Stencil stencil;
try {
stencil = Stencil.VALUES[stencilId];
} catch (ArrayIndexOutOfBoundsException e) {
return false;
}
if (canvas.useStencil(side, stencil)) stack.stackSize--;
return true;
}
return false;
}
}