// Path: src/java/cd4017be/kineng/block/BlockRotaryTool.java
// public class BlockRotaryTool extends BlockShaft {
// 
// 	public double maxF;
// 	public final int type;
// 	public ItemStack scrap = ItemStack.EMPTY;
// 
// 	/**
// 	 * @param id
// 	 * @param m
// 	 * @param r
// 	 * @param tile
// 	 */
// 	public BlockRotaryTool(String id, ShaftMaterial m, int type, double r, Class<? extends TileEntity> tile) {
// 		super(id, m, r, tile);
// 		this.type = type;
// 	}
// 
// 	@Override
// 	public double J(IBlockState state) {
// 		return J_dens;
// 	}
// 
// 	@Override
// 	public double getDebris(IBlockState state, List<ItemStack> items) {
// 		items.add(shaftMat.scrap);
// 		items.add(scrap);
// 		return r;
// 	}
// 
// 	public void setMaterials(ShaftMaterial mat, double r, double h) {
// 		J_dens = Formula.J_biCylinder(0.25, shaftMat.density, r, mat.density, h);
// 		av_max = Math.min(
// 			Formula.rip_vel(shaftMat.strength / shaftMat.density, 0.25),
// 			Formula.rip_vel(mat.strength / mat.density, r)
// 		);
// 	}
// 
// 	@Override
// 	@SideOnly(Side.CLIENT)
// 	protected void addInformation(IBlockState state, List<String> tooltip, ITooltipFlag advanced) {
// 		super.addInformation(state, tooltip, advanced);
// 		tooltip.add(TooltipUtil.format("info.kineng.toolstats", radius(state), maxF));
// 	}
// 
// }


import cd4017be.kineng.block.BlockRotaryTool;
import cd4017be.kineng.physics.*;

package cd4017be.kineng.tileentity;


/** 
 * @author CD4017BE */
public abstract class KineticMachine extends ShaftPart {

	protected ForceCon con;

	@Override
	public double setShaft(ShaftAxis shaft, double v0) {
		if (con == null && shaft != null) {

// Path: src/java/cd4017be/kineng/block/BlockRotaryTool.java
// public class BlockRotaryTool extends BlockShaft {
// 
// 	public double maxF;
// 	public final int type;
// 	public ItemStack scrap = ItemStack.EMPTY;
// 
// 	/**
// 	 * @param id
// 	 * @param m
// 	 * @param r
// 	 * @param tile
// 	 */
// 	public BlockRotaryTool(String id, ShaftMaterial m, int type, double r, Class<? extends TileEntity> tile) {
// 		super(id, m, r, tile);
// 		this.type = type;
// 	}
// 
// 	@Override
// 	public double J(IBlockState state) {
// 		return J_dens;
// 	}
// 
// 	@Override
// 	public double getDebris(IBlockState state, List<ItemStack> items) {
// 		items.add(shaftMat.scrap);
// 		items.add(scrap);
// 		return r;
// 	}
// 
// 	public void setMaterials(ShaftMaterial mat, double r, double h) {
// 		J_dens = Formula.J_biCylinder(0.25, shaftMat.density, r, mat.density, h);
// 		av_max = Math.min(
// 			Formula.rip_vel(shaftMat.strength / shaftMat.density, 0.25),
// 			Formula.rip_vel(mat.strength / mat.density, r)
// 		);
// 	}
// 
// 	@Override
// 	@SideOnly(Side.CLIENT)
// 	protected void addInformation(IBlockState state, List<String> tooltip, ITooltipFlag advanced) {
// 		super.addInformation(state, tooltip, advanced);
// 		tooltip.add(TooltipUtil.format("info.kineng.toolstats", radius(state), maxF));
// 	}
// 
// }


// Path: src/java/cd4017be/kineng/tileentity/KineticMachine.java
import cd4017be.kineng.block.BlockRotaryTool;
import cd4017be.kineng.physics.*;

package cd4017be.kineng.tileentity;


/** 
 * @author CD4017BE */
public abstract class KineticMachine extends ShaftPart {

	protected ForceCon con;

	@Override
	public double setShaft(ShaftAxis shaft, double v0) {
		if (con == null && shaft != null) {

			BlockRotaryTool block = block();
