Shape Command
The shape command is primarily used for modifying sections of blocks in the minecraft world. It can be used to create shapes such as cubes, spheres and pyramids or to modify existing blocks within the chosen shape.

For example, you could use the shape command to create a pyramid out of sandstone or to remove all snow within a certain distance of your location. By default, this command is disabled in survival worlds.

The /shape command is meant mostly for staff as it can be misused for griefing purposes. Veterans can use /shape ext, but the maximum range is halved. Mods can use chunk, cube, ext, line, path, pyramid, rectangle and sel. Currently, only admins can create spheres and cylinders.

Currently the maximum range for all shape commands is defined by alchemyMax in cheesemod.properties This will be improved in the next release of CheeseMod.

Block Selection
One of the most important parts of /shape is deciding which blocks you are selecting in the from argument. Below you will find the various options.
BlockThe simplest way to select blocks is by using the id number or block name, such as 3 for dirt, 0 for air or redwool for 35-14.
Block and dataYou can also add a data value to the id number or name, example: 35-6 or wool-6 would select only pink wool.
Block ListSometimes one block isn't enough, you can also do a list in the format of id numbers, id-data, itemname, or itemname-data, seperated by a , such as stone,2,5-1 to select stone, grass and pine wood.
Exclusion BlocksYou can invert the block, block and data and block list selections by putting a ! in front of them. For example, !50 would select everything except torches and !stone,grass,dirt would select everything except stone, grass, and dirt.
AllReplaces everything.
BlockSelects everything except air
SolidSelects everything except air, water and lava
WaterSelects only water, works better than using the id.
LavaSelects only lava, works better than using the id.
StructureDoesn't replace functional blocks, so blocks like torches, chests, stairs and redstone wire will be left alone.
Structure2The same as structure, but also ignores liquids.

Block To
You also have multiple choices when decided what block to convert your matches to.
BlockThe simplest way is by using the id number or block name, such as 3 for dirt, 0 for air or redwool for 35-14. This will ignore the data value unless unless the itemname has a specific value.
Block and dataYou can also add a data value to the id number, example: 35-6 or wool-6 would select only pink wool.
Block ListSometimes one id isn't enough, you can also do a list in the format of id numbers, id-data, itemname, or itemname-data, seperated by a , such as 1,2,3 to randomly choose stone, grass or dirt. The to list also supports #, which will not alter the block. Example: #,0 would only change 50% of blocks selected to 0.
CopyCopy will not modify the blocks in any way, but it will give you an id number for use in model related commands. For more information: go here
CutCut removes all the blocks selected, but saves them to be used as a model. For more information: go here
RainbowIt would be annoying to put all 16 colors of wool into an id list, so you can use the keyword rainbow as a shortcut.

Selection Format
Whenever you select blocks with the /shape command you have to choose a format, the format generally decides the shape of the selection area but there are some special cases. Different formats require different arguments, which are listed below.

Chunks
Chunks can be edited using /shape chunk [from] [to]. Chunks are the 16x16x256 pieces that make up the minecraft world.

Cubes
Cubes are created using /shape cube [from] [to] [size]. When you create a cube, you will be at the center. You can also specify hcube for a hollow cube.

Cylinders
Cylinders are created using /shape cylinder [from] [to] [sizeX] [sizeY] [sizeZ]. When you create a cylinder, you will be at the bottom. You can also specify hcylinder for a hollow cylinder. Cylinders can also be rotated using xcylinder and zcylinder, or xhcylinder and zhcylinder.

Extinguish
Extinguish is done using /shape ext [size]. This is similar to doing /shape cube 51 0 [size] but it does it without breakpoints which is necessary for removing fire.

Lines
Lines are created using /shape line [from] [to] [length]. When you create a line, it will start at foot level and go in whichever direction you are looking (straight line or diagonal).

Paths
Paths are created using /shape path [to] [length]. A path is like a line, but its placed on the highest y block for each x/z position (with some exceptions) instead of at foot level. This makes it useful for making roads, but keep in mind that this function is not smart and will go on top of trees or whatever else may get in the way.

Pyramids
Pyramids are created using /shape pyramid [from] [to] [height]. The pyramid will be placed with its bottom at your feet. If you specify a negative height, the pyramid will be upside down. You can also specifiy hpyramid for a hollow pyramid.

Rectangles
Rectangles are created using /shape rectangle [from] [to] [widthX] [height] [widthZ]. When you create a rectangle, you will be at the center. You can also specify hrectangle for a hollow rectangle. If you leave off the z width, it will use the x width for z as well.

