gt:         if (!this.worldObj.isRemote && this.isConverting())
context: package net.minecraft.src;
  
  import java.util.Calendar;
  import java.util.UUID;
  
  public class EntityZombie extends EntityMob
  {
      protected static final Attribute field_110186_bp = (new RangedAttribute("zombie.spawnReinforcements", 0.0D, 0.0D, 1.0D)).func_111117_a("Spawn Reinforcements Chance");
      private static final UUID field_110187_bq = UUID.fromString("B9766B59-9566-4402-BC1F-2EE2A276D836");
      private static final AttributeModifier field_110188_br = new AttributeModifier(field_110187_bq, "Baby speed boost", 0.5D, 0);
  
      /**
       * Ticker used to determine the time remaining for this zombie to convert into a villager when cured.
       */
      private int conversionTime;
  
      public EntityZombie(World par1World)
      {
          super(par1World);
          this.getNavigator().setBreakDoors(true);
          this.tasks.addTask(0, new EntityAISwimming(this));
          this.tasks.addTask(1, new EntityAIBreakDoor(this));
          this.tasks.addTask(2, new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, false));
          this.tasks.addTask(3, new EntityAIAttackOnCollide(this, EntityVillager.class, 1.0D, true));
          this.tasks.addTask(4, new EntityAIMoveTwardsRestriction(this, 1.0D));
          this.tasks.addTask(5, new EntityAIMoveThroughVillage(this, 1.0D, false));
          this.tasks.addTask(6, new EntityAIWander(this, 1.0D));
          this.tasks.addTask(7, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F));
          this.tasks.addTask(7, new EntityAILookIdle(this));
          this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, true));
          this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true));
          this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityVillager.class, 0, false));
      }
  
      protected void func_110147_ax()
      {
          super.func_110147_ax();
          this.func_110148_a(SharedMonsterAttributes.field_111265_b).func_111128_a(40.0D);
          this.func_110148_a(SharedMonsterAttributes.field_111263_d).func_111128_a(0.23000000417232513D);
          this.func_110148_a(SharedMonsterAttributes.field_111264_e).func_111128_a(3.0D);
          this.func_110140_aT().func_111150_b(field_110186_bp).func_111128_a(this.rand.nextDouble() * 0.10000000149011612D);
      }
  
      protected void entityInit()
      {
          super.entityInit();
          this.getDataWatcher().addObject(12, Byte.valueOf((byte)0));
          this.getDataWatcher().addObject(13, Byte.valueOf((byte)0));
          this.getDataWatcher().addObject(14, Byte.valueOf((byte)0));
      }
  
      /**
       * Returns the current armor value as determined by a call to InventoryPlayer.getTotalArmorValue
       */
      public int getTotalArmorValue()
      {
          int var1 = super.getTotalArmorValue() + 2;
  
          if (var1 > 20)
          {
              var1 = 20;
          }
  
          return var1;
      }
  
      /**
       * Returns true if the newer Entity AI code should be run
       */
      protected boolean isAIEnabled()
      {
          return true;
      }
  
      /**
       * If Animal, checks if the age timer is negative
       */
      public boolean isChild()
      {
          return this.getDataWatcher().getWatchableObjectByte(12) == 1;
      }
  
      /**
       * Set whether this zombie is a child.
       */
      public void setChild(boolean par1)
      {
          this.getDataWatcher().updateObject(12, Byte.valueOf((byte)(par1 ? 1 : 0)));
  
          if (this.worldObj != null && !this.worldObj.isRemote)
          {
              AttributeInstance var2 = this.func_110148_a(SharedMonsterAttributes.field_111263_d);
              var2.func_111124_b(field_110188_br);
  
              if (par1)
              {
                  var2.func_111121_a(field_110188_br);
              }
          }
      }
  
      /**
       * Return whether this zombie is a villager.
       */
      public boolean isVillager()
      {
          return this.getDataWatcher().getWatchableObjectByte(13) == 1;
      }
  
      /**
       * Set whether this zombie is a villager.
       */
      public void setVillager(boolean par1)
      {
          this.getDataWatcher().updateObject(13, Byte.valueOf((byte)(par1 ? 1 : 0)));
      }
  
      /**
       * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons
       * use this to react to sunlight and start to burn.
       */
      public void onLivingUpdate()
      {
          if (this.worldObj.isDaytime() && !this.worldObj.isRemote && !this.isChild())
          {
              float var1 = this.getBrightness(1.0F);
  
              if (var1 > 0.5F && this.rand.nextFloat() * 30.0F < (var1 - 0.4F) * 2.0F && this.worldObj.canBlockSeeTheSky(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ)))
              {
                  boolean var2 = true;
                  ItemStack var3 = this.getEquipmentInSlot(4);
  
                  if (var3 != null)
                  {
                      if (var3.isItemStackDamageable())
                      {
                          var3.setItemDamage(var3.getItemDamageForDisplay() + this.rand.nextInt(2));
  
                          if (var3.getItemDamageForDisplay() >= var3.getMaxDamage())
                          {
                              this.renderBrokenItemStack(var3);
                              this.setCurrentItemOrArmor(4, (ItemStack)null);
                          }
                      }
  
                      var2 = false;
                  }
  
                  if (var2)
                  {
                      this.setFire(8);
                  }
              }
          }
  
          super.onLivingUpdate();
      }
  
      /**
       * Called when the entity is attacked.
       */
      public boolean attackEntityFrom(DamageSource par1DamageSource, float par2)
      {
          if (!super.attackEntityFrom(par1DamageSource, par2))
          {
              return false;
          }
          else
          {
              EntityLivingBase var3 = this.getAttackTarget();
  
              if (var3 == null && this.getEntityToAttack() instanceof EntityLivingBase)
              {
                  var3 = (EntityLivingBase)this.getEntityToAttack();
              }
  
              if (var3 == null && par1DamageSource.getEntity() instanceof EntityLivingBase)
              {
                  var3 = (EntityLivingBase)par1DamageSource.getEntity();
              }
  
              if (var3 != null && this.worldObj.difficultySetting >= 3 && (double)this.rand.nextFloat() < this.func_110148_a(field_110186_bp).func_111126_e())
              {
                  int var4 = MathHelper.floor_double(this.posX);
                  int var5 = MathHelper.floor_double(this.posY);
                  int var6 = MathHelper.floor_double(this.posZ);
                  EntityZombie var7 = new EntityZombie(this.worldObj);
  
                  for (int var8 = 0; var8 < 50; ++var8)
                  {
                      int var9 = var4 + MathHelper.getRandomIntegerInRange(this.rand, 7, 40) * MathHelper.getRandomIntegerInRange(this.rand, -1, 1);
                      int var10 = var5 + MathHelper.getRandomIntegerInRange(this.rand, 7, 40) * MathHelper.getRandomIntegerInRange(this.rand, -1, 1);
                      int var11 = var6 + MathHelper.getRandomIntegerInRange(this.rand, 7, 40) * MathHelper.getRandomIntegerInRange(this.rand, -1, 1);
  
                      if (this.worldObj.doesBlockHaveSolidTopSurface(var9, var10 - 1, var11) && this.worldObj.getBlockLightValue(var9, var10, var11) < 10)
                      {
                          var7.setPosition((double)var9, (double)var10, (double)var11);
  
                          if (this.worldObj.checkNoEntityCollision(var7.boundingBox) && this.worldObj.getCollidingBoundingBoxes(var7, var7.boundingBox).isEmpty() && !this.worldObj.isAnyLiquid(var7.boundingBox))
                          {
                              this.worldObj.spawnEntityInWorld(var7);
                              var7.setAttackTarget(var3);
                              var7.func_110161_a((EntityLivingData)null);
                              this.func_110148_a(field_110186_bp).func_111121_a(new AttributeModifier("Zombie reinforcement caller charge", -0.05000000074505806D, 0));
                              var7.func_110148_a(field_110186_bp).func_111121_a(new AttributeModifier("Zombie reinforcement callee charge", -0.05000000074505806D, 0));
                              break;
                          }
                      }
                  }
              }
  
              return true;
          }
      }
  
      /**
       * Called to update the entity's position/logic.
       */
      public void onUpdate()
      {
  