Structures
Objective sets of artifacts that make structures
You can make a structure which is an artifact, which can contain multiple artifacts. Since it is an artifact, you could place structures within structures.
Build a Piston Tree
// Create a schematic
Schematic pistonSchem = new Schematic(new Dimension(3, 3, 3));
pistonSchem.fill(new MaterialBlock(Material.COBBLESTONE));
pistonSchem.set(1, 1, 1, Material.AIR, (byte) 0);
pistonSchem.setFace(new MaterialBlock(Material.WOOD), Direction.U);
pistonSchem.apply(Bukkit.getPlayer("cyberpwn").getLocation().add(0, 5, 0));
// Make 3 pistons
Artifact piston1 = new WorldArtifact(Bukkit.getPlayer("cyberpwn").getLocation(), pistonSchem);
Artifact piston2 = new WorldArtifact(Bukkit.getPlayer("cyberpwn").getLocation(), pistonSchem);
Artifact piston3 = new WorldArtifact(Bukkit.getPlayer("cyberpwn").getLocation(), pistonSchem);
// Create an artifact holder for all the pistons
Artifact pistonTree = new WorldStructure(Bukkit.getPlayer("cyberpwn").getLocation());
//Add artifacts in different relations
((WorldStructure) pistonTree).add(piston1, new Vector(0, 4, 0));
((WorldStructure) pistonTree).add(piston2, new Vector(0, 8, 0));
((WorldStructure) pistonTree).add(piston3, new Vector(0, 12, 0));
//Builds it
pistonTree.build();
//Moves all the sub-artifacts
pistonTree.move(Bukkit.getPlayer("Puretie").getLocation());
//Restores all modified blocks and removes it from the world until built
pistonTree.clear();