package minefantasy.mf2.item.tool.crafting;
import java.util.List;
import minefantasy.mf2.MineFantasyII;
import minefantasy.mf2.api.crafting.refine.PaintOilRecipe;
import minefantasy.mf2.api.helpers.ToolHelper;
import minefantasy.mf2.api.knowledge.ResearchLogic;
import minefantasy.mf2.api.rpg.SkillList;
import minefantasy.mf2.api.tier.IToolMaterial;
import minefantasy.mf2.api.tool.IToolMF;
import minefantasy.mf2.api.weapon.IDamageType;
import minefantasy.mf2.item.food.FoodListMF;
import minefantasy.mf2.item.list.ComponentListMF;
import minefantasy.mf2.item.list.CreativeTabMF;
import minefantasy.mf2.item.list.ToolListMF;
import minefantasy.mf2.item.tool.ToolMaterialMF;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemTool;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.UseHoeEvent;
import net.minecraftforge.oredict.OreDictionary;
import com.google.common.collect.Sets;
import cpw.mods.fml.common.eventhandler.Event.Result;
import cpw.mods.fml.common.registry.GameRegistry;
/**
* @author Anonymous Productions
*/
public class ItemPaintBrush extends ItemBasicCraftTool
{
public ItemPaintBrush(String name, int uses)
{
super(name, "brush", 0, uses);
setCreativeTab(CreativeTabMF.tabCraftTool);
//setTextureName("minefantasy2:Tool/Crafting/"+name);
//this.setUnlocalizedName(name);
//this.setMaxDamage(uses);
//setMaxStackSize(1);
this.setFull3D();
}
@Override
public ItemStack getContainerItem(ItemStack item)
{
item.setItemDamage(item.getItemDamage()+1);
return item.getItemDamage() >= item.getMaxDamage() ? null : item;
}
@Override
public int getMaxDamage(ItemStack stack)
{
return ToolHelper.setDuraOnQuality(stack, super.getMaxDamage());
}
private boolean onUsedWithBlock(World world, int x, int y, int z, Block block, ItemStack item, EntityPlayer user)
{
Block newBlock = null;
int meta = world.getBlockMetadata(x, y, z);
ItemStack output = PaintOilRecipe.getPaintResult(new ItemStack(block, 1, meta));
if(output != null && output.getItem() instanceof ItemBlock)
{
newBlock = Block.getBlockFromItem(output.getItem());
if(output.getItemDamage() != OreDictionary.WILDCARD_VALUE)
{
meta = output.getItemDamage();
}
}
if(newBlock != null)
{
world.playAuxSFXAtEntity(user, 2001, x, y, z, Block.getIdFromBlock(newBlock) + (meta << 12));
user.inventory.consumeInventoryItem(ComponentListMF.plant_oil);
ItemStack jug = new ItemStack(FoodListMF.jug_empty);
if(!user.inventory.addItemStackToInventory(jug) && !world.isRemote)
{
user.entityDropItem(jug, 0F);
}
if(world.isRemote)return true;
SkillList.construction.addXP(user, 1);
item.damageItem(1, user);
world.setBlock(x, y, z, newBlock);
world.setBlockMetadataWithNotify(x, y, z, meta, 2);
}
return false;
}
@Override
public boolean onItemUse(ItemStack item, EntityPlayer user, World world, int x, int y, int z, int side, float f, float f1, float f2)
{
if(!ResearchLogic.hasInfoUnlocked(user, "paint_brush"))
{
return false;
}
if (!user.canPlayerEdit(x, y, z, side, item))
{
return false;
}
else if(!user.isSwingInProgress && user.inventory.hasItem(ComponentListMF.plant_oil))
{
Block block = world.getBlock(x, y, z);
return onUsedWithBlock(world, x, y, z, block, item, user);
}
return false;
}
}