After over a year in the making, WorldEdit 7 is complete. We made the first change that comprised what would become WorldEdit 7 on January 3rd, 2018. This release is one of the most extensive changes to have ever been made to WorldEdit since its release in 2010.
The most significant part of this update is the rewriting of block handling to be more in line with how modern Minecraft works. For more information about the Minecraft changes, I've given a quick overview of them in this post. As this is a fundamental aspect of Minecraft and WorldEdit, there are many changes in the way WorldEdit works for both users and developers.
I have gone over some of these changes in a prior post, so I'll only briefly touch on those here. This post is also mostly user-facing, so I won't go too in-depth on the developer changes.
There are many changes in WorldEdit 7, allowing for exciting new possibilities when editing your world or creating plugins. Since the last post, we've added many new features, as I wrote that while still making WorldEdit 7 functional.
This change is arguably the most enormous in WorldEdit 7, impacting how the user deals with blocks. Rather than using block IDs in commands, the new way is to use the namespaced block key. These keys take the form of
minecraft for any vanilla blocks. For example, grass blocks are referenced by
minecraft:grass_block. As most use cases will involve blocks from Minecraft, that part is optional. Meaning just using
grass_block will work fine. For a complete list of these namespaced block keys, check out the Minecraft wiki.
As Mojang removed block metadata from the game, we've set up a system to allow referencing block states using the official Minecraft state format. For example, setting a snowy grass block is done as follows,
grass_block[snowy=true]. This format sets the
snowy property to true. You can find a list of properties for blocks on the Minecraft wiki block state page or the individual page for that block. If a block contains multiple properties, you can set them with a comma separator, such as
lever[powered=false,facing=north,face=ceiling]. If you don't want to specify all the properties, you can leave them out, and WorldEdit will use the default instead.
One other feature of the new block parser is setting properties without changing the type or changing the type without touching the properties. If you use
^ in place of the block key, it will set the properties without changing the type. For example,
^[waterlogged=true] will charge all blocks to their waterlogged variant, if applicable. If you use
^ before the key without the properties, it will set the type without changing the properties. For example,
^brick_slab on a group of waterlogged slabs will set them to brick but retain the waterlogged state. For example, if you include both in
^brick_slab[waterlogged=false], it will set the blocks to non-waterlogged brick slabs while keeping whether it's a top or bottom slab.
It's still possible for legacy reasons to use numeric block IDs and the old "colours for wool" parser, such as
red for red wool. This legacy layer isn't supported and is only a temporary measure to help people migrate.
Many people use the unofficial client addon known as WorldEditCUI. Due to some recent Minecraft changes, we've been able to add a limited version of it to WorldEdit itself. Without requiring anything to be installed on the client!
It does have the limitation of requiring the user to be in creative mode and only support cuboid selections smaller than 32x32x32. These are limitations in how we're displaying the selections and would require a client mod to resolve, at which point WorldEditCUI would be a better choice.
If you don't want this feature, it can be toggled per-user with the
//drawsel command or entirely disabled in the configuration.
Due to changes in 1.13, the MCEdit schematic format was entirely incompatible. Due to this, we've switched over to the Sponge Schematic Format. Sponge schematics provide a few huge benefits, such as much better support for mods and biomes support. To copy biomes, use
//copy -b, and to paste the biomes, use
//paste -b. This flag is similar to using
-e when copy/pasting entities.
Another change regarding schematics is that plugins can now add new schematic formats and intelligently grab a schematic file format from a file. This feature should allow smaller or more specific formats to work with WorldEdit without being added to the main plugin.
Minecraft 1.13 added a system to tag groups of blocks, items, or fluids. Minecraft provides a few, which you can find on the Minecraft wiki. Otherwise, you can add them in data packs.
WorldEdit allows these to be used as masks, to only modify blocks that match the tag. These are specified using the
##namespace:tagname syntax. The same rules for namespaces apply similarly to block parsing, meaning you don't need to specify it if it's from Minecraft. Example usage of this in a mask is
//gmask ##wool. This mask would only match any wool blocks. If a mod adds new wool blocks, it can add them to the wool tag, and WorldEdit will also match it.
Tags can also be used as a pattern, acting similar to random patterns. The contents of the tag randomly get applied across the selected area. If you use the
* character before the tag name, it will apply all block states, not just the default states. For example,
//set ##*logs would equally set all states of all logs, not only all log types.
In another effort to bring WorldEdit into the modern era of Minecraft, we've revamped the chat messages to support a few new features. There are now many places throughout the plugin where you can hover over text to see more information or click the text to perform actions. For example, any paged boxes now allow clicking on arrows to switch between pages.
Whilst this is already in use in many places across the plugin, we'll add it to more as we think of places where it makes sense. We're trying to keep as much information visible as possible still, as the console cannot display the click or hover events.
This change also includes the introduction of some command suggestions. We put most of the effort into making this possible so that the suggestions will get better and better over time! This feature required creating the new command system that we've called Piston due to significant limitations in Brigadier (the Minecraft command system). Using both this new text system and Piston, we hope to add translation support in the future.
We've rewritten the system that handles patterns and masks, allowing other plugins to add their own. This system allows for plugins to massively extend the functionality of WorldEdit, as patterns and masks make up 90% of the plugin. I'll make another post in the future that goes in-depth on using this in your own plugins.
Aside from the significant changes, there were a lot of other minor changes. A full changelog is available on the download pages of WorldEdit 7. Some of these changes are:
- Improved rotation support for mod blocks
- Re-added diagonal direction support to a few commands that had it removed in WorldEdit 6
- Added a Vault WEPIF resolver
- Allowed fake players to use WorldEdit commands, such as with VirtualPlayers
/we reportto assist in debugging errors
- Fixed biome changes not being tracked in history
- Added command completions
- The clipboard pattern now accepts offsets,
- Reworked //restore to allow restoring chunks from basically any non-newer Minecraft version.
- Tonne more, see a full changelog here!
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 much appreciate any support we receive on our GitHub Sponsors page.
As always, links to downloads for each platform from the WorldEdit website.
Looking for the WorldEdit 7.1 release notes? Click here!