diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/ClipboardCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/ClipboardCommands.java index 4148fce93..f0a372372 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/ClipboardCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/ClipboardCommands.java @@ -25,6 +25,7 @@ import com.boydti.fawe.config.Caption; import com.boydti.fawe.config.Settings; import com.boydti.fawe.object.FaweLimit; import com.boydti.fawe.object.RunnableVal; +import com.boydti.fawe.object.clipboard.DiskOptimizedClipboard; import com.boydti.fawe.object.clipboard.MultiClipboardHolder; import com.boydti.fawe.object.clipboard.ReadOnlyClipboard; import com.boydti.fawe.object.clipboard.URIClipboardHolder; @@ -148,6 +149,7 @@ public class ClipboardCommands { copy.setSourceMask(mask); } Operations.completeLegacy(copy); + saveDiskClipboard(clipboard); session.setClipboard(new ClipboardHolder(clipboard)); copy.getStatusMessages().forEach(actor::print); @@ -259,6 +261,7 @@ public class ClipboardCommands { copy.setSourceMask(mask); } Operations.completeLegacy(copy); + saveDiskClipboard(clipboard); session.setClipboard(new ClipboardHolder(clipboard)); if (!actor.hasPermission("fawe.tips")) { @@ -539,4 +542,16 @@ public class ClipboardCommands { session.setClipboard(null); actor.printInfo(TranslatableComponent.of("worldedit.clearclipboard.cleared")); } + + private void saveDiskClipboard(Clipboard clipboard) { + DiskOptimizedClipboard c; + if (clipboard instanceof DiskOptimizedClipboard) + c = (DiskOptimizedClipboard) clipboard; + else if (clipboard instanceof BlockArrayClipboard + && ((BlockArrayClipboard) clipboard).getParent() instanceof DiskOptimizedClipboard) + c = (DiskOptimizedClipboard) ((BlockArrayClipboard) clipboard).getParent(); + else + return; + c.flush(); + } }