Пример #1
0
        public override bool generate(World world, java.util.Random random, int i, int j, int k)
        {
            worldObj = world;
            long l = random.nextLong();

            random0.setSeed(l);
            basePos[0] = i;
            basePos[1] = j;
            basePos[2] = k;
            if (heightLimit == 0)
            {
                heightLimit = 5 + random0.nextInt(heightLimitLimit);
            }
            if (!validTreeLocation())
            {
                return(false);
            }
            else
            {
                generateLeafNodeList();
                generateLeaves();
                generateTrunk();
                generateLeafNodeBases();
                return(true);
            }
        }
Пример #2
0
        public override bool generate(World world, Random random, int i, int j, int k)
        {
            worldObj = world;
            long l = random.nextLong();

            field_759_b.setSeed(l);
            basePos[0] = i;
            basePos[1] = j;
            basePos[2] = k;
            if (field_756_e == 0)
            {
                field_756_e = 5 + field_759_b.nextInt(field_748_m);
            }
            if (!func_422_e())
            {
                return(false);
            }
            else
            {
                func_424_a();
                func_421_b();
                func_432_c();
                func_428_d();
                return(true);
            }
        }
Пример #3
0
 public override bool generate(World world, Random random, int i, int j, int k)
 {
     worldObj = world;
     long l = random.nextLong();
     field_759_b.setSeed(l);
     basePos[0] = i;
     basePos[1] = j;
     basePos[2] = k;
     if (field_756_e == 0)
     {
         field_756_e = 5 + field_759_b.nextInt(field_748_m);
     }
     if (!func_422_e())
     {
         return false;
     }
     else
     {
         func_424_a();
         func_421_b();
         func_432_c();
         func_428_d();
         return true;
     }
 }
Пример #4
0
 // NextInt64(long, long) uses Sample()
 public virtual long NextInt64(long minValue, long maxValue)
 {
     if (maxValue < minValue)
     {
         ThrowHelper.ThrowArgumentOutOfRangeException();
     }
     return(isSystemRandom ? (_random.nextLong() % maxValue)
                           : (long)(Sample() * long.MaxValue));
 }
Пример #5
0
        public virtual void generate(World world, int i, int j, byte[] abyte0)
        {
            int k = field_947_a;
            field_35530_d = world;
            rand = new java.util.Random(world.seed);
            long l = rand.nextLong();
            long l1 = rand.nextLong();
            for(int i1 = i - k; i1 <= i + k; i1++)
            {
                for(int j1 = j - k; j1 <= j + k; j1++)
                {
                    long l2 = (long)i1 * l;
                    long l3 = (long)j1 * l1;
                    rand = new java.util.Random(l2 ^ l3 ^ world.seed);
                    recursiveGenerate(world, i1, j1, i, j, abyte0);
                }

            }
        }
Пример #6
0
        public virtual void generate(World world, int i, int j, byte[] abyte0)
        {
            int k = field_947_a;

            field_35530_d = world;
            rand          = new java.util.Random(world.seed);
            long l  = rand.nextLong();
            long l1 = rand.nextLong();

            for (int i1 = i - k; i1 <= i + k; i1++)
            {
                for (int j1 = j - k; j1 <= j + k; j1++)
                {
                    long l2 = (long)i1 * l;
                    long l3 = (long)j1 * l1;
                    rand = new java.util.Random(l2 ^ l3 ^ world.seed);
                    recursiveGenerate(world, i1, j1, i, j, abyte0);
                }
            }
        }
