Example #1
0
 static EnumCreatureType()
 {
     monster = new EnumCreatureType("monster", 0, typeof (IMobs), 70, Material.air, false);
     creature = new EnumCreatureType("creature", 1, typeof (EntityAnimals), 15, Material.air, true);
     waterCreature = new EnumCreatureType("waterCreature", 2, typeof (EntityWaterMob), 5, Material.water, true);
     field_6155_e = (new[]
                     {
                         monster, creature, waterCreature
                     });
 }
Example #2
0
 static EnumCreatureType()
 {
     monster       = new EnumCreatureType("monster", 0, typeof(IMobs), 70, Material.air, false);
     creature      = new EnumCreatureType("creature", 1, typeof(EntityAnimals), 15, Material.air, true);
     waterCreature = new EnumCreatureType("waterCreature", 2, typeof(EntityWaterMob), 5, Material.water, true);
     field_6155_e  = (new[]
     {
         monster, creature, waterCreature
     });
 }
Example #3
0
 private static bool func_21167_a(EnumCreatureType enumcreaturetype, World world, int i, int j, int k)
 {
     if (enumcreaturetype.getCreatureMaterial() == Material.water)
     {
         return(world.getBlockMaterial(i, j, k).getIsLiquid() && !world.isBlockOpaqueCube(i, j + 1, k));
     }
     else
     {
         return(world.isBlockOpaqueCube(i, j - 1, k) && !world.isBlockOpaqueCube(i, j, k) &&
                !world.getBlockMaterial(i, j, k).getIsLiquid() && !world.isBlockOpaqueCube(i, j + 1, k));
     }
 }
Example #4
0
 public Class[] getEntitiesForType(EnumCreatureType enumcreaturetype)
 {
     if (enumcreaturetype == EnumCreatureType.monster)
     {
         return(biomeMonsters);
     }
     if (enumcreaturetype == EnumCreatureType.creature)
     {
         return(biomeCreatures);
     }
     if (enumcreaturetype == EnumCreatureType.waterCreature)
     {
         return(biomeWaterCreatures);
     }
     else
     {
         return(null);
     }
 }
