--- ../src-base/minecraft/net/minecraft/entity/monster/EntityZombie.java
+++ ../src-work/minecraft/net/minecraft/entity/monster/EntityZombie.java
@@ -89,7 +89,7 @@
         this.func_110148_a(SharedMonsterAttributes.field_111265_b).func_111128_a(35.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.field_70146_Z.nextDouble() * 0.10000000149011612D);
+        this.func_110140_aT().func_111150_b(field_110186_bp).func_111128_a(this.field_70146_Z.nextDouble() * net.minecraftforge.common.ForgeModContainer.zombieSummonBaseChance);
     }
 
     protected void func_70088_a()
@@ -231,12 +231,25 @@
                 entitylivingbase = (EntityLivingBase)p_70097_1_.func_76346_g();
             }
 
-            if (entitylivingbase != null && this.field_70170_p.func_175659_aa() == EnumDifficulty.HARD && (double)this.field_70146_Z.nextFloat() < this.func_110148_a(field_110186_bp).func_111126_e())
+            int i = MathHelper.func_76128_c(this.field_70165_t);
+            int j = MathHelper.func_76128_c(this.field_70163_u);
+            int k = MathHelper.func_76128_c(this.field_70161_v);
+
+            net.minecraftforge.event.entity.living.ZombieEvent.SummonAidEvent summonAid = net.minecraftforge.event.ForgeEventFactory.fireZombieSummonAid(this, field_70170_p, i, j, k, entitylivingbase, this.func_110148_a(field_110186_bp).func_111126_e());
+            if (summonAid.getResult() == net.minecraftforge.fml.common.eventhandler.Event.Result.DENY) return true;
+
+            if (summonAid.getResult() == net.minecraftforge.fml.common.eventhandler.Event.Result.ALLOW  ||
+                entitylivingbase != null && this.field_70170_p.func_175659_aa() == EnumDifficulty.HARD && (double)this.field_70146_Z.nextFloat() < this.func_110148_a(field_110186_bp).func_111126_e())
             {
-                int i = MathHelper.func_76128_c(this.field_70165_t);
-                int j = MathHelper.func_76128_c(this.field_70163_u);
-                int k = MathHelper.func_76128_c(this.field_70161_v);
-                EntityZombie entityzombie = new EntityZombie(this.field_70170_p);
+                EntityZombie entityzombie;
+                if (summonAid.customSummonedAid != null && summonAid.getResult() == net.minecraftforge.fml.common.eventhandler.Event.Result.ALLOW)
+                {
+                    entityzombie = summonAid.customSummonedAid;
+                }
+                else
+                {
+                    entityzombie = new EntityZombie(this.field_70170_p);
+                }
 
                 for (int l = 0; l < 50; ++l)
                 {
@@ -251,7 +264,7 @@
                         if (!this.field_70170_p.func_175636_b((double)i1, (double)j1, (double)k1, 7.0D) && this.field_70170_p.func_72917_a(entityzombie.func_174813_aQ(), entityzombie) && this.field_70170_p.func_72945_a(entityzombie, entityzombie.func_174813_aQ()).isEmpty() && !this.field_70170_p.func_72953_d(entityzombie.func_174813_aQ()))
                         {
                             this.field_70170_p.func_72838_d(entityzombie);
-                            entityzombie.func_70624_b(entitylivingbase);
+                            if (entitylivingbase != null) entityzombie.func_70624_b(entitylivingbase);
                             entityzombie.func_180482_a(this.field_70170_p.func_175649_E(new BlockPos(entityzombie)), (IEntityLivingData)null);
                             this.func_110148_a(field_110186_bp).func_111121_a(new AttributeModifier("Zombie reinforcement caller charge", -0.05000000074505806D, 0));
                             entityzombie.func_110148_a(field_110186_bp).func_111121_a(new AttributeModifier("Zombie reinforcement callee charge", -0.05000000074505806D, 0));
@@ -458,7 +471,7 @@
 
         if (p_180482_2_1 == null)
         {
-            p_180482_2_1 = new EntityZombie.GroupData(this.field_70170_p.field_73012_v.nextFloat() < 0.05F, this.field_70170_p.field_73012_v.nextFloat() < 0.05F, null);
+            p_180482_2_1 = new EntityZombie.GroupData(this.field_70170_p.field_73012_v.nextFloat() < net.minecraftforge.common.ForgeModContainer.zombieBabyChance, this.field_70170_p.field_73012_v.nextFloat() < 0.05F, null);
         }
 
         if (p_180482_2_1 instanceof EntityZombie.GroupData)