Пример #7
0
        protected void generateCaveNode(long l, int i, int j, byte[] abyte0, double d, 
                double d1, double d2, float f, float f1, float f2, 
                int k, int i1, double d3)
        {
            double d4 = i * 16 + 8;
            double d5 = j * 16 + 8;
            float f3 = 0.0F;
            float f4 = 0.0F;
            java.util.Random random = new java.util.Random(l);
            if(i1 <= 0)
            {
                int j1 = field_947_a * 16 - 16;
                i1 = j1 - random.nextInt(j1 / 4);
            }
            bool flag = false;
            if(k == -1)
            {
                k = i1 / 2;
                flag = true;
            }
            int k1 = random.nextInt(i1 / 2) + i1 / 4;
            bool flag1 = random.nextInt(6) == 0;
            for(; k < i1; k++)
            {
                double d6 = 1.5D + (double)(MathHelper.sin(((float)k * 3.141593F) / (float)i1) * f * 1.0F);
                double d7 = d6 * d3;
                float f5 = MathHelper.cos(f2);
                float f6 = MathHelper.sin(f2);
                d += MathHelper.cos(f1) * f5;
                d1 += f6;
                d2 += MathHelper.sin(f1) * f5;
                if(flag1)
                {
                    f2 *= 0.92F;
                } else
                {
                    f2 *= 0.7F;
                }
                f2 += f4 * 0.1F;
                f1 += f3 * 0.1F;
                f4 *= 0.9F;
                f3 *= 0.75F;
                f4 += (random.nextFloat() - random.nextFloat()) * random.nextFloat() * 2.0F;
                f3 += (random.nextFloat() - random.nextFloat()) * random.nextFloat() * 4F;
                if(!flag && k == k1 && f > 1.0F && i1 > 0)
                {
                    generateCaveNode(random.nextLong(), i, j, abyte0, d, d1, d2, random.nextFloat() * 0.5F + 0.5F, f1 - 1.570796F, f2 / 3F, k, i1, 1.0D);
                    generateCaveNode(random.nextLong(), i, j, abyte0, d, d1, d2, random.nextFloat() * 0.5F + 0.5F, f1 + 1.570796F, f2 / 3F, k, i1, 1.0D);
                    return;
                }
                if(!flag && random.nextInt(4) == 0)
                {
                    continue;
                }
                double d8 = d - d4;
                double d9 = d2 - d5;
                double d10 = i1 - k;
                double d11 = f + 2.0F + 16F;
                if((d8 * d8 + d9 * d9) - d10 * d10 > d11 * d11)
                {
                    return;
                }
                if(d < d4 - 16D - d6 * 2D || d2 < d5 - 16D - d6 * 2D || d > d4 + 16D + d6 * 2D || d2 > d5 + 16D + d6 * 2D)
                {
                    continue;
                }
                d8 = MathHelper.floor_double(d - d6) - i * 16 - 1;
                int l1 = (MathHelper.floor_double(d + d6) - i * 16) + 1;
                d9 = MathHelper.floor_double(d1 - d7) - 1;
                int i2 = MathHelper.floor_double(d1 + d7) + 1;
                d10 = MathHelper.floor_double(d2 - d6) - j * 16 - 1;
                int j2 = (MathHelper.floor_double(d2 + d6) - j * 16) + 1;
                if(d8 < 0)
                {
                    d8 = 0;
                }
                if(l1 > 16)
                {
                    l1 = 16;
                }
                if(d9 < 1)
                {
                    d9 = 1;
                }
                //field_35530_d.getClass();
                if(i2 > 128 - 8)
                {
                    //field_35530_d.getClass();
                    i2 = 128 - 8;
                }
                if(d10 < 0)
                {
                    d10 = 0;
                }
                if(j2 > 16)
                {
                    j2 = 16;
                }
                bool flag2 = false;
                for(int k2 = (int) d8; !flag2 && k2 < l1; k2++)
                {
                    for(int i3 = (int) d10; !flag2 && i3 < j2; i3++)
                    {
                        for(int j3 = i2 + 1; !flag2 && j3 >= d9 - 1; j3--)
                        {
                            //field_35530_d.getClass();
                            int k3 = (k2 * 16 + i3) * 128 + j3;
                            if(j3 < 0)
                            {
                                continue;
                            }
                            //field_35530_d.getClass();
                            if(j3 >= 128)
                            {
                                continue;
                            }
                            if(abyte0[k3] == (byte)Blocks.AWater || abyte0[k3] == (byte)Blocks.SWater)
                            {
                                flag2 = true;
                            }
                            if(j3 != d9 - 1 && k2 != d8 && k2 != l1 - 1 && i3 != d10 && i3 != j2 - 1)
                            {
                                j3 = (int) d9;
                            }
                        }

                    }

                }

                if(flag2)
                {
                    continue;
                }
                for(int l2 = (int) d8; l2 < l1; l2++)
                {
                    double d12 = (((double)(l2 + i * 16) + 0.5D) - d) / d6;
                    for(int l3 = (int) d10; l3 < j2; l3++)
                    {
                        double d13 = (((double)(l3 + j * 16) + 0.5D) - d2) / d6;
                        //field_35530_d.getClass();
                        int i4 = (l2 * 16 + l3) * 128 + i2;
                        bool flag3 = false;
                        if(d12 * d12 + d13 * d13 >= 1.0D)
                        {
                            continue;
                        }
                        int j4 = i2 - 1;
                        bool label0 = false;
                        do
                        {
                            if(j4 < d9)
                            {
                                label0 = true;
                                break;
                            }
                            double d14 = (((double)j4 + 0.5D) - d1) / d7;
                            if(d14 > -0.69999999999999996D && d12 * d12 + d14 * d14 + d13 * d13 < 1.0D)
                            {
                                byte byte0 = abyte0[i4];
                                if (byte0 == (byte)Blocks.Grass)
                                {
                                    flag3 = true;
                                }
                                if (byte0 == (byte)Blocks.Stone || byte0 == (byte)Blocks.Dirt || byte0 == (byte)Blocks.Grass)
                                {
                                    if(j4 < 10)
                                    {
                                        abyte0[i4] = (byte)Blocks.ALava;
                                    } else
                                    {
                                        abyte0[i4] = 0;
                                        if (flag3 && abyte0[i4 - 1] == (byte)Blocks.Dirt)
                                        {
                                            abyte0[i4 - 1] = (byte)Blocks.Grass;
                                        }
                                    }
                                }
                            }
                            i4--;
                            j4--;
                        } while(true);
                        if (label0) continue;
                    }

                }

                if(flag)
                {
                    break;
                }
            }
        }
