I am trying to re-create some tools but so far the durability will not go down when used.

Code:
using System;
using Server;
using Server.Items;
using Server.Items.Crops;
using Server.Targeting;
using Server.Engines.Craft;

namespace Server.Items
{
	public class ParingKnife : BaseTool
	{
		[Constructable]
		public ParingKnife() : base( 0xEC4 )
		{
			Name = "paring knife";
			Weight = 1.0;
		}
		[Constructable]
        public ParingKnife(int uses)
            : base(uses, 0xEC4)
        {
            this.Weight = 1.0;
        }

		public ParingKnife( Serial serial ) : base( serial )
		{
		}
		
		public override void OnDoubleClick( Mobile from )
		{
			from.SendMessage( "What do you wish to extract the seeds from?" );
			from.Target = new InternalTarget( this );
		}

		private class InternalTarget : Target
		{
			private ParingKnife m_Item;
			public InternalTarget( ParingKnife item ) : base( 1, false, TargetFlags.None )
			{
				m_Item = item;
			}
		

	        protected override void OnTarget( Mobile from, object target )
			{
			int roll = Utility.Random( 5 );
				if ( target is Cabbage )
				{
					((Item)target).Consume();
					from.AddToBackpack( new CabbageSeed( roll ) );
					from.SendMessage( "You extract some seeds from the crop" );
				}
				if ( target is Carrot )
				{
					((Item)target).Consume();
					from.AddToBackpack( new CarrotSeed( roll ) );
					from.SendMessage( "You extract some seeds from the crop" );
				}
				/*if ( target is Corn )
				{
					((Item)target).Delete();
					from.AddToBackpack( new CornSeed( roll ) );
					from.SendMessage( "You extract some seeds from the crop" );
				}
				if ( target is Cotton )
				{
					((Item)target).Delete();
					from.AddToBackpack( new CottonSeed( roll ) );
					from.SendMessage( "You extract some seeds from the crop" );
				}*/
				if ( target is Flax )
				{
					((Item)target).Consume();
					from.AddToBackpack( new FlaxSeed( roll ) );
					from.SendMessage( "You extract some seeds from the crop" );
				}
				if ( target is Lettuce )
				{
					((Item)target).Consume();
					from.AddToBackpack( new LettuceSeed( roll ) );
					from.SendMessage( "You extract some seeds from the crop" );
				}
				if ( target is Onion )
				{
					((Item)target).Consume();
					from.AddToBackpack( new OnionSeed( roll ) );
					from.SendMessage( "You extract some seeds from the crop" );
				}
				if ( target is Wheat )
				{
					((Item)target).Consume();
					from.AddToBackpack( new WheatSeed( roll ) );
					from.SendMessage( "You extract some seeds from the crop" );
				}
				if ( target is Bloodmoss )
				{
					((Item)target).Consume();
					from.AddToBackpack( new BloodmossSeed( roll ) );
					from.SendMessage( "You extract some seeds from the crop" );
				}
				if ( target is BlackPearl )
				{
					((Item)target).Consume();
					from.AddToBackpack( new BlackPearlSeed( roll ) );
					from.SendMessage( "You extract some seeds from the crop" );
				}
				if ( target is Garlic )
				{
					((Item)target).Consume();
					from.AddToBackpack( new GarlicSeed( roll ) );
					from.SendMessage( "You extract some seeds from the crop" );
				}
				if ( target is Ginseng )
				{
					((Item)target).Consume();
					from.AddToBackpack( new GinsengSeed( roll ) );
					from.SendMessage( "You extract some seeds from the crop" );
				}
			    if ( target is MandrakeRoot )
				{
					((Item)target).Consume();
					from.AddToBackpack( new MandrakeSeed( roll ) );
					from.SendMessage( "You extract some seeds from the crop" );
				}
			    if ( target is Nightshade )
				{
					((Item)target).Consume();
					from.AddToBackpack( new NightshadeSeed( roll ) );
					from.SendMessage( "You extract some seeds from the crop" );
				}
				if ( target is SpidersSilk )
				{
					((Item)target).Consume();
					from.AddToBackpack( new SpidersSilkSeed( roll ) );
					from.SendMessage( "You extract some seeds from the crop" );
				}
				if ( target is SulfurousAsh )
				{
					((Item)target).Consume();
					from.AddToBackpack( new SulfurousAshSeed( roll ) );
					from.SendMessage( "You extract some seeds from the crop" );
				}
				
			}
		}
		
		public override CraftSystem CraftSystem
        {
            get
            {
                return DefTinkering.CraftSystem;
            }
        }

		public override void Serialize( GenericWriter writer )
		{
			base.Serialize( writer );

			writer.Write( (int) 0 ); // version
		}

		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();
		}
	}
}

Thanks!
 
Try this:

