]> git.lizzy.rs Git - worldedit.git/blobdiff - WorldEdit API.md
Fix deserialization of schematics with node names table
[worldedit.git] / WorldEdit API.md
index e0331506e939fef516ddd83bf295e63cd9a71e7a..fc9cf652e0bda75d020d8a9842d9431beefd8f61 100644 (file)
@@ -2,15 +2,35 @@ WorldEdit API
 =============\r
 The WorldEdit API is composed of multiple modules, each of which is independent and can be used without the other. Each module is contained within a single file.\r
 \r
+If needed, individual modules such as visualization.lua can be removed without affecting the rest of the program. The only file that cannot be removed is init.lua, which is necessary for the mod to run.\r
+\r
 For more information, see the [README](README.md).\r
 \r
+General\r
+-------\r
+\r
+### value = worldedit.version\r
+\r
+Contains the current version of WorldEdit in a table of the form `{major=MAJOR_INTEGER, minor=MINOR_INTEGER}`, where `MAJOR_INTEGER` is the major version (the number before the period) as an integer, and `MINOR_INTEGER` is the minor version (the number after the period) as an integer. This is intended for version checking purposes.\r
+\r
+### value = worldedit.version_string\r
+\r
+Contains the current version of WorldEdit in the form of a string `"MAJOR_INTEGER.MINOR_INTEGER"`, where `MAJOR_INTEGER` is the major version (the number before the period) as an integer, and `MINOR_INTEGER` is the minor version (the number after the period) as an integer. This is intended for display purposes.\r
+\r
 Manipulations\r
 -------------\r
 Contained in manipulations.lua, this module allows several node operations to be applied over a region.\r
 \r
-### count = worldedit.set(pos1, pos2, nodename)\r
+### count = worldedit.set(pos1, pos2, node_name)\r
+\r
+Sets a region defined by positions `pos1` and `pos2` to `node_name`. To clear a region, use "air" as the value of `node_name`.\r
+If `node_name` is a list of nodes, each set node is randomly picked from it.\r
+\r
+Returns the number of nodes set.\r
+\r
+### `count = worldedit.set_param2(pos1, pos2, param2)`\r
 \r
-Sets a region defined by positions `pos1` and `pos2` to `nodename`. To clear to region, use "air" as the value of `nodename`.\r
+Sets the param2 values of all nodes in a region defined by positions `pos1` and `pos2` to `param2`.\r
 \r
 Returns the number of nodes set.\r
 \r
@@ -32,6 +52,13 @@ Copies the region defined by positions `pos1` and `pos2` along the `axis` axis (
 \r
 Returns the number of nodes copied.\r
 \r
+### count = worldedit.copy2(pos1, pos2, off)\r
+\r
+Copies the region defined by positions `pos1` and `pos2` by the offset vector `off`.\r
+Note that the offset needs to be big enough that there is no overlap.\r
+\r
+Returns the number of nodes copied.\r
+\r
 ### count = worldedit.move(pos1, pos2, axis, amount)\r
 \r
 Moves the region defined by positions `pos1` and `pos2` along the `axis` axis ("x" or "y" or "z") by `amount` nodes.\r
@@ -44,11 +71,24 @@ Duplicates the region defined by positions `pos1` and `pos2` along the `axis` ax
 \r
 Returns the number of nodes stacked.\r
 \r
+### count = worldedit.stack2(pos1, pos2, direction, amount)\r
+\r
+Duplicates the region defined by positions `pos1` and `pos2` `amount` times with offset vector `direction`.\r
+Note that the offset vector needs to be big enough that there is no overlap.\r
+\r
+Returns the number of nodes stacked.\r
+\r
+### count, newpos1, newpos2 = worldedit.stretch(pos1, pos2, stretchx, stretchy, stretchz)\r
+\r
+Stretches the region defined by positions `pos1` and `pos2` by an factor of positive integers `stretchx`, `stretchy`. and `stretchz` along the X, Y, and Z axes, respectively, with `pos1` as the origin.\r
+\r
+Returns the number of nodes stretched, the new scaled position 1, and the new scaled position 2.\r
+\r
 ### count, newpos1, newpos2 = worldedit.transpose(pos1, pos2, axis1, axis2)\r
 \r
 Transposes a region defined by the positions `pos1` and `pos2` between the `axis1` and `axis2` axes ("x" or "y" or "z").\r
 \r
-Returns the number of nodes transposed, the new position 1, and the new position 2.\r
+Returns the number of nodes transposed, the new transposed position 1, and the new transposed position 2.\r
 \r
 ### count = worldedit.flip(pos1, pos2, axis)\r
 \r
@@ -74,43 +114,49 @@ Fixes the lighting in a region defined by positions `pos1` and `pos2`.
 \r
 Returns the number of nodes updated.\r
 \r
+### count = worldedit.clearobjects(pos1, pos2)\r
+\r
+Clears all objects in a region defined by the positions `pos1` and `pos2`.\r
+\r
+Returns the number of objects cleared.\r
+\r
 Primitives\r
 ----------\r
 Contained in primitives.lua, this module allows the creation of several geometric primitives.\r
 \r
-### count = worldedit.hollow_sphere(pos, radius, nodename)\r
+### count = worldedit.cube(pos, width, height, length, node_name, hollow)\r
 \r
-Adds a hollow sphere at `pos` with radius `radius`, composed of `nodename`.\r
+Adds a cube with its ground level centered at `pos`, the dimensions `width` x `height` x `length`, composed of `node_name`.\r
 \r
 Returns the number of nodes added.\r
 \r
-### count = worldedit.sphere(pos, radius, nodename)\r
+### count = worldedit.sphere(pos, radius, node_name, hollow)\r
 \r
-Adds a sphere at `pos` with radius `radius`, composed of `nodename`.\r
+Adds a sphere centered at `pos` with radius `radius`, composed of `node_name`.\r
 \r
 Returns the number of nodes added.\r
 \r
-### count = worldedit.hollow_cylinder(pos, axis, length, radius, nodename)\r
+### count = worldedit.dome(pos, radius, node_name, hollow)\r
 \r
-Adds a hollow cylinder at `pos` along the `axis` axis ("x" or "y" or "z") with length `length` and radius `radius`, composed of `nodename`.\r
+Adds a dome centered at `pos` with radius `radius`, composed of `node_name`.\r
 \r
 Returns the number of nodes added.\r
 \r
-### count = worldedit.cylinder(pos, axis, length, radius, nodename)\r
+### count = worldedit.cylinder(pos, axis, length, radius1, radius2, node_name, hollow)\r
 \r
-Adds a cylinder at `pos` along the `axis` axis ("x" or "y" or "z") with length `length` and radius `radius`, composed of `nodename`.\r
+Adds a cylinder-like at `pos` along the `axis` axis ("x" or "y" or "z") with length `length`, base radius `radius1` and top radius `radius2`, composed of `node_name`.\r
 \r
 Returns the number of nodes added.\r
 \r
-### count = worldedit.pyramid(pos, height, nodename)\r
+### count = worldedit.pyramid(pos, axis, height, node_name, hollow)\r
 \r
-Adds a pyramid at `pos` with height `height`.\r
+Adds a pyramid centered at `pos` along the `axis` axis ("x" or "y" or "z") with height `height`, composed of `node_name`.\r
 \r
 Returns the number of nodes added.\r
 \r
-### count = worldedit.spiral(pos, width, height, spacer, nodename)\r
+### count = worldedit.spiral(pos, length, height, spacer, node_name)\r
 \r
-Adds a spiral at `pos` with width `width`, height `height`, space between walls `spacer`, composed of `nodename`.\r
+Adds a spiral centered at `pos` with side length `length`, height `height`, space between walls `spacer`, composed of `node_name`.\r
 \r
 Returns the number of nodes added.\r
 \r
@@ -130,15 +176,15 @@ Hides all nodes in a region defined by positions `pos1` and `pos2` by non-destru
 \r
 Returns the number of nodes hidden.\r
 \r
-### count = worldedit.suppress(pos1, pos2, nodename)\r
+### count = worldedit.suppress(pos1, pos2, node_name)\r
 \r
-Suppresses all instances of `nodename` in a region defined by positions `pos1` and `pos2` by non-destructively replacing them with invisible nodes.\r
+Suppresses all instances of `node_name` in a region defined by positions `pos1` and `pos2` by non-destructively replacing them with invisible nodes.\r
 \r
 Returns the number of nodes suppressed.\r
 \r
-### count = worldedit.highlight(pos1, pos2, nodename)\r
+### count = worldedit.highlight(pos1, pos2, node_name)\r
 \r
-Highlights all instances of `nodename` in a region defined by positions `pos1` and `pos2` by non-destructively hiding all other nodes.\r
+Highlights all instances of `node_name` in a region defined by positions `pos1` and `pos2` by non-destructively hiding all other nodes.\r
 \r
 Returns the number of nodes found.\r
 \r
@@ -150,45 +196,32 @@ Returns the number of nodes restored.
 \r
 Serialization\r
 -------------\r
-Contained in serialization.lua, this module allows regions of nodes to be serialized and deserialized to formats suitable for use outside MineTest.\r
-\r
-### data, count = worldedit.serialize(pos1, pos2)\r
-\r
-Converts the region defined by positions `pos1` and `pos2` into a single string.\r
-\r
-Returns the serialized data and the number of nodes serialized.\r
-\r
-### pos1, pos2, count = worldedit.allocate(originpos, value)\r
-\r
-Determines the volume the nodes represented by string `value` would occupy if deserialized at `originpos`.\r
-\r
-Returns the two corner positions and the number of nodes.\r
+Contained in serialization.lua, this module allows regions of nodes to be serialized and deserialized to formats suitable for use outside Minetest.\r
 \r
-### count = worldedit.deserialize(originpos, value)\r
+### version, extra_fields, content = worldedit.read_header(value)\r
 \r
-Loads the nodes represented by string `value` at position `originpos`.\r
+Reads the header from serialized data `value`.\r
 \r
-Returns the number of nodes deserialized.\r
+Returns the version as a positive integer (nil for unknown versions),\r
+extra header fields (nil if not supported), and the content after the header.\r
 \r
-### count = worldedit.deserialize_old(originpos, value)\r
-\r
-Loads the nodes represented by string `value` at position `originpos`, using the older table-based WorldEdit format.\r
+### data, count = worldedit.serialize(pos1, pos2)\r
 \r
-This function is deprecated, and should not be used unless there is a need to support legacy WorldEdit save files.\r
+Converts the region defined by positions `pos1` and `pos2` into a single string.\r
 \r
-Returns the number of nodes deserialized.\r
+Returns the serialized data and the number of nodes serialized, or nil.\r
 \r
-### count = worldedit.metasave(pos1, pos2, file)\r
+### pos1, pos2, count = worldedit.allocate(origin_pos, value)\r
 \r
-Saves the nodes and meta defined by positions `pos1` and `pos2` into a file.\r
+Determines the volume the nodes represented by string `value` would occupy if deserialized at `origin_pos`.\r
 \r
-Returns the number of nodes saved.\r
+Returns the two corner positions and the number of nodes, or nil.\r
 \r
-### count = worldedit.metaload(pos1, file)\r
+### count = worldedit.deserialize(origin_pos, value)\r
 \r
-Loads the nodes and meta from `file` to position `pos1`.\r
+Loads the nodes represented by string `value` at position `origin_pos`.\r
 \r
-Returns the number of nodes loaded.\r
+Returns the number of nodes deserialized or nil.\r
 \r
 Code\r
 ----\r
@@ -202,6 +235,6 @@ Returns an error if the code fails or nil otherwise.
 \r
 ### error = worldedit.luatransform(pos1, pos2, code)\r
 \r
-Executes `code` as a Lua chunk in the global namespace with the variable pos available, for each node in a region defined by positions `pos1` and `pos2`.\r
+Executes `code` as a Lua chunk in the global namespace with the variable `pos` available, for each node in a region defined by positions `pos1` and `pos2`.\r
 \r
-Returns an error if the code fails or nil otherwise.
\ No newline at end of file
+Returns an error if the code fails or nil otherwise.\r