public List<ItemStack> getDrops(World world, Random rand, Map<String, Boolean> harvesterSettings, int x, int y, int z)
{
List<ItemStack> drops = new ArrayList<ItemStack>();
ICropTile tec = (ICropTile)world.getBlockTileEntity(x, y, z);
CropCard crop;
try
{
crop = (CropCard)_getCropMethod.invoke(tec);
float chance = crop.dropGainChance();
for (int i = 0; i < tec.getGain(); i++)
{
chance *= 1.03F;
}
chance -= rand.nextFloat();
int numDrops = 0;
while (chance > 0.0F)
{
numDrops++;
chance -= rand.nextFloat();
}
ItemStack[] cropDrops = new ItemStack[numDrops];
for (int i = 0; i < numDrops; i++)
{
cropDrops[i] = crop.getGain(tec);
if((cropDrops[i] != null) && (rand.nextInt(100) <= tec.getGain()))
{
cropDrops[i].stackSize += 1;
}
}
tec.setSize(crop.getSizeAfterHarvest(tec));
_dirtyField.setBoolean(tec, true);
for(ItemStack s : cropDrops)
{
drops.add(s);
}