EasyEdit
Feature-rich WorldEditor for PocketMine-MP
Features
- large variety of commands
- High performance:
- async editing, allowing the server to run normally while editing in the background
- low memory consumption by splitting your actions into multiple smaller edits
- flicker-free editing
- support for unique Patterns
- set blocks in effectively infinite ways
- see Pattern Documentation
- selection axe & brushes
- undo & redo your actions
- tile support
- load & save java selections (load MCEdit & Sponge format, save to Sponge)
- rotate & flip support
- Translation support
Commands
<argument> - required Argument
[argument] - optional Argument
Selection:
Command | Description | Permission | Aliases/Notice |
---|---|---|---|
//pos1 [x] [y] [z] | Set the first position | easyedit.select | //1 left click a block in creative with a wooden axe |
//pos2 [x] [y] [z] | Set the first position | easyedit.select | //2 break a block in creative with a wooden axe |
//extend [direction] [count] //extend vertical |
Extend the selected area | easyedit.select | //expand Look into the direction you want to extend to |
//set <pattern> | Set blocks in the selected area | easyedit.edit | |
//replace <block> <pattern> | Replace blocks in the selected area | easyedit.edit | |
//replace <pattern> | Replace all solid blocks in the selected area | easyedit.edit | |
//overlay <pattern> | Overlay blocks in the selected area | easyedit.edit | Set blocks above existing blocks |
//naturalize [pattern] [pattern] [pattern] | Naturalize the selected area | easyedit.edit | |
//smooth | Smooth the selected area | easyedit.edit | |
//center [pattern] | Set the center blocks of the selected area | easyedit.edit | //middle |
//walls [pattern] | Set the walls of the selected area | easyedit.edit | //wall |
//sides [pattern] | Set the sides of the selected area | easyedit.edit | //side |
//move [direction] [count] | Move the selected area | easyedit.edit | Look into the direction you want the selected blocks to move into |
//stack [direction] [count] | Stack the selected area | easyedit.edit | Look into the direction you want the selected blocks to stack into |
//istack [direction] [count] | Stack the selected area without overwriting existing terrain | easyedit.edit | |
//count [radius] | Count blocks in the selected area | easyedit.select | |
//extinguish [radius] | Extinguish fire in the selected area | easyedit.edit | //ext |
//view | View the selected area | easyedit.select | //show also allows exporting as a 3d model (thank mojang for buggy textures) |
History:
Command | Description | Permission | Aliases/Notice |
---|---|---|---|
//undo [count] | Revert your latest change | easyedit.history easyedit.edit | |
//undo <target> [count] | Revert targets latest change | easyedit.history easyedit.edit easyedit.edit.other | Can be disabled via config |
//redo [count] | Revert your latest undo | easyedit.history easyedit.edit | |
//redo <target> [count] | Revert targets latest undo | easyedit.history easyedit.edit easyedit.edit.other | Can be disabled via config |
Clipboard:
Command | Description | Permission | Aliases/Notice |
---|---|---|---|
//copy //copy center |
Copy the selected area | easyedit.clipboard | |
//cut //cut copy |
Cut the selected area and copy it to your clipboard | easyedit.clipboard easyedit.edit | Copies and replaces with air |
//paste | Paste the clipboard | easyedit.clipboard easyedit.edit | |
//insert | Insert the clipboard | easyedit.clipboard easyedit.edit | Paste only into air blocks |
//rotate | Rotate the clipboard | easyedit.clipboard | Rotates by 90 Degrees |
//flip [direction] | Flip the clipboard, mirroring at copied position | easyedit.clipboard | Flips on axis you look on, always uses selected point as "mirror" |
//loadschematic <schematicName> | Load a saved schematic from disk | easyedit.readdisk easyedit.clipboard | //load |
//saveschematic <schematicName> | Save your clipboard as a schematic to disk | easyedit.writedisk easyedit.clipboard | //save |
Generation:
Command | Description | Permission | Aliases/Notice |
---|---|---|---|
//sphere <radius> <pattern> | Generate a sphere | easyedit.generate easyedit.edit | //sph |
//hsphere <radius> <pattern> [thickness] | Generate a hollow sphere | easyedit.generate easyedit.edit | //hsph //hollowsphere |
//cylinder <radius> <height> <pattern> | Generate a cylinder | easyedit.generate easyedit.edit | //cy |
//hcylinder <radius> <height> <pattern> [thickness] | Generate a hollow cylinder | easyedit.generate easyedit.edit | //hcy //hollowcylinder |
//noise | Generate using a simple noise function | easyedit.generate easyedit.edit |
Utility:
Command | Description | Permission | Aliases/Notice |
---|---|---|---|
//commands [page] | List all EasyEdit commands | - | //h //cmd |
//brush sphere [radius] [pattern] [gravity] | Create a spherical Brush | easyedit.brush (To use: easyedit.edit) |
//br sph |
//brush smooth [radius] | Create a smoothing Brush | easyedit.brush (To use: easyedit.edit) |
//br smooth |
//brush naturalize [radius] [topBlock] [middleBlock] [bottomBlock] | Create a naturalize Brush | easyedit.brush (To use: easyedit.edit) |
//br nat |
//brush cylinder [radius] [height] [pattern] [gravity] | Create a cylindrical Brush | easyedit.brush (To use: easyedit.edit) |
//br cy |
//brush paste [insert] | Create a pasting Brush | easyedit.brush (To use: easyedit.edit) |
//br paste |
//fill <Block> [direction] | Fill an area | easyedit.edit easyedit.generate | Fills into looking direction |
//drain | Drain an area | easyedit.edit easyedit.generate | |
//line <x> <y> <z> [pattern] | Draw a line | easyedit.edit easyedit.generate | |
//blockinfo | Get a blockinfo stick | easyedit.util | //bi |
//builderrod | Get a builder rod | easyedit.rod | //rod Expands the clicked blockface |
//status | Check on the EditThread | easyedit.manage | |
//cancel | Cancel the current task | easyedit.manage | |
//benchmark | Start a benchmark | easyedit.manage | This will create a temporary world and edit a few preset actions |
//pastestates | Paste all known blockstates | easyedit.edit easyedit.generate easyedit.manage | Mainly for debugging (can be used as an oversight of all existing blocks though) |
//wand | Get a wooden Axe | easyedit.util | Every normal axe works as well (as long as you have permissions and are in creative mode) |
Patterns
Visit the wiki for more information.
Block Patterns
Block Patterns are just blocks, they just consist out of the name of the block or its numeric ID
Examples:
- stone
- 4
- red_wool
- stone:1
The keyword "hand" represents the block you hold in your hand (or air for items/nothing) and can be used like normal blocks
Random Pattern
The Random Pattern as it name suggests selects a random Pattern
The patterns are separated by a comma and can be used in any order
Examples:
dirt,stone,air
red_wool,green_wool,yellow_wool,orange_wool
Weighted Patterns
When one pattern should be more likely than another, the weighted notation can be used:
propability%pattern
Example:
70%dirt,30%grass
If the sum of given percentages is smaller than 100, there is a chance to not change anything:
10%stone,10%dirt
- 80% of the selected area will not be affected
If the sum of given percentages is greater than 100, given probabilities are scaled accordingly:
150%stone,50%dirt
- 75% will be set to stone, 25% will be set to dirt
Complex Patterns
Complex patterns follow strict rules and as such allow the creation of complex structures
Usage of Complex Patterns: patternName;arg1;arg2...(subPattern1,subPattern2...)
Complex patterns can be chained together with dots to create a logic construct:
block;stone(dirt).grass
- Replace all stone blocks with dirt and everything else with grass
Chained constructs are executed from left to right until a valid block is found, otherwise the block will stay unaffected
They can also be used with the default comma notation and are selected randomly, or in combination:
stone,block;stone(dirt).grass,wool
- Places either stone, wool or following the pattern described above
Logic Patterns
These Patterns allow control over when to set certain blocks
These are especially useful in complex structures or even nested:
odd;x(odd;z(black_wool).white_wool).odd;z(white_wool).black_wool
- A 2d checkers pattern
<argument> - required Argument
[argument] - optional Argument
patterns - children patterns, can be separated by a comma
Pattern | Description |
---|---|
block;<block>(patterns) | Executes Patterns if the block is the same as the specified block (like in //replace) |
solid(patterns) | Executes Patterns if the block is not an air-like block (ignored in config) |
above;<block>(patterns) | Executes Patterns if the block is above the specified block |
around;<block>(patterns) | Executes Patterns if the block is next to the specified block |
horizontal;<block>(patterns) | Executes Patterns if the block is next to the specified block in horizontal direction |
below;<block>(patterns) | Executes Patterns if the block is below the specified block |
not(condition(patterns)) | Executes Patterns of next Pattern is false (only works when nested) |
odd;[x];[y];[z](patterns) | Executes Patterns if the block is at odd coordinates at x, y and z Axis, the x, y and z can be left out (only given ones will be checked) |
even;[x];[y];[z](patterns) | Executes Patterns if the block is at even coordinates (see odd for more info) |
divisible;<number>;[x];[y];[z](patterns) | Executes Patterns if the block is at coordinates which are divisible by the given number (see odd for more info) |
walls;[thickness](patterns) | Executes Patterns if the block is one of the walls of the selection |
sides;[thickness](patterns) | Executes Patterns if the block is one of the sides of the selection (walls + bottom and top) |
center(patterns) | Executes Patterns if the block is in the center of the selection |
embed;<block>(patterns) | Executes Patterns if the block is around a higher specified block |
Functional Patterns
These Patterns have a unique use and are mostly used for the default commands
<argument> - required Argument
[argument] - optional Argument
patterns - children patterns, can be separated by a comma
Pattern | Description |
---|---|
naturalize([pattern],[pattern],[pattern]) | makes your selection more natural (1 layer of pattern1 (eg. grass), 3 layers of pattern2 (eg. dirt), all below pattern3 (eg. stone)) |
gravity([pattern]) | makes your blocks fall down until they reach the ground |
Blame Mojang
Minecraft Bedrock is just terrible at a lot of things, we can't do anything about it.
Delayed chunk updates
Chunks are not updated immediately, this produces ugly xray like effects even if we sent everything needed
Command Handling
Commands starting with a slash are handled terribly. The autocompletion just adds another slash every time and never shows the correct arguments making argument autocompletion impossible. For some non-apparent reason client side commands with an extra slash before them (like //help or //?) throw a client sided error and never send any packets to the server.