Artifacts
Objective regions of the world
Artifacts can hold a schematic and location. They can be moved and placed into other artifacts. Lets make a schematic and play around with it wrapped in an artifact.
The Artifact
//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 an artifact out of the schematic template
Artifact piston = new WorldArtifact(Bukkit.getPlayer("cyberpwn").getLocation(), pistonSchem);
//Build the piston
piston.build();
//Move it
piston.move(Bukkit.getPlayer("Puretie").getLocation());
//Remove it from the world restoring old blocks in place
piston.clear();
You can even have multiple artifacts from the same schematic. All in different locations