package mekanism.tools.item; import java.util.Set; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import com.google.common.collect.Sets; public class ItemMekanismPickaxe extends ItemMekanismTool { private static final Set<Block> EFFECTIVE_ON = Sets.newHashSet(new Block[] {Blocks.ACTIVATOR_RAIL, Blocks.COAL_ORE, Blocks.COBBLESTONE, Blocks.DETECTOR_RAIL, Blocks.DIAMOND_BLOCK, Blocks.DIAMOND_ORE, Blocks.DOUBLE_STONE_SLAB, Blocks.GOLDEN_RAIL, Blocks.GOLD_BLOCK, Blocks.GOLD_ORE, Blocks.ICE, Blocks.IRON_BLOCK, Blocks.IRON_ORE, Blocks.LAPIS_BLOCK, Blocks.LAPIS_ORE, Blocks.LIT_REDSTONE_ORE, Blocks.MOSSY_COBBLESTONE, Blocks.NETHERRACK, Blocks.PACKED_ICE, Blocks.RAIL, Blocks.REDSTONE_ORE, Blocks.SANDSTONE, Blocks.RED_SANDSTONE, Blocks.STONE, Blocks.STONE_SLAB, Blocks.STONE_BUTTON, Blocks.STONE_PRESSURE_PLATE}); public ItemMekanismPickaxe(ToolMaterial toolMaterial) { super(1, -2.8F, toolMaterial, EFFECTIVE_ON); } @Override public boolean canHarvestBlock(IBlockState state, ItemStack stack) { Block block = state.getBlock(); if(block == Blocks.OBSIDIAN) { return toolMaterial.getHarvestLevel() == 3; } if(block == Blocks.DIAMOND_BLOCK || block == Blocks.DIAMOND_ORE) { return toolMaterial.getHarvestLevel() >= 2; } if(block == Blocks.GOLD_BLOCK || block == Blocks.GOLD_ORE) { return toolMaterial.getHarvestLevel() >= 2; } if(block == Blocks.IRON_BLOCK || block == Blocks.IRON_ORE) { return toolMaterial.getHarvestLevel() >= 1; } if(block == Blocks.LAPIS_BLOCK || block == Blocks.LAPIS_ORE) { return toolMaterial.getHarvestLevel() >= 1; } if(block == Blocks.REDSTONE_ORE || block == Blocks.LIT_REDSTONE_ORE) { return toolMaterial.getHarvestLevel() >= 2; } if(block == Blocks.ANVIL) { return toolMaterial.getHarvestLevel() >= 0; } if(state.getMaterial() == Material.ROCK) { return true; } return state.getMaterial() == Material.IRON; } @Override public float getStrVsBlock(ItemStack itemstack, IBlockState blockState) { if(blockState != null && blockState.getBlock() != null && (blockState.getMaterial() == Material.IRON || blockState.getMaterial() == Material.ANVIL || blockState.getMaterial() == Material.ROCK)) { return efficiencyOnProperMaterial; } else { return super.getStrVsBlock(itemstack, blockState); } } }