Example #5
0
        public static int performSpawning(World var0, bool var1, bool var2)
        {
            if (!var1 && !var2)
            {
                return(0);
            }
            else
            {
                eligibleChunksForSpawning.clear();

                int var3;
                int var6;
                for (var3 = 0; var3 < var0.playerEntities.size(); ++var3)
                {
                    var var4 = (EntityPlayer)var0.playerEntities.get(var3);
                    int var5 = MathHelper.floor_double(var4.posX / 16.0D);
                    var6 = MathHelper.floor_double(var4.posZ / 16.0D);
                    byte var7 = 8;

                    for (int var8 = -var7; var8 <= var7; ++var8)
                    {
                        for (int var9 = -var7; var9 <= var7; ++var9)
                        {
                            eligibleChunksForSpawning.add(new ChunkCoordIntPair(var8 + var5, var9 + var6));
                        }
                    }
                }

                var3 = 0;
                ChunkCoordinates   var33 = var0.func_22078_l();
                EnumCreatureType[] var34 = EnumCreatureType.values();
                var6 = var34.Length;

                for (int var35 = 0; var35 < var6; ++var35)
                {
                    EnumCreatureType var36 = var34[var35];
                    if ((!var36.func_21103_d() || var2) && (var36.func_21103_d() || var1) &&
                        var0.countEntities(var36.getCreatureClass()) <=
                        var36.getMaxNumberOfCreature() * eligibleChunksForSpawning.size() / 256)
                    {
                        Iterator var37 = eligibleChunksForSpawning.iterator();

                        while (var37.hasNext())
                        {
                            var            var10 = (ChunkCoordIntPair)var37.next();
                            MobSpawnerBase var11 = var0.getWorldChunkManager().func_4066_a(var10);
                            Class[]        var12 = var11.getEntitiesForType(var36);
                            if (var12 != null && var12.Length != 0)
                            {
                                int           var13 = var0.rand.nextInt(var12.Length);
                                ChunkPosition var14 = getRandomSpawningPointInChunk(var0, var10.chunkXPos * 16,
                                                                                    var10.chunkZPos * 16);
                                int var15 = var14.x;
                                int var16 = var14.y;
                                int var17 = var14.z;
                                if (!var0.isBlockOpaqueCube(var15, var16, var17) &&
                                    var0.getBlockMaterial(var15, var16, var17) == var36.getCreatureMaterial())
                                {
                                    int var18 = 0;

                                    for (int var19 = 0; var19 < 3; ++var19)
                                    {
                                        int  var20 = var15;
                                        int  var21 = var16;
                                        int  var22 = var17;
                                        byte var23 = 6;

                                        for (int var24 = 0; var24 < 4; ++var24)
                                        {
                                            var20 += var0.rand.nextInt(var23) - var0.rand.nextInt(var23);
                                            var21 += var0.rand.nextInt(1) - var0.rand.nextInt(1);
                                            var22 += var0.rand.nextInt(var23) - var0.rand.nextInt(var23);
                                            if (func_21167_a(var36, var0, var20, var21, var22))
                                            {
                                                float var25 = var20 + 0.5F;
                                                float var26 = var21;
                                                float var27 = var22 + 0.5F;
                                                if (
                                                    var0.getClosestPlayer(var25, var26, var27,
                                                                          24.0D) == null)
                                                {
                                                    float var28 = var25 - var33.posX;
                                                    float var29 = var26 - var33.posY;
                                                    float var30 = var27 - var33.posZ;
                                                    float var31 = var28 * var28 + var29 * var29 + var30 * var30;
                                                    if (var31 >= 576.0F)
                                                    {
                                                        EntityLiving var38;
                                                        try
                                                        {
                                                            var38 =
                                                                (EntityLiving)
                                                                var12[var13].getConstructor(new Class[] { typeof(World) })
                                                                .newInstance(new object[] { var0 });
                                                        }
                                                        catch (Exception var32)
                                                        {
                                                            var32.printStackTrace();
                                                            return(var3);
                                                        }

                                                        var38.setLocationAndAngles(var25, var26,
                                                                                   var27,
                                                                                   var0.rand.nextFloat() * 360.0F, 0.0F);
                                                        if (var38.getCanSpawnHere())
                                                        {
                                                            ++var18;
                                                            var0.entityJoinedWorld(var38);
                                                            func_21166_a(var38, var0, var25, var26, var27);
                                                            if (var18 >= var38.getMaxSpawnedInChunk())
                                                            {
                                                                continue;
                                                            }
                                                        }

                                                        var3 += var18;
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                return(var3);
            }
        }
Example #6
0
 private static bool func_21167_a(EnumCreatureType enumcreaturetype, World world, int i, int j, int k)
 {
     if (enumcreaturetype.getCreatureMaterial() == Material.water)
     {
         return world.getBlockMaterial(i, j, k).getIsLiquid() && !world.isBlockOpaqueCube(i, j + 1, k);
     }
     else
     {
         return world.isBlockOpaqueCube(i, j - 1, k) && !world.isBlockOpaqueCube(i, j, k) &&
                !world.getBlockMaterial(i, j, k).getIsLiquid() && !world.isBlockOpaqueCube(i, j + 1, k);
     }
 }
Example #7
0
 public Class[] getEntitiesForType(EnumCreatureType enumcreaturetype)
 {
     if (enumcreaturetype == EnumCreatureType.monster)
     {
         return biomeMonsters;
     }
     if (enumcreaturetype == EnumCreatureType.creature)
     {
         return biomeCreatures;
     }
     if (enumcreaturetype == EnumCreatureType.waterCreature)
     {
         return biomeWaterCreatures;
     }
     else
     {
         return null;
     }
 }