@Override
  public final ArrayList<ItemStack> getBlockDropped(
      World world, int x, int y, int z, int meta, int fortune) {
    ArrayList<ItemStack> li = new ArrayList();
    float saplingChance = 0.0125F;
    float appleChance = 0.1F;
    float goldAppleChance = 0.025F;
    float rareGoldAppleChance = 0.0025F;

    saplingChance *= (1 + fortune);
    appleChance *= (1 + fortune * 5);
    goldAppleChance *= (1 + fortune * 3);
    rareGoldAppleChance *= (1 + fortune * 3);

    if (ReikaRandomHelper.doWithChance(saplingChance))
      li.add(new ItemStack(DyeBlocks.RAINBOWSAPLING.getBlockID(), 1, meta));
    if (ReikaRandomHelper.doWithChance(appleChance)) li.add(new ItemStack(Item.appleRed, 1, 0));
    if (ReikaRandomHelper.doWithChance(goldAppleChance))
      li.add(new ItemStack(Item.appleGold, 1, 0));
    if (ReikaRandomHelper.doWithChance(rareGoldAppleChance))
      li.add(new ItemStack(Item.appleGold, 1, 1));
    li.addAll(this.getDyes(world, x, y, z, fortune));
    return li;
  }
 @Override
 public final int idDropped(int id, Random r, int fortune) {
   return DyeBlocks.RAINBOWSAPLING.getBlockID();
 }