package net.tropicraft.block;
import java.util.Random;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.tropicraft.block.tileentity.TileEntitySifter;
import net.tropicraft.factory.TileEntityFactory;
import net.tropicraft.registry.TCBlockRegistry;
import net.tropicraft.registry.TCItemRegistry;
public class BlockSifter extends BlockTropicraft implements ITileEntityProvider {
public BlockSifter() {
super(Material.wood);
}
@Override
public TileEntity createNewTileEntity(World var1, int var2) {
return TileEntityFactory.getSifterTE();
}
@Override
public int getRenderBlockPass() {
return 0;
}
@Override
public boolean isOpaqueCube() {
return false;
}
@Override
public boolean renderAsNormalBlock() {
return true;
}
@Override
public Item getItemDropped(int id, Random random, int j) {
return Item.getItemFromBlock(TCBlockRegistry.sifter);
}
@Override
public boolean onBlockActivated(World world, int i, int j, int k, EntityPlayer entityplayer, int d, float f1, float f2, float f3) {
if (world.isRemote) return true;
ItemStack stack = entityplayer.inventory.getCurrentItem();
TileEntitySifter tileentitysifta = (TileEntitySifter) world.getTileEntity(i, j, k);
if (tileentitysifta != null && stack != null && !tileentitysifta.isSifting()) {
Item helditem = stack.getItem();
if (helditem == Item.getItemFromBlock(Blocks.sand) || /*unrefined raftous ore */(helditem == TCItemRegistry.ore && stack.getItemDamage() == 5)
|| /* mineral sands */(helditem == Item.getItemFromBlock(TCBlockRegistry.mineralSands) && stack.getItemDamage() == 3)) {
entityplayer.getCurrentEquippedItem().stackSize--;
if (helditem == TCItemRegistry.ore) {
float percent = getTagCompound(stack).getFloat("AmtRefined");
tileentitysifta.setSifting(true, helditem == Item.getItemFromBlock(Blocks.sand) ? 1 :
helditem == Item.getItemFromBlock(TCBlockRegistry.mineralSands) ? 2 : 3, percent);
} else {
tileentitysifta.setSifting(true, helditem == Item.getItemFromBlock(Blocks.sand) ? 1 :
helditem == Item.getItemFromBlock(TCBlockRegistry.mineralSands) ? 2 : 3, -1);
}
}
}
return true;
} // /o/ \o\ /o\ \o\ /o\ \o/ /o/ /o/ \o\ \o\ /o/ /o/ \o/ /o\ \o/ \o/ /o\ /o\ \o/ \o/ /o/ \o\o\o\o\o\o\o\o\o\ :D
/**
* Retrives an existing nbt tag compound or creates a new one if it is null
* @param stack
*/
public NBTTagCompound getTagCompound(ItemStack stack) {
if (!stack.hasTagCompound())
stack.setTagCompound(new NBTTagCompound());
return stack.getTagCompound();
}
}