Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package _112.saveclaims;
- import com.boydti.fawe.object.schematic.Schematic;
- import com.boydti.fawe.util.EditSessionBuilder;
- import com.boydti.fawe.util.TaskManager;
- import com.sk89q.worldedit.EditSession;
- import com.sk89q.worldedit.extent.clipboard.BlockArrayClipboard;
- import com.sk89q.worldedit.math.BlockVector3;
- import com.sk89q.worldedit.regions.CuboidRegion;
- import me.ryanhamshire.GriefPrevention.Claim;
- import me.ryanhamshire.GriefPrevention.GriefPrevention;
- import org.bukkit.Bukkit;
- import org.bukkit.Location;
- import org.bukkit.World;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandExecutor;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- public class Save implements CommandExecutor {
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (sender instanceof Player) {
- Saveclaims sc = Saveclaims.getPlugin();
- Player player = (Player) sender;
- if (args.length == 2 && args[0] != null && args[1] != null) {
- if (player.getServer().getWorld(args[0]) != null && player.getServer().getWorld(args[1]) != null) {
- World world1;
- World world2;
- world1 = Bukkit.getWorld(args[0]);
- world2 = Bukkit.getWorld(args[1]);
- EditSession copyWorld = new EditSessionBuilder(world1.getName())
- .allowedRegionsEverywhere()
- .build();
- EditSession pasteWorld = new EditSessionBuilder(world2.getName())
- .allowedRegionsEverywhere()
- .fastmode(true)
- .build();
- TaskManager.IMP.async(() -> {
- Location corner1;
- Location corner2;
- int claims = GriefPrevention.instance.dataStore.getClaims().size();
- int done = 0;
- for (Claim claim : GriefPrevention.instance.dataStore.getClaims()) {
- corner1 = claim.getLesserBoundaryCorner();
- corner2 = claim.getGreaterBoundaryCorner();
- world2.getChunkAtAsync(corner1.getBlockZ(), corner2.getBlockZ());
- if (!corner1.getWorld().getName().equals(args[0])) {
- Saveclaims.getPlugin().logMessage((String.format("Skipping claim in %s doesn't match specified world %s", corner1.getWorld().getName(), world1.getName())));
- continue;
- }
- Saveclaims.getPlugin().logMessage(String.format("Copying claim %s:%s from %s %s %s", claim.getOwnerName(), claim.getID(), corner1.getBlockX(), corner1.getBlockY(), corner1.getBlockZ()));
- BlockVector3 pos1 = BlockVector3.at(corner1.getX(), 0,corner1.getZ());
- BlockVector3 pos2 = BlockVector3.at(corner2.getX(), world2.getMaxHeight(),corner2.getZ());
- CuboidRegion copyRegion = new CuboidRegion(pos1, pos2);
- BlockArrayClipboard lazyCopy = copyWorld.lazyCopy(copyRegion);
- Schematic schem = new Schematic(lazyCopy);
- BlockVector3 to = BlockVector3.at(corner1.getBlockX(), 0, corner1.getBlockZ());
- schem.paste(pasteWorld, to, true);
- pasteWorld.flushQueue();
- pasteWorld.fixLighting(copyRegion.getChunks());
- world2.unloadChunk(corner1.getBlockZ(), corner2.getBlockZ());
- Saveclaims.getPlugin().logMessage(String.format("Copied claim %s", claim.getID()));
- claims--;
- done++;
- if (done == 10) {
- done = 0;
- Saveclaims.getPlugin().logMessage(String.format("%s claims left to copy", claims));
- }
- }
- });
- } else {
- sc.sendMessage(sender, "A world you specified doesn't exist");
- return true;
- }
- } else {
- sc.sendMessage(sender, "Please specify two worlds /saveclaims <world1> <world2>");
- return true;
- }
- }
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement