At first it was just a quick simple mod that contains a few extra worldedit commands, but it seems to have grown quite a bit since then :P
Note that I consider this mod stable, and production-ready (so if you find any bugs, please report them). Despite this, new commands will be added in future releases (ideas and especially pull requests welcome!).
Website: https://worldeditadditions.mooncarrot.space/ (new June 2021! Has more screenshots, information, tutorials, and a full and searchable reference!)
Official Discord Server: https://discord.gg/y8VT6HTQr7
Extra tools and commands to extend WorldEdit for Minetest
If you can dream of it, it probably belongs here!
► News
IMPORTANT: The master branch of the git repository has been renamed to main, to follow the new standard across the Git ecosystem. If you've installed WorldEditAadditions through git before 2021-04-01, you will need to re-clone the repository.v1.14: The multipoint update (11th July 2023)
- Add //dome+[/backcolor], which allows you to change the direction the dome is pointing in, and also create multiple domes at once
- Add //metaball[/backcolor], which renders 2 or more metaballs in Minetest
- Significant backend refactoring to tidy things up
- Add new multi-point selection wand to select many points at once.
- Implement custom region boxing UI, which replaces the WorldEdit region box when using WorldEditAdditions wands.
- Is backwards compatible with regular WorldEdit wands and tools, as WorldEditAdditions keeps the new positioning system in sync with WorldEdit's.
- The new multipoint wand required this as a prerequisite
- Add //pos[/backcolor], for setting any numbered point (i.e. not just pos1 and pos2, but pos3 and beyond)
- Add //spline[/backcolor], for drawing curved lines with an arbitrary number of points (uses the new multi-point wand)
- Add //revolve[/backcolor], which makes multiple evenly-spaced rotated copies of the defined region (uses the new multi-point wand)
- //copy+[/backcolor], //move+:
- Added support for integrated airapply mode, which replaces nodes at the target only if they are air - append airapply/aa to the command to use
- Respect node rotation (i.e. param2) when copying/moving
- Override //move and //copy by default
- Migrate from depends.txt to mod.conf
- Cloud wand: fix typo in item description.
- Commands that modify the terrain now ignore liquids
- //sculpt:
- Fix undefined default brush
- Change defaults to circle, height=1, and brushsize=8.
- Change argument ordering to put height after brushsize instead of the other way around
- //hollow: Fix safe region bug
- Make //pos1, //1, //pos2, //2, //mark, //unmark, and //reset aware of the new WEA positioning system
Spoiler
- v1.13: The transformational update (2nd January 2022)
- Add //sfactor (selection factor) - Selection Tools by @VorTechnix are finished for now.
- Add //mface (measure facing), //midpos (measure middle position), //msize (measure size), //mtrig (measure trigonometry) - Measuring Tools implemented by @VorTechnix.
- Add //airapply for applying commands only to air nodes in the defined region
- Add //wcorner (wireframe corners), //wbox (wireframe box), //wcompass (wireframe compass) - Wireframes implemented by @VorTechnix.
- Add //for for executing commands while changing their arguments - Implemented by @VorTechnix.
- Add //sshift (selection shift) - WorldEdit cuboid manipulator replacements implemented by @VorTechnix.
- Add //noise2d for perturbing terrain with multiple different noise functions
- Add //noiseapply2d for running commands on columns where a noise value is over a threshold
- Add //ellipsoid2 which creates an ellipsoid that fills the defined region
- Add //spiral2 for creating both square and circular spirals
- Add //copy+ for copying a defined region across multiple axes at once
- Add //move+ for moving a defined region across multiple axes at once
- Add //sculpt and //sculptlist for sculpting terrain using a number of custom brushes.
- Use luacheck to find and fix a large number of bugs and other issues (code quality from now on will be significantly improved)
- Multiple commands: Allow using quotes ("thing", 'thing') to quote values when splitting
- //layers: Add optional slope constraint (inspired by WorldPainter)
- //bonemeal: Add optional node list constraint
- //walls: Add optional thickness argument
- //sstack: Add human-readable approx volumes of regions in the selection stack
- Bugfixes:
- //floodfill: Fix crash caused by internal refactoring of the Queue data structure
- //spop: Fix wording in displayed message
- Sapling alias compatibility:
- Correct alias of default:sapling from oak to apple (since it produces apples)
- moretrees:appletreesaplingongen from apple to applemoretrees
- Add plum → plumtree:sapling
- Add holly ⇒ hollytree:sapling
- //replacemix: Improve error handling to avoid crashes (thanks, Jonathon for reporting via Discord!)
- Cloud wand: Improve chat message text
- Fix bonemeal mod detection to look for the global bonemeal, not whether the bonemeal mod name has been loaded
- //bonemeal: Fix argument parsing
- //walls: Prevent crash if no parameters are specified by defaulting to dirt as the replace_node
- //maze, //maze3d:
- Fix generated maze not reaching the very edge of the defined region
- Fix crash if no arguments are specified
- Fix automatic seed when generating many mazes in the same second (e.g. with //for, //many)
- //convolve: Fix those super tall pillars appearing randomly
- cloud wand: improve feedback messages sent to players
- //forest: Update sapling aliases for bamboo → bambo:sprout instead of bamboo:sapling
- Add //spush, //spop, and //sstack
- Add //srect (_select rectangle_), //scol (_select column_), //scube (_select cube_)
- thanks, @VorTechnix!
- Add //scloud (_select point cloud_), //scentre (_select centre node(s)_), //srel (_select relative_) - thanks, @VorTechnix!
- Add //smake (_selection make_)
- thanks, @VorTechnix!
- Significantly refactored backend utility functions (more to come in future updates)
- Add new universal chance parsing
- Any <chance> can now either be a 1-in-N number (e.g. 4, 10), or a percentage chance (e.g. 50%, 10%).
- Caveat: Percentages are converted to a 1-in-N chance, but additionally that number is rounded down in some places
- //torus, //hollowtorus: Add optional new axes
- //torus, //ellipsoid: Add optional hollow keyword
- @VorTechnix
- //multi: Add curly brace syntax for nesting command calls (more information)
- //erode: Add new river erosion algorithm for filling in potholes and removing pillars
- Bugfixes
- //bonemeal: Try bonemealing everything that isn't an air block (#49)
- //overlay: Don't place nodes above water
- //multi: Improve resilience by handling some edge cases
- //layers: Fix crash due to outdated debug code
- //erode/snowballs: Fix assignment to undeclared variable
- //floodfill: Fix error handling
[*] 25th January 2021: v1.11 - The Big Data Update
- Add //scale (currently experimental)
- Scale operations that scale up and down at the same time are split into 2 separate operations automatically (scaling up is always performed first)
- //count: Make numbers human-readable
- Tip: Use a monospace font for the chat window, and the columns will be aligned!
- Add //hollow for hollowing out areas (a step towards parity with Minecraft WorldEdit)
- //subdivide: Fix performance, bugs, & memory usage issues
- Fix passing arguments to the command being executed
- If you encounter any other issues with it over large areas (particularly 2000x150x2000 and larger), please let me know
- Bugfix: Fix obscure crash in calls to human_size ("unknown" will now be returned if passed junk)
- //many can now be used with commands with no arguments.
- //conv, //erode, //fillcaves: Treat liquids as air
- Add new cloud wand
- //conv, //erode: minor refactoring to improve code clarity
- //maze: Fix some parts of generated mazes staying solid
- //maze, //maze3d: Allow non-number seeds (existing seeds aren't affected
- they will still produce identical output)
- //many: Improve format of progress messages, add ETA
- //subdivide: Make asynchronous, and use minetest.emerge_area() to ensure areas are loaded before executing on a subdivision chunk
- This will ensure that //subdivideing enormous regions should now function as expected. Want to level an entire rainforest with //subdivide and //clearcut? Now you can! :D
- Add //line for drawing simple lines
- Add //many for executing a command many times in a row
- Add experimental //erode command
- Add //fillcaves command - fills in all air nodes beneath non air-nodes
- Add //forest command for quickly generating forests, and //saplingaliases to compliment it
- Add //ellipsoidapply: Like //cubeapply, but clips the result to an ellipsoid that is the size of the defined region.
- Fix some minor bugs and edge cases
- //subdivide: Print status update when completing the last chunk
- //count: Optimise by removing nested for loops
- Update //multi to display human readable times (e.g. 2.11mins instead of 126600ms)
- Far wand: Notify player when setting pos1 and pos2
- Make timings more accurate (use minetest.get_us_time() instead of os.clock())
- Add experimental //subdivide command to split large command invocations into smaller chunks
- Attempt to fix a crash on startup due to a dependency issue (#21)
- Added //layers (like WorldEdit for Minecraft's //naturalize)
- Added //convolve (advanced terrain smoothing inspired by image editors)
- Added far wand (like the regular WorldEdit wand, but with a configurable range that can extend to 100s of blocks)
[/list]
► Summary
Summary of commands implemented so far:- //floodfill [<replace_node> [<radius>]]
- //overlay <node_name_a> [<chance_a>] <node_name_b> [<chance_b>] [<node_name_N> [<chance_N>]] ...
- //ellipsoid <rx> <ry> <rz> <node_name>
- //hollowellipsoid <rx> <ry> <rz> <node_name>
- //torus <major_radius> <minor_radius> <node_name>
- //hollowtorus <major_radius> <minor_radius> <node_name>
- //line [<replace_node> [<radius>]]
- //maze <replace_node> [<seed>]`
- //maze3d <replace_node> [<seed>]`
- //bonemeal [<strength> [<chance>]]
- //walls <replace_node>
- //replacemix <target_node> [<chance>] <replace_node_a> [<chance_a>] [<replace_node_b> [<chance_b>]] [<replace_node_N> [<chance_N>]] ....
- //count
- //convolve <kernel> [<width>[,<height>]] [<sigma>]
- //layers [<node_name_1> [<layer_count_1>]] [<node_name_2> [<layer_count_2>]] ...
- Far wand (also //farwand skip_liquid (true|false) | maxdist <number>)
- //multi <command_a> <command_b> .....
- //subdivide <size_x> <size_y> <size_z> <cmd_name> <args>
- //erode [<snowballs|...> [<key_1> [<value_1>]] [<key_2> [<value_2>]] ...]
- //fillcaves [<node_name>]
- //many <times> <command>
- //forest [<density>] <sapling_a> [<chance_a>] <sapling_b> [<chance_b>] [<sapling_N> [<chance_N>]] ...
- //saplingaliases [aliases|all_saplings]
- //erode [<snowballs|...> [<key_1> [<value_1>]] [<key_2> [<value_2>]] ...] experimental
- //ellipsoidapply <command_name> <args>
- //hollow [<wall_thickness>]
- //scale <axis> <scale_factor> | <factor_x> [<factor_y> <factor_z> [<anchor_x> <anchor_y> <anchor_z>]] experimental
- //scol [<axis1> ] <length>
- //srect [<axis1> [<axis2>]] <length>
- //scube [<axis1> [<axis2> [<axis3>]]] <length>
- //scloud <0-6|stop|reset>
- //scentre
- //srel <axis1> <length1> [<axis2> <length2> [<axis3> <length3>]]
- //smake <operation:odd|even|equal> <mode:grow|shrink|average> [<target=xz> [<base>]]
- //sstack
- //spush
- //spop
Also check out the chat command cookbook for useful commands other users have discovered. Got a useful command (set) that isn't on the list? Get in touch! I'll add it and give you credit for discovering it.
► Screenshots
Here are a few screenshots showing some of the commands in action:Above: A torus upon which //overlay has been used. Also a hollow ellipsoid that has been //floodfilled.
Here are some more screenshots:
Spoiler
Above: A 2D hedge maze (//maze) fashioned from leaves.
Above: Some smooth terrain created with the WorldEdit brush, followed by WorldEditAdditions' //convolve command to smooth it out.
Above: A torus half-buried in the ground that has been subjected to //layers (aka //naturalise) and //bonemeal.
Above: A scene demonstrating //walls, //replacemix, //convolve, //floodfill, //ellipsoid, //layers, and //bonemeal (all of which are provided by WorldEditAdditions).
Above: The inside of a 3-dimensional maze (//maze3d). 3D mazes are pretty difficult to get a good screenshot of, so you should download this mod and check them out for yourself :D (have you got a better one? Let me know and I'll include it here!)
Have you got a cool build for which you used WorldEditAdditions? Get in touch and I'll feature your screenshot here!
► Download
I strongly recommend using git to clone the repository to install this mod. If you can't, then I've provided an always up-to-date download link too :-)Note that if I don't reply to your message on here, I'll be much more responsive if you open an issue against the repository.
Please also review on Content DB!
Repository | Clone | ContentDB | Download (Previous versions) | Issue Tracker |
Mod dependencies: worldedit (the WorldEdit API is used by pretty much every command in this mod)
Optional mod dependencies:
- bonemeal: Enables the //bonemeal command
- cool_trees, ethereal: Aliases for referencing provided saplings for use in //forest