package net.minecraft.src;
import java.util.Random;
public class Назв_блока extends Block 
{
        public Назв_блока(int i, int j)
        {
                super(i, j, Material.ground);
        }
public int idDropped(int i, Random random, int j)
{
return mod_gcc.Назв_блока.blockID;
        }
        public int quantityDropped(Random random)
        {
                                        return 1;
        }
}

И так что бы сделать блок восстанавливающим жизни вставляем этот код:

public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int i, int j, int k)
{
        float f = 0.0625F;
        return AxisAlignedBB.getBoundingBoxFromPool((float)i + f, j, (float)k + f, (float)(i + 1) - f, (float)(j + 1) - f, (float)(k + 1) - f);
}
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int i, int j, int k)
{
        float f = 0.0625F;
        return AxisAlignedBB.getBoundingBoxFromPool((float)i + f, j, (float)k + f, (float)(i + 1) - f, j + 1, (float)(k + 1) - f);
}
         
public void onEntityCollidedWithBlock(World world, int i, int j, int k, Entity entity)
{
        if(ModLoader.getMinecraftInstance().thePlayer.health < 20)
        {
                ModLoader.getMinecraftInstance().thePlayer.heal(4);                               ///// 4 это значение "сколько жизней восполнит блок" за раз
        }
}

на место / (слешей) :

package net.minecraft.src;
import java.util.Random;
public class Назв_блока extends Block 
{
        public Назв_блока(int i, int j)
        {
                super(i, j, Material.ground);
        }
public int idDropped(int i, Random random, int j)
{
return mod_gcc.Назв_блока.blockID;
        }
        public int quantityDropped(Random random)
        {
                                        return 1;
        }
/////////////////////
}

получится вот так:

package net.minecraft.src;

import java.util.Random;

public class Назв_блока extends Block   
{
        public Назв_блока(int i, int j)
        {
                super(i, j, Material.ground);
        }
public int idDropped(int i, Random random, int j)
{
return mod_gcc.Назв_блока.blockID;
        }
        public int quantityDropped(Random random)
        {
                                        return 1;
        }
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int i, int j, int k)
{
        float f = 0.0625F;
        return AxisAlignedBB.getBoundingBoxFromPool((float)i + f, j, (float)k + f, (float)(i + 1) - f, (float)(j + 1) - f, (float)(k + 1) - f);
}

public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int i, int j, int k)
{
        float f = 0.0625F;
        return AxisAlignedBB.getBoundingBoxFromPool((float)i + f, j, (float)k + f, (float)(i + 1) - f, j + 1, (float)(k + 1) - f);
}

public void onEntityCollidedWithBlock(World world, int i, int j, int k, Entity entity)
{
        if(ModLoader.getMinecraftInstance().thePlayer.health < 20)
        {
                ModLoader.getMinecraftInstance().thePlayer.heal(4);
        }
}
}

а что бы блок отнимал жизни вставляем таким же образом вот этот код:

                   public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int i, int j, int k)
        {
                float f = 0.0625F;
                return AxisAlignedBB.getBoundingBoxFromPool((float)i + f, j, (float)k + f, (float)(i + 1) - f, (float)(j + 1) - f, (float)(k + 1) - f);
        }
        public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int i, int j, int k)
        {
                float f = 0.0625F;
                return AxisAlignedBB.getBoundingBoxFromPool((float)i + f, j, (float)k + f, (float)(i + 1) - f, j + 1, (float)(k + 1) - f);
        }
                public void onEntityCollidedWithBlock(World world, int i, int j, int k, Entity entity)
        {
                entity.attackEntityFrom(DamageSource.causeThrownDamage(entity, entity), 1);
        }

получится вот так:

package net.minecraft.src;
import java.util.Random;
public class Назв_блока extends Block 
{
        public Назв_блока(int i, int j)
        {
                super(i, j, Material.ground);
        }
public int idDropped(int i, Random random, int j)
{
return mod_gcc.Назв_блока.blockID;
        }
        public int quantityDropped(Random random)
        {
                                        return 1;
        }
                   public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int i, int j, int k)
        {
                float f = 0.0625F;
                return AxisAlignedBB.getBoundingBoxFromPool((float)i + f, j, (float)k + f, (float)(i + 1) - f, (float)(j + 1) - f, (float)(k + 1) - f);
        }
        public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int i, int j, int k)
        {
                float f = 0.0625F;
                return AxisAlignedBB.getBoundingBoxFromPool((float)i + f, j, (float)k + f, (float)(i + 1) - f, j + 1, (float)(k + 1) - f);
        }
                public void onEntityCollidedWithBlock(World world, int i, int j, int k, Entity entity)
        {
                entity.attackEntityFrom(DamageSource.causeThrownDamage(entity, entity), 1);
        }
}

вот и все=)