package com.cricketcraft.chisel.compat.fmp;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import codechicken.lib.vec.BlockCoord;
import codechicken.multipart.TMultiPart;
import codechicken.multipart.TileMultipart;
import codechicken.multipart.minecraft.TorchPart;
import com.cricketcraft.chisel.block.BlockCarvableTorch;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class ItemBlockChiselTorchPart extends ItemBlock {
private BlockCarvableTorch torch;
// Blame FML for the duped params, these references will always be the same
public ItemBlockChiselTorchPart(Block block, BlockCarvableTorch torch) {
super(block);
this.torch = torch;
}
@SideOnly(Side.CLIENT)
public boolean func_150936_a(World world, int x, int y, int z, int side, EntityPlayer player, ItemStack stack) {
return (placePart(world, new BlockCoord(x, y, z).offset(side), stack, side, false)) || (super.func_150936_a(world, x, y, z, side, player, stack));
}
public TMultiPart createMultiPart(World world, BlockCoord pos, ItemStack item, int side) {
return new PartChiselTorch(torch.idx, TorchPart.sideMetaMap[side ^ 1]);
}
public boolean placePart(World world, BlockCoord pos, ItemStack item, int side, boolean doPlace) {
TileMultipart tile = TileMultipart.getOrConvertTile(world, pos);
if (tile == null) {
return false;
}
TMultiPart part = createMultiPart(world, pos, item, side);
if (part == null) {
return false;
}
if (tile.canAddPart(part)) {
if (doPlace) {
TileMultipart.addPart(world, pos, part);
}
return true;
}
return false;
}
@Override
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
Block block = world.getBlock(x, y, z);
BlockCoord pos = new BlockCoord(x, y, z);
if (!block.isReplaceable(world, x, y, z)) {
pos = new BlockCoord(x, y, z).offset(side);
}
if (placePart(world, pos, stack, side, !world.isRemote)) {
world.playSoundEffect(pos.x + 0.5F, pos.y + 0.5F, pos.z + 0.5F, field_150939_a.stepSound.func_150496_b(), (block.stepSound.getVolume() + 1.0F) / 2.0F, block.stepSound.getPitch() * 0.8F);
stack.stackSize -= 1;
return true;
}
return super.onItemUse(stack, player, world, x, y, z, side, hitX, hitY, hitZ);
}
}