nextFloat() public method

public nextFloat ( ) : float
return float
コード例 #1
0
ファイル: WorldGenClay.cs プロジェクト: riverar/Crafty
        public override bool generate(World world, Random random, int i, int j, int k)
        {
            if (world.getBlockMaterial(i, j, k) != Material.water)
            {
                return false;
            }
            float f = random.nextFloat()*3.141593F;
            double d = (i + 8) + (MathHelper.sin(f)*numberOfBlocks)/8F;
            double d1 = (i + 8) - (MathHelper.sin(f)*numberOfBlocks)/8F;
            double d2 = (k + 8) + (MathHelper.cos(f)*numberOfBlocks)/8F;
            double d3 = (k + 8) - (MathHelper.cos(f)*numberOfBlocks)/8F;
            double d4 = j + random.nextInt(3) + 2;
            double d5 = j + random.nextInt(3) + 2;
            for (int l = 0; l <= numberOfBlocks; l++)
            {
                double d6 = d + ((d1 - d)*l)/numberOfBlocks;
                double d7 = d4 + ((d5 - d4)*l)/numberOfBlocks;
                double d8 = d2 + ((d3 - d2)*l)/numberOfBlocks;
                double d9 = (random.nextDouble()*numberOfBlocks)/16D;
                double d10 = (MathHelper.sin((l*3.141593F)/numberOfBlocks) + 1.0F)*d9 + 1.0D;
                double d11 = (MathHelper.sin((l*3.141593F)/numberOfBlocks) + 1.0F)*d9 + 1.0D;
                for (var i1 = (int) (d6 - d10/2D); i1 <= (int) (d6 + d10/2D); i1++)
                {
                    for (var j1 = (int) (d7 - d11/2D); j1 <= (int) (d7 + d11/2D); j1++)
                    {
                        for (var k1 = (int) (d8 - d10/2D); k1 <= (int) (d8 + d10/2D); k1++)
                        {
                            double d12 = ((i1 + 0.5D) - d6)/(d10/2D);
                            double d13 = ((j1 + 0.5D) - d7)/(d11/2D);
                            double d14 = ((k1 + 0.5D) - d8)/(d10/2D);
                            if (d12*d12 + d13*d13 + d14*d14 >= 1.0D)
                            {
                                continue;
                            }
                            int l1 = world.getBlockId(i1, j1, k1);
                            if (l1 == Block.sand.blockID)
                            {
                                world.setBlock(i1, j1, k1, clayBlockId);
                            }
                        }
                    }
                }
            }

            return true;
        }
