Denizen Script Commands


Commands are always written with a '-' before them, and are the core component of any script, the primary way to cause things to happen.
Learn about how commands work in The Beginner's Guide.


Showing 1 out of 184 commands...
NameSchematic
Syntaxschematic [create/load/unload/rotate/save/flip_x/flip_y/flip_z/paste (fake_to:<player>|... fake_duration:<duration>) (noair) (mask:<material_matcher>)] [name:<name>] (filename:<name>) (angle:<#>) (<location>) (area:<area>) (delayed) (max_delay_ms:<#>) (entities) (flags)
Short DescriptionCreates, loads, pastes, and saves schematics (Sets of blocks).
Full DescriptionCreates, loads, pastes, and saves schematics. Schematics are files containing info about blocks and the order of those blocks.

Denizen offers a number of tools to manipulate and work with schematics.
Schematics can be rotated, flipped, pasted with no air, or pasted with a delay.

All schematic command usages must specify the "name" argument, which is a unique global identifier of the schematic in memory.
This will be created by "create" or "load" options, and persist in memory until "unload" is used (or the server is restarted).

The 'create' option requires an area and a center location as input.
The area can be defined as any valid ObjectType:AreaObject, such as a CuboidTag.
Note that all schematics are internally tracked as cuboids, and other area shapes will only constrain the copy region.
Note that the block boundaries of non-cuboid regions are defined by whether the region definition contains the center of a block.
This will create a new schematic in memory based on world data.

The "rotate angle:#" and "flip_x/y/z" options will apply the change to the copy of the schematic in memory, to later be pasted or saved.
This will rotate the set of blocks itself, the relative origin, and any directional blocks inside the schematic.
Rotation angles must be a multiple of 90 degrees.

When using 'paste', you can specify 'angle:#' to have that paste rotated, without rotating the original schematic.

The "delayed" option makes the command non-instant. This is recommended for large schematics.
For 'save', 'load', and 'rotate', this processes async to prevent server lockup.
For 'paste' and 'create', this delays how many blocks can be processed at once, spread over many ticks.
Optionally, specify 'max_delay_ms' to control how many milliseconds the 'delayed' set can run for in any given tick (defaults to 50) (for create/paste only).

The "load" option by default will load '.schem' files. If no '.schem' file is available, will attempt to load a legacy '.schematic' file instead.

For load and save, the "filename" option is available to specify the name of the file to look for.
If unspecified, the filename will default to the same as the "name" input.

The "noair" option skips air blocks in the pasted schematics- this means those air blocks will not replace any blocks in the target location.

The "mask" option can be specified to limit what block types the schematic will be pasted over.
When using "create" and "mask", any block that doesn't match the mask will become a structure void.

The "fake_to" option can be specified to cause the schematic paste to be a fake (packet-based, see Command:showfake)
block set, instead of actually modifying the blocks in the world.
This takes an optional duration as "fake_duration" for how long the fake blocks should remain.

The "create" and "paste" options allow the "entities" argument to be specified - when used, entities will be copied or pasted.
At current time, entity types included will be: Paintings, ItemFrames, ArmorStands.

The "create" option allows the "flags" argument to be specified - when used, block location flags will be copied.

The schematic command is ~waitable as an alternative to 'delayed' argument. Refer to Language:~waitable.

To delete a schematic file, use Mechanism:server.delete_file.
Related Tags<schematic[<name>].height> Returns the height (Y) of the schematic.
<schematic[<name>].length> Returns the length (Z) of the schematic.
<schematic[<name>].width> Returns the width (X) of the schematic.
<schematic[<name>].block[<location>]> Returns the material for the block at the location in the schematic. (...)
<schematic[<name>].origin> Returns the origin location of the schematic.
<schematic[<name>].blocks> Returns the number of blocks in the schematic.
<schematic[<name>].exists> Returns whether the schematic exists.
<schematic[<name>].cuboid[<origin_location>]> Returns a cuboid of where the schematic would be if it was pasted at an origin.
<schematic.list> Returns a list of all loaded schematics.
Usage Example
# Use to create a new schematic from a cuboid and an origin location.
- schematic create name:MySchematic area:<[my_cuboid]> <player.location>
Usage Example
# Use to load a schematic.
- ~schematic load name:MySchematic
Usage Example
# Use to unload a schematic.
- schematic unload name:MySchematic
Usage Example
# Use to paste a loaded schematic with no air blocks.
- schematic paste name:MySchematic <player.location> noair
Usage Example
# Use to save a created schematic.
- ~schematic save name:MySchematic
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/world/SchematicCommand.java#L58