Пример #8
0
        protected void generateCaveNode(long l, int i, int j, byte[] abyte0, double d,
                                        double d1, double d2, float f, float f1, float f2,
                                        int k, int i1, double d3)
        {
            double d4 = i * 16 + 8;
            double d5 = j * 16 + 8;
            float  f3 = 0.0F;
            float  f4 = 0.0F;

            java.util.Random random = new java.util.Random(l);
            if (i1 <= 0)
            {
                int j1 = field_947_a * 16 - 16;
                i1 = j1 - random.nextInt(j1 / 4);
            }
            bool flag = false;

            if (k == -1)
            {
                k    = i1 / 2;
                flag = true;
            }
            int  k1    = random.nextInt(i1 / 2) + i1 / 4;
            bool flag1 = random.nextInt(6) == 0;

            for (; k < i1; k++)
            {
                double d6 = 1.5D + (double)(MathHelper.sin(((float)k * 3.141593F) / (float)i1) * f * 1.0F);
                double d7 = d6 * d3;
                float  f5 = MathHelper.cos(f2);
                float  f6 = MathHelper.sin(f2);
                d  += MathHelper.cos(f1) * f5;
                d1 += f6;
                d2 += MathHelper.sin(f1) * f5;
                if (flag1)
                {
                    f2 *= 0.92F;
                }
                else
                {
                    f2 *= 0.7F;
                }
                f2 += f4 * 0.1F;
                f1 += f3 * 0.1F;
                f4 *= 0.9F;
                f3 *= 0.75F;
                f4 += (random.nextFloat() - random.nextFloat()) * random.nextFloat() * 2.0F;
                f3 += (random.nextFloat() - random.nextFloat()) * random.nextFloat() * 4F;
                if (!flag && k == k1 && f > 1.0F && i1 > 0)
                {
                    generateCaveNode(random.nextLong(), i, j, abyte0, d, d1, d2, random.nextFloat() * 0.5F + 0.5F, f1 - 1.570796F, f2 / 3F, k, i1, 1.0D);
                    generateCaveNode(random.nextLong(), i, j, abyte0, d, d1, d2, random.nextFloat() * 0.5F + 0.5F, f1 + 1.570796F, f2 / 3F, k, i1, 1.0D);
                    return;
                }
                if (!flag && random.nextInt(4) == 0)
                {
                    continue;
                }
                double d8  = d - d4;
                double d9  = d2 - d5;
                double d10 = i1 - k;
                double d11 = f + 2.0F + 16F;
                if ((d8 * d8 + d9 * d9) - d10 * d10 > d11 * d11)
                {
                    return;
                }
                if (d < d4 - 16D - d6 * 2D || d2 < d5 - 16D - d6 * 2D || d > d4 + 16D + d6 * 2D || d2 > d5 + 16D + d6 * 2D)
                {
                    continue;
                }
                d8 = MathHelper.floor_double(d - d6) - i * 16 - 1;
                int l1 = (MathHelper.floor_double(d + d6) - i * 16) + 1;
                d9 = MathHelper.floor_double(d1 - d7) - 1;
                int i2 = MathHelper.floor_double(d1 + d7) + 1;
                d10 = MathHelper.floor_double(d2 - d6) - j * 16 - 1;
                int j2 = (MathHelper.floor_double(d2 + d6) - j * 16) + 1;
                if (d8 < 0)
                {
                    d8 = 0;
                }
                if (l1 > 16)
                {
                    l1 = 16;
                }
                if (d9 < 1)
                {
                    d9 = 1;
                }
                //field_35530_d.getClass();
                if (i2 > 128 - 8)
                {
                    //field_35530_d.getClass();
                    i2 = 128 - 8;
                }
                if (d10 < 0)
                {
                    d10 = 0;
                }
                if (j2 > 16)
                {
                    j2 = 16;
                }
                bool flag2 = false;
                for (int k2 = (int)d8; !flag2 && k2 < l1; k2++)
                {
                    for (int i3 = (int)d10; !flag2 && i3 < j2; i3++)
                    {
                        for (int j3 = i2 + 1; !flag2 && j3 >= d9 - 1; j3--)
                        {
                            //field_35530_d.getClass();
                            int k3 = (k2 * 16 + i3) * 128 + j3;
                            if (j3 < 0)
                            {
                                continue;
                            }
                            //field_35530_d.getClass();
                            if (j3 >= 128)
                            {
                                continue;
                            }
                            if (abyte0[k3] == (byte)Blocks.AWater || abyte0[k3] == (byte)Blocks.SWater)
                            {
                                flag2 = true;
                            }
                            if (j3 != d9 - 1 && k2 != d8 && k2 != l1 - 1 && i3 != d10 && i3 != j2 - 1)
                            {
                                j3 = (int)d9;
                            }
                        }
                    }
                }

                if (flag2)
                {
                    continue;
                }
                for (int l2 = (int)d8; l2 < l1; l2++)
                {
                    double d12 = (((double)(l2 + i * 16) + 0.5D) - d) / d6;
                    for (int l3 = (int)d10; l3 < j2; l3++)
                    {
                        double d13 = (((double)(l3 + j * 16) + 0.5D) - d2) / d6;
                        //field_35530_d.getClass();
                        int  i4    = (l2 * 16 + l3) * 128 + i2;
                        bool flag3 = false;
                        if (d12 * d12 + d13 * d13 >= 1.0D)
                        {
                            continue;
                        }
                        int  j4     = i2 - 1;
                        bool label0 = false;
                        do
                        {
                            if (j4 < d9)
                            {
                                label0 = true;
                                break;
                            }
                            double d14 = (((double)j4 + 0.5D) - d1) / d7;
                            if (d14 > -0.69999999999999996D && d12 * d12 + d14 * d14 + d13 * d13 < 1.0D)
                            {
                                byte byte0 = abyte0[i4];
                                if (byte0 == (byte)Blocks.Grass)
                                {
                                    flag3 = true;
                                }
                                if (byte0 == (byte)Blocks.Stone || byte0 == (byte)Blocks.Dirt || byte0 == (byte)Blocks.Grass)
                                {
                                    if (j4 < 10)
                                    {
                                        abyte0[i4] = (byte)Blocks.ALava;
                                    }
                                    else
                                    {
                                        abyte0[i4] = 0;
                                        if (flag3 && abyte0[i4 - 1] == (byte)Blocks.Dirt)
                                        {
                                            abyte0[i4 - 1] = (byte)Blocks.Grass;
                                        }
                                    }
                                }
                            }
                            i4--;
                            j4--;
                        } while(true);
                        if (label0)
                        {
                            continue;
                        }
                    }
                }

                if (flag)
                {
                    break;
                }
            }
        }
