public int damageDropped(int metadata)
{
return metadata & 7;
}
Try to remove this ... & 7 and return just metadata. I seriously can't see any reason to use bitwise AND here.
public void onBlockPlacedBy(World par1World, int x, int y, int z, EntityLiving par5EntityLiving){
if (par1World.getBlockId(x, y - 1, z) == bExpansion.coloredStoneSlabID){
int metadata = par1World.getBlockMetadata(x, y - 1, z);
if(par1World.getBlockMetadata(x, y-1, z) == metadata){
par1World.setBlockWithNotify(x, y, z, 0); //sets the block below to 0
par1World.setBlockAndMetadataWithNotify(x, y - 1, z, bExpansion.coloredStoneDoubleSlabID, metadata);
//makes the slab a double-slab of the same metadata type
}
}
}
You are able to place stuff on top and it works properly because of this method. However you are checking if there is a halfslab below. Try checking above direction too, or try to mimic what Vanilla minecraft does.