From efb534f1318af1343087d75fc5a1fdca99096a53 Mon Sep 17 00:00:00 2001 From: Thijs Wiefferink Date: Mon, 23 Feb 2015 19:26:20 +0100 Subject: [PATCH] Fix the schematic saving --- .../evolutioncoding/areashop/managers/FileManager.java | 1 + .../evolutioncoding/areashop/regions/GeneralRegion.java | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/src/nl/evolutioncoding/areashop/managers/FileManager.java b/src/nl/evolutioncoding/areashop/managers/FileManager.java index 57ca381..7bf96f4 100644 --- a/src/nl/evolutioncoding/areashop/managers/FileManager.java +++ b/src/nl/evolutioncoding/areashop/managers/FileManager.java @@ -1009,6 +1009,7 @@ public class FileManager { if(messageReceiver != null) { plugin.message(messageReceiver, "reload-loadComplete"); } + plugin.getFileManager().checkRents(); this.cancel(); } } diff --git a/src/nl/evolutioncoding/areashop/regions/GeneralRegion.java b/src/nl/evolutioncoding/areashop/regions/GeneralRegion.java index c1a6695..dbca9f3 100644 --- a/src/nl/evolutioncoding/areashop/regions/GeneralRegion.java +++ b/src/nl/evolutioncoding/areashop/regions/GeneralRegion.java @@ -45,6 +45,7 @@ import com.sk89q.worldedit.extent.clipboard.Clipboard; import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat; import com.sk89q.worldedit.extent.clipboard.io.ClipboardReader; import com.sk89q.worldedit.extent.clipboard.io.ClipboardWriter; +import com.sk89q.worldedit.function.operation.ForwardExtentCopy; import com.sk89q.worldedit.function.operation.Operation; import com.sk89q.worldedit.function.operation.Operations; import com.sk89q.worldedit.regions.CuboidRegion; @@ -825,12 +826,20 @@ public abstract class GeneralRegion { plugin.getLogger().warning("Did not save region " + getName() + ", world not found: " + getWorldName()); return false; } + EditSession editSession = plugin.getWorldEdit().getWorldEdit().getEditSessionFactory().getEditSession(world, plugin.getConfig().getInt("maximumBlocks")); // The path to save the schematic File saveFile = new File(plugin.getFileManager().getSchematicFolder() + File.separator + fileName + AreaShop.schematicExtension); // Create a clipboard CuboidRegion selection = new CuboidRegion(world, region.getMinimumPoint(), region.getMaximumPoint()); BlockArrayClipboard clipboard = new BlockArrayClipboard(selection); clipboard.setOrigin(region.getMinimumPoint()); + ForwardExtentCopy copy = new ForwardExtentCopy(editSession, new CuboidRegion(world, region.getMinimumPoint(), region.getMaximumPoint()), clipboard, region.getMinimumPoint()); + try { + Operations.completeLegacy(copy); + } catch (MaxChangedBlocksException e1) { + plugin.getLogger().warning("Exeeded the block limit while saving schematic of " + getName()); + return false; + } Closer closer = Closer.create(); try { // Create parent directories