This release has been a very long time coming, and our first major release since we switched to our new release model (which I’ll explain further on). WorldEdit 7.3 is full of many new features and underlying system reworks, the most impactful of which I’ll go over in this post.
The new release model
Just as a foreword to the post, I’ll quickly go over the new release model that explains why there’s been such a gap between this and the last major release. Prior to 7.2, all feature work that we’d do would end up in the same version. When we made major changes we’d bump the second part of the version number. However, this became an issue given we sometimes need to release new WorldEdit versions that we know are stable, such as when a new Minecraft release comes out or if a major bug is found. This often led to us either releasing betas as the only available versions for new Minecraft releases, or rushing things out.
With the release of 7.2, instead we created two separate streams of work. We had the version/7.2.x
branch which contained bugfixes and support for new Minecraft versions, and the master
branch which contained work towards the next main release. This allowed us to make a few larger and riskier changes that we’ve been wanting to make for a while, without the risk that we’d be stuck on betas or have to rush something out if a new Minecraft update showed up. The release of 7.3 is therefore a mix of all changes done to the version branch, as well as two years’ worth of major changes made on the master branch.
The Changes
A command to apply side effects
In 7.2 we introduced the concept of side effects that you can toggle on or off while performing edits, such as block updates or lighting calculations. In 7.3 we’re extending this further, to allow you to manually trigger these side effects afterwards on selected areas. The new //update
command lets you force these side effects to run. If you need to trigger block updates on a bugged area, fix some broken lighting, or just force blocks to recalculate their connected faces, the //update
command can do it. Just run //update neighbors
for example, and all blocks in the selection will have the neighbors side effect performed.
In-built schematic sharing
We’ve added a new command to share schematics online right from in game. /schem share
. By default this command will share to the EngineHub paste site which now includes an in-web viewer for schematics. You can check out a simple test schematic here. The main power of this command, however, comes from how other mods and plugins can integrate with it. Using the WorldEdit API, new destinations can be registered for schematic uploads. This means your favorite schematic sharing site can integrate right into WorldEdit. For example, if a theoretical third-party Planet Minecraft integration existed, you could just enter /schem share MySchematic planetminecraft
and it’d be uploaded using that integration.
Morph Brush
The morph brush is a more advanced but extremely powerful world manipulation brush that lets you perform morphological processing over the world. There are arguments to control the minimum number of faces and the iteration count for both erosion and dilation. We’ve also included two presets, /br erode
and /br dilate
, which perform two common operations to erode (shrink) or dilate (expand) terrain. For an example usage of the command, the erode preset is equivalent to /br morph <radius> 2 1 5 1
.
Splatter Brush
The splatter brush, accessed via /brush splatter
, is a new brush that lets you paint areas of the world with configurable drop-off/decay. This means The center of the brush will be more solid, and the further from the center the less blocks the brush paints. The intensity of the decay effect can be configured with an argument to change how quickly it loses blocks the further from center it is.
Pos command for entire selections with one command
To make it easier to perform selections via commands, we’ve added the //pos
command. This works like multiple commands in one, and is capable of fully reproducing any possible selection. The first argument is the left click position (pos1), and every argument from then on is a right click position (pos2). This means you can even select an entire complex convex hull selection with a single command. You can even pass in an -s
argument, which tells it to run the selection as a certain selector type. For example, //pos -s cyl 0,0,0 10,0,0 0,0,15
would create a cylindrical selection at 0,0,0, with a radius of 10 on the x axis and a radius of 15 on the z axis.
Snow smooth tools
We’ve added a new command and brush to help create smooth snowy terrains. The //snowsmooth
and /brush snowsmooth
commands allow you to smoothly spread and disperse snow to create clean and smooth snow fields.
Feature and Structure generation
When Minecraft generates a world, part of the process is known as “feature generation”. This is the step where small structures such as desert wells, lava lakes, bonus chests, dripstones, pumpkin bushes, etc are all added to the world. WorldEdit 7.3 adds two new features to allow generating these into an existing world. The //feature <feature_name>
command will generate the feature at the placement location, and the /brush feature
will generate the feature as a brush, with a given radius, density, and shape. This should allow easily decorating created terrain with natural Minecraft-like decorations.
We’ve also added a command to generate larger Minecraft structures, such as villages, mineshafts, and strongholds. To use this command, just type //structure <structure_name>
, for example //structure village_snowy
will generate a snowy village.
History tracking API for performance
It’s fairly common for plugins to perform edits with the WorldEdit API, but also to not care about history at all. While these edits didn’t store the history, the data required to undo the change was still generated. To improve memory usage and performance for these situations where the data is being thrown away anyway, there’s now a EditSession#setTrackingHistory
function for plugins to disable history tracking for their edits.
New placement modes
In the past, the /toggleplace
command could be used to toggle between using the player’s position and the primary position of the selection for various commands. In WorldEdit 7.3, we’re expanding this to also allow using the minimum point of a selection, the maximum point of a selection, the world’s origin point, and the player’s coordinates when the placement position was set. It’s also now possible to provide an offset to the placement position, such as 10 blocks above the player.
To facilitate this, we’ve added a new //placement
command, that lets you specifically set which placement type you want to use. For example, //placement min
will set the placement mode to the minimum point of the selection. For 10 blocks above the player for example, the command would be //placement player 10 up
. The existing /toggleplace
command will continue to do what it currently does, and toggle between pos1 and player placement modes.
Performance improvements and better mod support
In the past, WorldEdit used a complex multi-stage system of checking block dependencies and reordering the edit to make sure that blocks were set and removed in an order that would not cause problems such as block drops. While this was reliable in the past for vanilla blocks, the system doesn’t support mods too well or the increasing complexity of newer versions of Minecraft.
Back in WorldEdit 7.0.0, we added a new FAST
reorder mode alongside the default multi-stage one (MULTI
). The fast reordering mode works by performing the edit without any side effects, and then running the side effects after the edit has completed. Ideally, this would allow for edits to safely be done without the need to change the order that blocks are placed. Since it was added we’ve been testing this, and we believe it’s at a stage where it’s ready for widespread adoption and have changed the default mode to the fast reorder. If you do find you’re having issues with it, you can go back to the old multi-stage reorder system with //reorder multi
. If all goes well, we’ll be removing the multi-stage reorder system and the //reorder
command in WorldEdit 8. The fast mode should provide better performance, better reliability, and substantially improved mod support.
Sponge Schematic V3 support
We’ve added support for V3 of the Sponge Schematic format, as well as made it easier to specify the schematic format version in the load and save commands. The V3 format adds support for 3D biome data within schematics, as well as a few other minor internal changes.
By default the commands will use V3, but if you need to save a V2 Sponge Schematic you can use /schem save MySchematic sponge.2
.
Selection Trimming
In WorldEdit 7.3, there’s a new //trim
command to let you trim down your selections to the size of your builds. By default, it’ll replace the current selection with the smallest possible cuboid selection that still fits all non-air blocks within the original selection. You can customize this though, as the command accepts a mask as an argument. This means for example rather than trimming to non-air, you could trim to non-water for underwater builds with //trim !water
. As it accepts a mask, you can make this trim to practically any specific area within the selection based on WorldEdit’s powerful masking system.
NBT Parsing for Patterns
Now when entering a block pattern, you can use SNBT syntax to add NBT data. For example, //set oak_sign[rotation=12]{'is_waxed':1,'front_text':{'messages':['{"text":"a"}','{"text":"a"}','{"text":"a"}','{"text":"a","color":"red"}']}}
will place a waxed oak sign with the letter "a" on every line, with the last line containing red text. This works similarly to the native Minecraft commands to set NBT data in blocks.
And More!
This post just covered a few considerable or exciting changes; there are still plenty more to try out. If you'd like to read the full changelog, it's available here.
Future Releases and Housekeeping
Our plan for now is to start working on WorldEdit 8, as a few of the major changes we made or wanted to make for 7.3 were held back by our ability to make breaking changes to the API. Breaking changes are never fun, so if you’re a developer it might be worth checking if you’re using any deprecated functions in your plugins. Most of the breaking changes that we plan to make will already be marked as deprecated in 7.3, and any further we make will hopefully be few or for very good reason.
How to help us out 🎉
WorldEdit is a team effort, and we volunteer a large amount of our time to make the software as good as possible for our users. We do this in our spare time without getting paid for the time we spend. If you use WorldEdit and can help support us, we accept and appreciate contributions on our GitHub Sponsors page.
Also, each release adds numerous new lines of text to translate. If you speak a language other than English, we much appreciate any translations you can contribute to the WorldEdit CrowdIn project.
As always, links to downloads for each platform from the WorldEdit website.
If you're looking for the WorldEdit 7.2 release notes, click here.
About the Author
Hi, I'm Maddy Miller, a Senior Software Engineer at Clipchamp at Microsoft. In my spare time I love writing articles, and I also develop the Minecraft mods WorldEdit, WorldGuard, and CraftBook. My opinions are my own and do not represent those of my employer in any capacity. Find out more.