コード例 #2
0
        private void UnknownB(int i, int j, byte[] abyte0, double d, double d1, double d2, float f, float f1, float f2, int k, int l, double d3)
        {
            double d4 = i * 16 + 8;
            double d5 = j * 16 + 8;
            float f3 = 0.0F;
            float f4 = 0.0F;
            Random random = new Random(rand.nextLong());
            if (l <= 0)
            {
                int i1 = field_947_a * 16 - 16;
                l = i1 - random.nextInt(i1 / 4);
            }
            bool flag = false;
            if (k == -1)
            {
                k = l / 2;
                flag = true;
            }
            int j1 = random.nextInt(l / 2) + l / 4;
            bool flag1 = random.nextInt(6) == 0;
            for (; k < l; k++)
            {
                double d6 = 1.5D + (double)(MathHelper.Sin(((float)k * 3.141592f) / (float)l) * 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 == j1 && f > 1.0F)
                {
                    UnknownB(i, j, abyte0, d, d1, d2, random.nextFloat() * 0.5F + 0.5F, f1 - 1.570796F, f2 / 3F, k,
                                      l, 1.0D);
                    UnknownB(i, j, abyte0, d, d1, d2, random.nextFloat() * 0.5F + 0.5F, f1 + 1.570796F, f2 / 3F, k,
                                      l, 1.0D);
                    return;
                }
                if (!flag && random.nextInt(4) == 0)
                {
                    continue;
                }
                double d8 = d - d4;
                double d9 = d2 - d5;
                double d10 = l - 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 k1 = (MathHelper.floor_double(d + d6) - i * 16) + 1;
                d9 = MathHelper.floor_double(d1 - d7) - 1;
                int l1 = MathHelper.floor_double(d1 + d7) + 1;
                d10 = MathHelper.floor_double(d2 - d6) - j * 16 - 1;
                int i2 = (MathHelper.floor_double(d2 + d6) - j * 16) + 1;

                if (d8 < 0)
                    d8 = 0;
                if (k1 > 16)
                    k1 = 16;
                if (d9 < 1)
                    d9 = 1;
                if (l1 > 120)
                    l1 = 120;
                if (d10 < 0)
                    d10 = 0;
                if (i2 > 16)
                    i2 = 16;

                for (int j2 = (int)d8; j2 < k1; j2++)
                {
                    for (int l2 = (int)d10; l2 < i2; l2++)
                    {
                        for (int i3 = l1 + 1; i3 >= d9 - 1; i3--)
                        {
                            int j3 = (j2 * 16 + l2) * 128 + i3;
                            if (i3 < 0 || i3 >= 128)
                                continue;
                            if (abyte0[j3] == (byte)BlockData.Blocks.Still_Water || abyte0[j3] == (byte)BlockData.Blocks.Water)
                                goto cont;
                            if (i3 != d9 - 1 && j2 != d8 && j2 != k1 - 1 && l2 != d10 && l2 != i2 - 1)
                                i3 = (int)d9;
                        }
                    }
                }

                for (int k2 = (int)d8; k2 < k1; k2++)
                {
                    double d12 = (((double)(k2 + i * 16) + 0.5D) - d) / d6;

                    for (int k3 = (int)d10; k3 < i2; k3++)
                    {
                        double d13 = (((double)(k3 + j * 16) + 0.5D) - d2) / d6;
                        int l3 = (k2 * 16 + k3) * 128 + l1;
                        bool flag3 = false;

                        if (d12 * d12 + d13 * d13 >= 1.0D)
                            continue;

                        int i4 = l1 - 1;
                        while (i4 >= d9)
                        {
                            double d14 = (((double)i4 + 0.5D) - d1) / d7;
                            if (d14 > -0.7 && d12 * d12 + d14 * d14 + d13 * d13 < 1.0)
                            {
                                byte byte0 = abyte0[l3];
                                if (byte0 == (byte)BlockData.Blocks.Grass)
                                {
                                    flag3 = true;
                                }
                                if (byte0 == (byte)BlockData.Blocks.Stone || byte0 == (byte)BlockData.Blocks.Dirt ||
                                    byte0 == (byte)BlockData.Blocks.Grass)
                                {
                                    if (i4 < 10)
                                    {
                                        abyte0[l3] = (byte)BlockData.Blocks.Still_Lava;
                                    }
                                    else
                                    {
                                        abyte0[l3] = 0;
                                        if (flag3 && abyte0[l3 - 1] == (byte)BlockData.Blocks.Dirt)
                                        {
                                            abyte0[l3 - 1] = (byte)BlockData.Blocks.Grass;
                                        }
                                    }
                                }
                            }
                            l3--;
                            i4--;
                        }
                    }
                }

                if (flag)
                {
                    break;
                }

            cont:
                continue;
            }
        }
