public void updateTick(World world, int i, int j, int k, Random random) {
    if ((!world.multiplayerWorld)
        && ((this.blockID == Block.plantYellow.blockID)
            || (this.blockID == Block.plantRed.blockID))) {
      // ATTEMPT REPRODUCTION
      ModOptions flowers = mod_AutoForest.flowers;
      boolean grow = ((ModBooleanOption) flowers.getOption("FlowersGrow")).getValue();
      if (grow) {
        attemptGrowth(world, i, j, k);
      }

      // ATTEMPT DEATH
      boolean death = mod_AutoForest.flowerDeath.getValue();
      if (death && hasDied(world, i, j, k)) {
        death(world, i, j, k);
      }
    }

    if (world.getBlockId(i, j, k) != 0) {
      checkFlowerChange(world, i, j, k);
    }
  }
 public boolean canBlockStay(World world, int i, int j, int k) {
   return (world.getFullBlockLightValue(i, j, k) >= 8 || world.canBlockSeeTheSky(i, j, k))
       && canThisPlantGrowOnThisBlockID(world.getBlockId(i, j - 1, k));
 }
 public boolean canPlaceBlockAt(World world, int i, int j, int k) {
   return super.canPlaceBlockAt(world, i, j, k)
       && canThisPlantGrowOnThisBlockID(world.getBlockId(i, j - 1, k));
 }
 protected final void checkFlowerChange(World world, int i, int j, int k) {
   if (!canBlockStay(world, i, j, k)) {
     dropBlockAsItem(world, i, j, k, world.getBlockMetadata(i, j, k), 0);
     world.setBlockWithNotify(i, j, k, 0);
   }
 }