package com.ferreusveritas.dynamictrees.api.treedata;

import java.util.List;
import java.util.Random;

import com.ferreusveritas.dynamictrees.trees.Species;

import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;

public interface IDropCreator {
	
	ResourceLocation getName();
	
	List<ItemStack> getHarvestDrop(World world, Species species, BlockPos leafPos, Random random, List<ItemStack> dropList, int soilLife, int fortune);
	
	List<ItemStack> getVoluntaryDrop(World world, Species species, BlockPos rootPos, Random random, List<ItemStack> dropList, int soilLife);
	
	List<ItemStack> getLeavesDrop(IBlockAccess access, Species species, BlockPos breakPos, Random random, List<ItemStack> dropList, int fortune);

	List<ItemStack> getLogsDrop(World world, Species species, BlockPos breakPos, Random random, List<ItemStack> dropList, int volume);
	
}

@@ -97,16 +97,199 @@
 andom;%0A%0A
+import com.ferreusveritas.dynamictrees.blocks.BlockBranch;%0Aimport com.ferreusveritas.dynamictrees.blocks.BlockDynamicLeaves;%0Aimport com.ferreusveritas.dynamictrees.trees.DynamicTree;%0A
 import c
@@ -603,441 +603,1719 @@
 %0A%09%0A%09
-List%3CItemStack%3E getHarvestDrop(World world, Species species, BlockPos leafPos, Random random, List%3CItemStack%3E dropList, int soilLife, int fortune);%0A%09%0A%09List%3CItemStack%3E getVoluntaryDrop(World world, Species species, BlockPos rootPos, Random random, List%3CItemStack%3E dropList, int soilLife);%0A%09%0A%09List%3CItemStack%3E getLeavesDrop(IBlockAccess access, Species species, BlockPos breakPos, Random random, List%3CItemStack%3E dropList, int fortune);%0A
+/**%0A%09 * Gets a list of drops for a %7B@link BlockDynamicLeaves%7D when the entire tree is harvested.%0A%09 * NOT used for individual %7B@link BlockDynamicLeaves%7D being directly harvested by hand or tool. %0A%09 * %0A%09 * @param world%0A%09 * @param species%0A%09 * @param leafPos%0A%09 * @param random%0A%09 * @param dropList%0A%09 * @param soilLife%0A%09 * @param fortune%0A%09 * @return%0A%09 */%0A%09List%3CItemStack%3E getHarvestDrop(World world, Species species, BlockPos leafPos, Random random, List%3CItemStack%3E dropList, int soilLife, int fortune);%0A%09%0A%09/**%0A%09 * Gets a %7B@link List%7D of voluntary drops.  Voluntary drops are %7B@link ItemStack%7Ds that fall from the %7B@link DynamicTree%7D at%0A%09 * random with no player interaction.%0A%09 * %0A%09 * @param world%0A%09 * @param species%0A%09 * @param rootPos%0A%09 * @param random%0A%09 * @param dropList%0A%09 * @param soilLife%0A%09 * @return%0A%09 */%0A%09List%3CItemStack%3E getVoluntaryDrop(World world, Species species, BlockPos rootPos, Random random, List%3CItemStack%3E dropList, int soilLife);%0A%09%0A%09/**%0A%09 * Gets a %7B@link List%7D of Leaves drops.  Leaves drops are %7B@link ItemStack%7Ds that result from the breaking of%0A%09 * a %7B@link BlockDynamicLeaves%7D directly by hand or with a tool.%0A%09 * %0A%09 * @param access%0A%09 * @param species%0A%09 * @param breakPos%0A%09 * @param random%0A%09 * @param dropList%0A%09 * @param fortune%0A%09 * @return%0A%09 */%0A%09List%3CItemStack%3E getLeavesDrop(IBlockAccess access, Species species, BlockPos breakPos, Random random, List%3CItemStack%3E dropList, int fortune);%0A%0A%09/**%0A%09 * Gets a %7B@link List%7D of Logs drops.  Logs drops are %7B@link ItemStack%7Ds that result from the breaking of%0A%09 * a %7B@link BlockBranch%7D directly by hand or with a tool.%0A%09 * %0A%09 * @param world%0A%09 * @param species%0A%09 * @param breakPos%0A%09 * @param random%0A%09 * @param dropList%0A%09 * @param volume%0A%09 * @return%0A%09 */
 %0A%09Li

Add IDropCreator Java Doc