コード例 #3
0
ファイル: MapGenCaves.cs プロジェクト: riverar/Crafty
        public void releaseEntitySkin(int i, int j, byte[] abyte0, double d, double d1,
            double d2, float f, float f1, float f2, int k, int l,
            double d3)
        {
            double d4 = i*16 + 8;
            double d5 = j*16 + 8;
            float f3 = 0.0F;
            float f4 = 0.0F;
            var random = new Random(rand.nextLong());
            if (l <= 0)
            {
                int i1 = field_947_a*16 - 16;
                l = i1 - random.nextInt(i1/4);
            }
            bool flag = false;
            if (k == -1)
            {
                k = l/2;
                flag = true;
            }
            int j1 = random.nextInt(l/2) + l/4;
            bool flag1 = random.nextInt(6) == 0;
            for (; k < l; k++)
            {
                double d6 = 1.5D + (MathHelper.sin((k*3.141593F)/l)*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 == j1 && f > 1.0F)
                {
                    releaseEntitySkin(i, j, abyte0, d, d1, d2, random.nextFloat()*0.5F + 0.5F, f1 - 1.570796F, f2/3F, k,
                                      l, 1.0D);
                    releaseEntitySkin(i, j, abyte0, d, d1, d2, random.nextFloat()*0.5F + 0.5F, f1 + 1.570796F, f2/3F, k,
                                      l, 1.0D);
                    return;
                }
                if (!flag && random.nextInt(4) == 0)
                {
                    continue;
                }
                double d8 = d - d4;
                double d9 = d2 - d5;
                double d10 = l - 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 k1 = (MathHelper.floor_double(d + d6) - i*16) + 1;
                d9 = MathHelper.floor_double(d1 - d7) - 1;
                int l1 = MathHelper.floor_double(d1 + d7) + 1;
                d10 = MathHelper.floor_double(d2 - d6) - j*16 - 1;
                int i2 = (MathHelper.floor_double(d2 + d6) - j*16) + 1;
                if (d8 < 0)
                {
                    d8 = 0;
                }
                if (k1 > 16)
                {
                    k1 = 16;
                }
                if (d9 < 1)
                {
                    d9 = 1;
                }
                if (l1 > 120)
                {
                    l1 = 120;
                }
                if (d10 < 0)
                {
                    d10 = 0;
                }
                if (i2 > 16)
                {
                    i2 = 16;
                }
                bool flag2 = false;
                for (var j2 = (int) d8; !flag2 && j2 < k1; j2++)
                {
                    for (var l2 = (int) d10; !flag2 && l2 < i2; l2++)
                    {
                        for (int i3 = l1 + 1; !flag2 && i3 >= d9 - 1; i3--)
                        {
                            int j3 = (j2*16 + l2)*128 + i3;
                            if (i3 < 0 || i3 >= 128)
                            {
                                continue;
                            }
                            if (abyte0[j3] == Block.waterStill.blockID || abyte0[j3] == Block.waterMoving.blockID)
                            {
                                flag2 = true;
                            }
                            if (i3 != d9 - 1 && j2 != d8 && j2 != k1 - 1 && l2 != d10 && l2 != i2 - 1)
                            {
                                i3 = (int) d9;
                            }
                        }
                    }
                }

                if (flag2)
                {
                    continue;
                }
                for (var k2 = (int) d8; k2 < k1; k2++)
                {
                    double d12 = (((k2 + i*16) + 0.5D) - d)/d6;

                    for (var k3 = (int) d10; k3 < i2; k3++)
                    {
                        double d13 = (((k3 + j*16) + 0.5D) - d2)/d6;
                        int l3 = (k2*16 + k3)*128 + l1;
                        bool flag3 = false;
                        if (d12*d12 + d13*d13 >= 1.0D)
                        {
                            continue;
                        }
                        int i4 = l1 - 1;
                        do
                        {
                            if (i4 < d9)
                            {
                                goto label0;
                            }
                            double d14 = ((i4 + 0.5D) - d1)/d7;
                            if (d14 > -0.69999999999999996D && d12*d12 + d14*d14 + d13*d13 < 1.0D)
                            {
                                byte byte0 = abyte0[l3];
                                if (byte0 == Block.grass.blockID)
                                {
                                    flag3 = true;
                                }
                                if (byte0 == Block.stone.blockID || byte0 == Block.dirt.blockID ||
                                    byte0 == Block.grass.blockID)
                                {
                                    if (i4 < 10)
                                    {
                                        abyte0[l3] = (byte) Block.lavaStill.blockID;
                                    }
                                    else
                                    {
                                        abyte0[l3] = 0;
                                        if (flag3 && abyte0[l3 - 1] == Block.dirt.blockID)
                                        {
                                            abyte0[l3 - 1] = (byte) Block.grass.blockID;
                                        }
                                    }
                                }
                            }
                            l3--;
                            i4--;
                        } while (true);
                        label0:
                        ;
                    }
                }

                if (flag)
                {
                    break;
                }
            }
        }