Code:
using System;
using Server;
using Server.Items;
using Server.Items.Crops;
using Server.Targeting;
using Server.Engines.Craft;
namespace Server.Items
{
    public class ParingKnife : BaseTool
    {
        [Constructable]
        public ParingKnife() : base( 0xEC4 )
        {
            Name = "paring knife";
            Weight = 1.0;
        }
        [Constructable]
        public ParingKnife(int uses)
            : base(uses, 0xEC4)
        {
            this.Weight = 1.0;
        }
        public ParingKnife( Serial serial ) : base( serial )
        {
        }
     
        public override void OnDoubleClick( Mobile from )
        {
            from.SendMessage( "What do you wish to extract the seeds from?" );
            from.Target = new InternalTarget( this );
        }
        private class InternalTarget : Target
        {
            private ParingKnife m_Item;
            public InternalTarget( ParingKnife item ) : base( 1, false, TargetFlags.None )
            {
                m_Item = item;
            }
     
            protected override void OnTarget( Mobile from, object target )
            {
            int roll = Utility.Random( 5 );
                if ( target is Cabbage )
                {
                    ((Item)target).Consume();
                    from.AddToBackpack( new CabbageSeed( roll ) );
                    from.SendMessage( "You extract some seeds from the crop" );
                }
                if ( target is Carrot )
                {
                    ((Item)target).Consume();
                    from.AddToBackpack( new CarrotSeed( roll ) );
                    from.SendMessage( "You extract some seeds from the crop" );
                }
                /*if ( target is Corn )
                {
                    ((Item)target).Delete();
                    from.AddToBackpack( new CornSeed( roll ) );
                    from.SendMessage( "You extract some seeds from the crop" );
                }
                if ( target is Cotton )
                {
                    ((Item)target).Delete();
                    from.AddToBackpack( new CottonSeed( roll ) );
                    from.SendMessage( "You extract some seeds from the crop" );
                }*/
                if ( target is Flax )
                {
                    ((Item)target).Consume();
                    from.AddToBackpack( new FlaxSeed( roll ) );
                    from.SendMessage( "You extract some seeds from the crop" );
                }
                if ( target is Lettuce )
                {
                    ((Item)target).Consume();
                    from.AddToBackpack( new LettuceSeed( roll ) );
                    from.SendMessage( "You extract some seeds from the crop" );
                }
                if ( target is Onion )
                {
                    ((Item)target).Consume();
                    from.AddToBackpack( new OnionSeed( roll ) );
                    from.SendMessage( "You extract some seeds from the crop" );
                }
                if ( target is Wheat )
                {
                    ((Item)target).Consume();
                    from.AddToBackpack( new WheatSeed( roll ) );
                    from.SendMessage( "You extract some seeds from the crop" );
                }
                if ( target is Bloodmoss )
                {
                    ((Item)target).Consume();
                    from.AddToBackpack( new BloodmossSeed( roll ) );
                    from.SendMessage( "You extract some seeds from the crop" );
                }
                if ( target is BlackPearl )
                {
                    ((Item)target).Consume();
                    from.AddToBackpack( new BlackPearlSeed( roll ) );
                    from.SendMessage( "You extract some seeds from the crop" );
                }
                if ( target is Garlic )
                {
                    ((Item)target).Consume();
                    from.AddToBackpack( new GarlicSeed( roll ) );
                    from.SendMessage( "You extract some seeds from the crop" );
                }
                if ( target is Ginseng )
                {
                    ((Item)target).Consume();
                    from.AddToBackpack( new GinsengSeed( roll ) );
                    from.SendMessage( "You extract some seeds from the crop" );
                }
                if ( target is MandrakeRoot )
                {
                    ((Item)target).Consume();
                    from.AddToBackpack( new MandrakeSeed( roll ) );
                    from.SendMessage( "You extract some seeds from the crop" );
                }
                if ( target is Nightshade )
                {
                    ((Item)target).Consume();
                    from.AddToBackpack( new NightshadeSeed( roll ) );
                    from.SendMessage( "You extract some seeds from the crop" );
                }
                if ( target is SpidersSilk )
                {
                    ((Item)target).Consume();
                    from.AddToBackpack( new SpidersSilkSeed( roll ) );
                    from.SendMessage( "You extract some seeds from the crop" );
                }
                if ( target is SulfurousAsh )
                {
                    ((Item)target).Consume();
                    from.AddToBackpack( new SulfurousAshSeed( roll ) );
                    from.SendMessage( "You extract some seeds from the crop" );
                }
				
				UsesRemaining -= 1;
				if (UsesRemaining <= 0)
				{
					from.SendMessage("You have worn out your tool!");
					this.Delete();
				}
            }
        }
     
        public override CraftSystem CraftSystem
        {
            get
            {
                return DefTinkering.CraftSystem;
            }
        }
        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );
            writer.Write( (int) 0 ); // version
        }
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );
            int version = reader.ReadInt();
        }
    }
}
 
Back