示例#1
0
 /// <summary>
 /// Add your custom block to the list
 /// </summary>
 /// <param name="b">Block to add</param>
 public static void Add(Block b)
 {
     if (!CustomBlockList.Contains(b))
         CustomBlockList.Add(b);
 }
示例#2
0
 public int SearchColumn(int x, int z, Block id)
 {
     return SearchColumn(x, z, id, CWMap.Size.y - 1);
 }
示例#3
0
 public int SearchColumn(int x, int z, Block id, int zStart)
 {
     for (int y = zStart; y > 0; y--)
     {
         if (GetBlock(x, z, y) == id)
         {
             return y;
         }
     }
     return -1; // -1 means 'not found'
 }
示例#4
0
 /// <summary>
 /// Fills the Y layer.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="z">The z.</param>
 /// <param name="block">The block.</param>
 public void FillY(int x, int z, Block block)
 {
     for (int y = 0; y < CWMap.Size.z; y++)
         SetBlock(x, z, y, block);
 }
示例#5
0
 /// <summary>
 /// Fills the Z layer.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="y">The y.</param>
 /// <param name="block">The block.</param>
 public void FillZ(int x, int y, Block block)
 {
     for (int z = 0; z < CWMap.Size.y; z++)
         SetBlock(x, z, y, block);
 }
示例#6
0
 /// <summary>
 /// Fills the X layer.
 /// </summary>
 /// <param name="y">The y.</param>
 /// <param name="z">The z.</param>
 /// <param name="block">The block.</param>
 public void FillX(int y, int z, Block block)
 {
     for (int x = 0; x < CWMap.Size.x; x++)
         SetBlock(x, z, y, block);
 }
示例#7
0
 /// <summary>
 /// Fills the plane ZY.
 /// </summary>
 /// <param name="x">The x.</param>
 /// <param name="block">The block.</param>
 public void FillPlaneZY(int x, Block block)
 {
     for (int z = 0; z < CWMap.Size.y; z++)
         for (int y = 0; y < CWMap.Size.z; y++)
             SetBlock(x, z, y, block);
 }
示例#8
0
 /// <summary>
 /// Fills the plane XZ.
 /// </summary>
 /// <param name="y">The y.</param>
 /// <param name="block">The block.</param>
 public void FillPlaneXZ(int y, Block block)
 {
     for (int x = 0; x < CWMap.Size.x; x++)
         for (int z = 0; z < CWMap.Size.y; z++)
             SetBlock(x, z, y, block);
 }
示例#9
0
 /// <summary>
 /// Fills the plane XY.
 /// </summary>
 /// <param name="z">The z.</param>
 /// <param name="block">The block.</param>
 public void FillPlaneXY(int z, Block block)
 {
     for (int x = 0; x < CWMap.Size.x; x++)
         for (int y = 0; y < CWMap.Size.z; y++)
             SetBlock(x, z, y, block);
 }
示例#10
0
        /// <summary>
        /// Fills the <see cref="Cuboid"/> with <paramref name="block"/>.
        /// </summary>
        /// <param name="block">The <see cref="Block"/> to fill with.</param>
        /// <param name="world">The <see cref="Level"/>.</param>
        /// <param name="p">The player.</param>
        /// <remarks></remarks>
        public void Fill(Block block, Level world, Player p = null)
        {
            var buffer = new List<Pos>();
            ushort x, z, y;
            ushort
                xmin = (ushort) Min.x,
                xmax = (ushort) Max.x,
                zmin = (ushort) Min.z,
                zmax = (ushort) Max.z,
                ymin = (ushort) Min.y,
                ymax = (ushort) Max.y;

            for (x = xmin; x <= xmax; ++x)
                for (z = zmin; z <= zmax; ++z)
                    for (y = ymin; y <= ymax; ++y)
                        if (world.GetBlock(x, z, y) != block)
                            BufferAdd(buffer, x, z, y);

            //Level Blockqueue
            if (p != null)
                p.SendMessage(buffer.Count.ToString(CultureInfo.InvariantCulture) + " blocks.");

            buffer.ForEach(
                pos =>
                world.BlockChange((ushort) (pos.pos.x), (ushort) (pos.pos.z), (ushort) (pos.pos.y), block, p));
        }