Пример #9
0
        public override void Populate(Chunk c)
        {
            if (worldObj.seed != 0)
            {
                lock (this.Lock)
                {
                    //BlockSand.fallInstantly = true;
                    int          k            = c.x * 16;
                    int          l            = c.z * 16;
                    BiomeGenBase biomegenbase = worldObj.chunkManager.getBiomeGenAt(k + 16, l + 16);
                    random.setSeed(worldObj.seed);
                    long l1 = (random.nextLong() / 2L) * 2L + 1L;
                    long l2 = (random.nextLong() / 2L) * 2L + 1L;
                    random.setSeed((long)c.x * l1 + (long)c.z * l2 ^ worldObj.seed);
                    bool flag = false;
                    if (mapFeaturesEnabled)
                    {
                        //mineshaftGenerator.func_35532_a(worldObj, rand, i, j);
                        //flag = villageGenerator.func_35532_a(worldObj, rand, i, j);
                        //strongholdGenerator.func_35532_a(worldObj, rand, i, j);
                    }
                    if (!flag && random.nextInt(4) == 0)
                    {
                        int i1 = k + random.nextInt(16) + 8;
                        int i2 = random.nextInt(worldObj.worldYMax);
                        int i3 = l + random.nextInt(16) + 8;
                        (new WorldGenLakes((byte)Blocks.SWater)).generate(worldObj, random, i1, i2, i3);
                    }
                    if (!flag && random.nextInt(8) == 0)
                    {
                        int j1 = k + random.nextInt(16) + 8;
                        int j2 = random.nextInt(random.nextInt(worldObj.worldYMax - 8) + 8);
                        int j3 = l + random.nextInt(16) + 8;
                        if (j2 < 63 || random.nextInt(10) == 0)
                        {
                            (new WorldGenLakes((byte)Blocks.SLava)).generate(worldObj, random, j1, j2, j3);
                        }
                    }
                    for (int k1 = 0; k1 < 8; k1++)
                    {
                        int k2 = k + random.nextInt(16) + 8;
                        int k3 = random.nextInt(worldObj.worldYMax);
                        int l3 = l + random.nextInt(16) + 8;
                        if (!(new WorldGenDungeons()).generate(worldObj, random, k2, k3, l3))
                        {
                            ;
                        }
                        //if ((new WorldGenDungeons()).generate(worldObj, random, k2, k3, l3)) Console.WriteLine("Dungeon @ {0},{1},{2}", k2, k3, l3);
                    }

                    biomegenbase.func_35513_a(worldObj, random, k, l);
                    //SpawnerAnimals.func_35573_a(worldObj, biomegenbase, k + 8, l + 8, 16, 16, rand);
                    k += 8;
                    l += 8;
                    for (int i2 = 0; i2 < 16; i2++)
                    {
                        for (int j3 = 0; j3 < 16; j3++)
                        {
                            int j4 = worldObj.GetTopSolidOrLiquidBlock(k + i2, l + j3);
                            if (worldObj.func_40210_p(i2 + k, j4 - 1, j3 + l))
                            {
                                worldObj.SetBlock(i2 + k, j4 - 1, j3 + l, (byte)Blocks.Ice);
                            }
                            if (worldObj.func_40215_r(i2 + k, j4, j3 + l))
                            {
                                worldObj.SetBlock(i2 + k, j4, j3 + l, (byte)Blocks.Snow);
                            }
                        }
                    }

                    //BlockSand.fallInstantly = false;
                }
            }
        }