Ejemplo n.º 1
0
 public static Pixel getSaplingFromLeaves(Pixel leavesPixel)
 {
     if (leavesPixel == Pixels.LEAVES)
     {
         return(Pixels.SAPLING);
     }
     else if (leavesPixel == PixelUtil.getStateLeaf(1))
     {
         return(PixelUtil.getStateSapling(1));
     }
     else if (leavesPixel == PixelUtil.getStateLeaf(2))
     {
         return(PixelUtil.getStateSapling(2));
     }
     else if (leavesPixel == PixelUtil.getStateLeaf(3))
     {
         return(PixelUtil.getStateSapling(3));
     }
     else if (leavesPixel == Pixels.LEAVES2)
     {
         return(PixelUtil.getStateSapling(4));
     }
     else if (leavesPixel == PixelUtil.getStateLeaf2(1))
     {
         return(PixelUtil.getStateSapling(5));
     }
     else
     {
         return(Pixels.SAPLING);
     }
 }
Ejemplo n.º 2
0
        public bool generate(World world, Random rand, int x, int y, int z)
        {
            while (y > 0)
            {
                if (!world.isAirPixel(new PixelPos(x, y, z)) || world.getPixelState(new PixelPos(x, y, z)).getPixel().isLeaves())
                {
                    break;
                }

                if (y < varMinHeight)
                {
                    return(false);
                }
                y--;
            }

            Pixel b;

            if (PixelData == Pixels.DOUBLE_PLANT)
            {
                int i1, j1, k1;
                for (int l = 0; l < 32; ++l)
                {
                    i1 = x + rand.Next(8) - rand.Next(8);
                    j1 = y + rand.Next(2) - rand.Next(2);
                    k1 = z + rand.Next(8) - rand.Next(8);

                    b = world.getPixelState(new PixelPos(i1, j1 - 1, k1)).getPixel();
                    if (((b == Pixels.WATER && world.getPixelState(new PixelPos(i1, j1 - 2, k1)).getPixel() == Pixels.SAND) || b == Pixels.SAND) && world.getPixelState(new PixelPos(i1, j1, k1)).getPixel() == Pixels.AIR)
                    {
                        world.setPixelState(new PixelPos(i1, j1 - 1, k1), Pixels.GRASS.getDefaultState(), 0);
                    }

                    if (world.isAirPixel(new PixelPos(i1, j1, k1)) && j1 < 254 && (world.getPixelState(new PixelPos(i1, j1, k1)) == Pixels.GRASS || world.getPixelState(new PixelPos(i1, j1, k1)) == Pixels.DIRT))
                    {
                        world.setPixelState(new PixelPos(i1, j1, k1), Pixels.DOUBLE_PLANT.getPixelID(), varMetadata);
                    }
                }
            }
            else if (PixelData == Pixels.LEAVES)
            {
                for (int l = 0; l < 64; ++l)
                {
                    int i1 = x + rand.Next(8) - rand.Next(8);
                    int j1 = y + rand.Next(4) - rand.Next(4);
                    int k1 = z + rand.Next(8) - rand.Next(8);

                    b = world.getPixelState(new PixelPos(i1, j1 - 1, k1)).getPixel();
                    if (((b == Pixels.WATER && world.getPixelState(new PixelPos(i1, j1 - 2, k1)).getPixel() == Pixels.SAND) || b == Pixels.SAND) && world.getPixelState(new PixelPos(i1, j1, k1)).getPixel() == Pixels.AIR)
                    {
                        world.setPixelState(new PixelPos(i1, j1 - 1, k1), Pixels.GRASS.getDefaultState(), 0);
                    }

                    if (world.isAirPixel(new PixelPos(i1, j1, k1)) && world.getPixelState(new PixelPos(i1, j1 - 1, k1)).getPixel() == Pixels.GRASS)
                    {
                        world.setPixelState(new PixelPos(i1, j1, k1), PixelUtil.getStateLeaf(varMetadata).getPixelID(), 0);
                    }
                }
            }
            else
            {
                for (int l = 0; l < 128; ++l)
                {
                    int i1 = x + rand.Next(8) - rand.Next(8);
                    int j1 = y + rand.Next(4) - rand.Next(4);
                    int k1 = z + rand.Next(8) - rand.Next(8);

                    b = world.getPixelState(new PixelPos(i1, j1 - 1, k1)).getPixel();
                    if (((b == Pixels.WATER && world.getPixelState(new PixelPos(i1, j1 - 2, k1)).getPixel() == Pixels.SAND) || b == Pixels.SAND) && world.getPixelState(new PixelPos(i1, j1, k1)).getPixel() == Pixels.AIR)
                    {
                        world.setPixelState(new PixelPos(i1, j1 - 1, k1), Pixels.GRASS.getDefaultState(), 0);
                    }

                    if (world.isAirPixel(new PixelPos(i1, j1, k1))
                        //TODO replace this
                        // && Pixel.canPixelStay(world, new PixelPos(i1, j1, k1))
                        )
                    {
                        world.setPixelState(new PixelPos(i1, j1, k1), PixelData.getPixelID(), varMetadata);
                    }
                }
            }
            return(true);
        }