Program: 2221
Project: 2221
Buggy source:
public void tickEffects(long ticks){
  Player me=this.getPlayer();
  if (me == null)   return;
  if (me.isDead())   return;
  Conf conf=Conf.get(me);
  boolean survival=me.getGameMode() == GameMode.SURVIVAL;
  if (!survival)   return;
  if (this.fxSmokeTicks > 0) {
    this.fxSmokeTicks-=ticks;
    double dcount=conf.fxSmokePerTick * ticks;
    long lcount=MUtil.probabilityRound(dcount);
    for (long i=lcount; i > 0; i--)     FxUtil.smoke(me);
  }
  if (this.fxEnderTicks > 0) {
    this.fxEnderTicks-=ticks;
    double dcount=conf.fxEnderPerTick * ticks;
    long lcount=MUtil.probabilityRound(dcount);
    for (long i=lcount; i > 0; i--)     FxUtil.ender(me,conf.fxEnderRandomMaxLen);
  }
  if (survival && this.isVampire()) {
    if (this.getTemp() > conf.sunNauseaTemp)     FxUtil.ensure(PotionEffectType.CONFUSION,me,conf.sunNauseaTicks);
    if (this.getTemp() > conf.sunWeaknessTemp)     FxUtil.ensure(PotionEffectType.WEAKNESS,me,conf.sunWeaknessTicks);
    if (this.getTemp() > conf.sunSlowTemp)     FxUtil.ensure(PotionEffectType.SLOW,me,conf.sunSlowTicks);
    if (this.getTemp() > conf.sunBlindnessTemp)     FxUtil.ensure(PotionEffectType.BLINDNESS,me,conf.sunBlindnessTicks);
    if (this.getTemp() > conf.sunBurnTemp)     FxUtil.ensureBurn(me,conf.sunBurnTicks);
    double dsmokes=conf.sunSmokesPerTempAndTick * this.temp * ticks;
    long lsmokes=MUtil.probabilityRound(dsmokes);
    for (long i=lsmokes; i > 0; i--)     FxUtil.smoke(me);
    double dflames=conf.sunFlamesPerTempAndTick * this.temp * ticks;
    long lflames=MUtil.probabilityRound(dflames);
    for (long i=lflames; i > 0; i--)     FxUtil.flame(me);
  }
}

Fixed version (ground truth):
public void tickEffects(long ticks){
  Player me=this.getPlayer();
  if (me == null)   return;
  if (me.isDead())   return;
  Conf conf=Conf.get(me);
  if (me.getGameMode() == GameMode.CREATIVE)   return;
  if (this.fxSmokeTicks > 0) {
    this.fxSmokeTicks-=ticks;
    double dcount=conf.fxSmokePerTick * ticks;
    long lcount=MUtil.probabilityRound(dcount);
    for (long i=lcount; i > 0; i--)     FxUtil.smoke(me);
  }
  if (this.fxEnderTicks > 0) {
    this.fxEnderTicks-=ticks;
    double dcount=conf.fxEnderPerTick * ticks;
    long lcount=MUtil.probabilityRound(dcount);
    for (long i=lcount; i > 0; i--)     FxUtil.ender(me,conf.fxEnderRandomMaxLen);
  }
  if (this.isVampire()) {
    if (this.getTemp() > conf.sunNauseaTemp)     FxUtil.ensure(PotionEffectType.CONFUSION,me,conf.sunNauseaTicks);
    if (this.getTemp() > conf.sunWeaknessTemp)     FxUtil.ensure(PotionEffectType.WEAKNESS,me,conf.sunWeaknessTicks);
    if (this.getTemp() > conf.sunSlowTemp)     FxUtil.ensure(PotionEffectType.SLOW,me,conf.sunSlowTicks);
    if (this.getTemp() > conf.sunBlindnessTemp)     FxUtil.ensure(PotionEffectType.BLINDNESS,me,conf.sunBlindnessTicks);
    if (this.getTemp() > conf.sunBurnTemp)     FxUtil.ensureBurn(me,conf.sunBurnTicks);
    double dsmokes=conf.sunSmokesPerTempAndTick * this.temp * ticks;
    long lsmokes=MUtil.probabilityRound(dsmokes);
    for (long i=lsmokes; i > 0; i--)     FxUtil.smoke(me);
    double dflames=conf.sunFlamesPerTempAndTick * this.temp * ticks;
    long lflames=MUtil.probabilityRound(dflames);
    for (long i=lflames; i > 0; i--)     FxUtil.flame(me);
  }
}