Selection
If you have selected 2 corner points, you can use /shape sel [from] [to] to modify blocks within the selection.

Spheres
Spheres are created using /shape sphere [from] [to] [size] or /shape sphere [from] [to] [sizeX] [sizeY] [sizeZ]. When you create a sphere, you will be at the center. You can also specify hsphere for a hollow sphere.
Custom Selection
Selecting blocks via the normal shapes can be useful, but it can be hard to visualize the exact edges of the shapes you are making. For this there is custom selection, which allows you to select 2 corner points, which produces a rectangle shaped selection. The custom selection can also be used to measure areas, once 2 points are selected it will give the rectangles dimensions. You can do/shape sel to view the current selection info. There a couple different ways to make this selection.

Wand Selection
The easiest way to select blocks is using the wand, which by default is the Blaze Rod. Simply left or right click while holding the wand and it will select either the block you are looking at, or the air at your feet if you are not close enough to a block. Left click for corner 1, right click for corner 2.

Command Selection
You can also use /shape block [1/2] to select the block at your feet.

Shift
You can use /shape shift [direction] [distance] [/choice] to move one or both of the selection points. If you wish to move both, leave off the choice option, otherwise put a 1 or 2.


Models
Whenever you use a /shape command you create a model, this model can then be used in other shape commands or the history system. Each model has an id code which is used to select it. If an id starts with the - sign, it can be used in any world, any id generated from a copy/paste will be like this. If it does not start with a - sign, it is limited to the world it was created in.

Copy
You can copy blocks by using copy in the "to" slot of any /shape command. You can also do /shape copy [from] as a shortcut for /shape sel [from] copy. The copy is saved relative from your position, so if you're 100 blocks east of it when you copy then you will be 100 blocks east of wherever you paste it.

Cut
You can also cut blocks by using cut in the "to" slot of any /shape command. You can also do /shape cut [from] as a shortcut for /shape sel [from] cut. Cut replaces all selected blocks with air, but saves a copy. The copy is saved relative from your position, so if your 100 blocks east of it when you copy then you will be 100 blocks east of wherever you paste it.

Paste
Once you have a model you can paste it using /shape paste to paste your last cut/copy or /shape paste [id] to paste any model you want. If a model was created with copy/cut its id will start with - and it can be used in any world, if not then you can only use it in the world it was created. The paste will be located in the same relative position from which it was created, so if you were standing on a gold block when you created it then you will be standing on the gold block whenever you paste.


History
Whenever you use a /shape command (excluding /shape ext) it is saved in your command history. By default, the history will contain your last 3 days of activity as well as the current day, but this time can be modified by the server properties. You can view a list of your history via /shape history [/page] [/type] [/type2], but it will only show history for your current world. You can also shorten history to hist. The optional type1 argument can either be the keyword "all" or "redo" or "undo". The optional type2 argument can be either "all" or any of the /shape types such as sphere, hcube, etc. Each history item has an id letter and number which can be used with the undo/redo system (see below).

Undo
If you make a mistake with a /shape command, or just decide you don't like it, you can use /shape undo to restore the changed blocks. This will completely restore all affected blocks, even if they had been modified after the command. Like most undo systems, you can continue using /shape undo to undo older and older commands from your command history. Undos are stored per world, so you have to be in the world that the command was used in for the undo to be available. If you wish to undo a specific command, you can use /shape history to find its id and use /shape undo [id]. You can even undo commands which have already been undone. When used, it will teleport you to the location that you performed the original command if teleporting is allowed in your current world. Undo will always select the most recently available undo from your history list, unless your last /shape command was a redo in which case it will undo the redo regardless of its position on the list.

Redo
Whenever you use /shape undo the blocks you reverted are made available to /shape redo. Redo will essentially "undo" the undo. Like undo, this will restore blocks even if they had been modified since the original command was run. Unlike undo, /shape redo only works on the most recent undo, not your entire command history. If you wish to redo a command other than your most recent one, you will have to use the commands id via /shape redo [id]. You can even redo commands which have already been redone. When used, it will teleport you to the location that you performed the original command if teleporting is allowed in your current world.
Stop
For cubes, rectangles, pyramids, selections and chunks, CheeseMod splits the function into pieces so that it doesn't lag the server as much. Because of this, you can do /shape stop to cancel a cube/rectangle while it is being formed. This will not undo anything that has already been changed, but you will be able to undo it yourself.