package eiteam.esteemedinnovation.tools.steam.upgrades;
import eiteam.esteemedinnovation.api.tool.SteamToolSlot;
import eiteam.esteemedinnovation.commons.util.ReflectionHelper;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.event.world.BlockEvent;
import javax.annotation.Nonnull;
import static eiteam.esteemedinnovation.tools.ToolsModule.upgradeResource;
public class ItemPreciseCuttingHeadUpgrade extends ItemSteamToolUpgrade {
public ItemPreciseCuttingHeadUpgrade() {
super(SteamToolSlot.DRILL_HEAD, upgradeResource("preciseCuttingHead"), null, 1);
}
@Override
public boolean onBlockBreakWithTool(BlockEvent.BreakEvent event, @Nonnull ItemStack toolStack, @Nonnull ItemStack thisUpgradeStack) {
event.setExpToDrop(0);
return true;
}
@Override
public void onPlayerHarvestDropsWithTool(BlockEvent.HarvestDropsEvent event, @Nonnull ItemStack toolStack, @Nonnull ItemStack thisUpgradeStack) {
EntityPlayer player = event.getHarvester();
BlockPos pos = event.getPos();
World world = event.getWorld();
IBlockState state = event.getState();
Block block = state.getBlock();
if (ForgeHooks.canHarvestBlock(block, player, world, pos) && block.canSilkHarvest(world, pos, state, player)) {
try {
ItemStack toAdd = (ItemStack) ReflectionHelper.createStackedBlockMethod.invoke(block, state);
if (toAdd != null) {
event.getDrops().clear();
event.getDrops().add(toAdd);
}
} catch (ReflectiveOperationException e) {
e.printStackTrace();
}
}
}
}