geforkt von Mirrors/FastAsyncWorldEdit
Allow copyEntities to be used in ForwardExtentCopy again.
The -e flag should now work for //copy and //cut as it used to. Fixes WORLDEDIT-3557.
Dieser Commit ist enthalten in:
Ursprung
e511758d99
Commit
41de204186
@ -70,7 +70,7 @@ public class ClipboardCommands {
|
|||||||
desc = "Copy the selection to the clipboard",
|
desc = "Copy the selection to the clipboard",
|
||||||
help = "Copy the selection to the clipboard\n" +
|
help = "Copy the selection to the clipboard\n" +
|
||||||
"Flags:\n" +
|
"Flags:\n" +
|
||||||
" -e controls whether entities are copied\n" +
|
" -e will also copy entities\n" +
|
||||||
" -m sets a source mask so that excluded blocks become air\n" +
|
" -m sets a source mask so that excluded blocks become air\n" +
|
||||||
"WARNING: Pasting entities cannot yet be undone!",
|
"WARNING: Pasting entities cannot yet be undone!",
|
||||||
min = 0,
|
min = 0,
|
||||||
@ -84,6 +84,7 @@ public class ClipboardCommands {
|
|||||||
BlockArrayClipboard clipboard = new BlockArrayClipboard(region);
|
BlockArrayClipboard clipboard = new BlockArrayClipboard(region);
|
||||||
clipboard.setOrigin(session.getPlacementPosition(player));
|
clipboard.setOrigin(session.getPlacementPosition(player));
|
||||||
ForwardExtentCopy copy = new ForwardExtentCopy(editSession, region, clipboard, region.getMinimumPoint());
|
ForwardExtentCopy copy = new ForwardExtentCopy(editSession, region, clipboard, region.getMinimumPoint());
|
||||||
|
copy.setCopyingEntities(copyEntities);
|
||||||
if (mask != null) {
|
if (mask != null) {
|
||||||
copy.setSourceMask(mask);
|
copy.setSourceMask(mask);
|
||||||
}
|
}
|
||||||
@ -100,10 +101,9 @@ public class ClipboardCommands {
|
|||||||
desc = "Cut the selection to the clipboard",
|
desc = "Cut the selection to the clipboard",
|
||||||
help = "Copy the selection to the clipboard\n" +
|
help = "Copy the selection to the clipboard\n" +
|
||||||
"Flags:\n" +
|
"Flags:\n" +
|
||||||
" -e controls whether entities are copied\n" +
|
" -e will also cut entities\n" +
|
||||||
" -m sets a source mask so that excluded blocks become air\n" +
|
" -m sets a source mask so that excluded blocks become air\n" +
|
||||||
"WARNING: Cutting and pasting entities cannot yet be undone!",
|
"WARNING: Cutting and pasting entities cannot yet be undone!",
|
||||||
min = 0,
|
|
||||||
max = 1
|
max = 1
|
||||||
)
|
)
|
||||||
@CommandPermissions("worldedit.clipboard.cut")
|
@CommandPermissions("worldedit.clipboard.cut")
|
||||||
@ -116,6 +116,8 @@ public class ClipboardCommands {
|
|||||||
clipboard.setOrigin(session.getPlacementPosition(player));
|
clipboard.setOrigin(session.getPlacementPosition(player));
|
||||||
ForwardExtentCopy copy = new ForwardExtentCopy(editSession, region, clipboard, region.getMinimumPoint());
|
ForwardExtentCopy copy = new ForwardExtentCopy(editSession, region, clipboard, region.getMinimumPoint());
|
||||||
copy.setSourceFunction(new BlockReplace(editSession, leavePattern));
|
copy.setSourceFunction(new BlockReplace(editSession, leavePattern));
|
||||||
|
copy.setCopyingEntities(copyEntities);
|
||||||
|
copy.setRemovingEntities(true);
|
||||||
if (mask != null) {
|
if (mask != null) {
|
||||||
copy.setSourceMask(mask);
|
copy.setSourceMask(mask);
|
||||||
}
|
}
|
||||||
|
@ -58,6 +58,7 @@ public class ForwardExtentCopy implements Operation {
|
|||||||
private int repetitions = 1;
|
private int repetitions = 1;
|
||||||
private Mask sourceMask = Masks.alwaysTrue();
|
private Mask sourceMask = Masks.alwaysTrue();
|
||||||
private boolean removingEntities;
|
private boolean removingEntities;
|
||||||
|
private boolean copyingEntities = true; // default to true for backwards compatibility, sort of
|
||||||
private RegionFunction sourceFunction = null;
|
private RegionFunction sourceFunction = null;
|
||||||
private Transform transform = new Identity();
|
private Transform transform = new Identity();
|
||||||
private Transform currentTransform = null;
|
private Transform currentTransform = null;
|
||||||
@ -183,6 +184,24 @@ public class ForwardExtentCopy implements Operation {
|
|||||||
this.repetitions = repetitions;
|
this.repetitions = repetitions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return whether entities should be copied along with blocks.
|
||||||
|
*
|
||||||
|
* @return true if copying
|
||||||
|
*/
|
||||||
|
public boolean isCopyingEntities() {
|
||||||
|
return copyingEntities;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set whether entities should be copied along with blocks.
|
||||||
|
*
|
||||||
|
* @param copyingEntities true if copying
|
||||||
|
*/
|
||||||
|
public void setCopyingEntities(boolean copyingEntities) {
|
||||||
|
this.copyingEntities = copyingEntities;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return whether entities that are copied should be removed.
|
* Return whether entities that are copied should be removed.
|
||||||
*
|
*
|
||||||
@ -229,14 +248,18 @@ public class ForwardExtentCopy implements Operation {
|
|||||||
RegionFunction function = sourceFunction != null ? new CombinedRegionFunction(filter, sourceFunction) : filter;
|
RegionFunction function = sourceFunction != null ? new CombinedRegionFunction(filter, sourceFunction) : filter;
|
||||||
RegionVisitor blockVisitor = new RegionVisitor(region, function);
|
RegionVisitor blockVisitor = new RegionVisitor(region, function);
|
||||||
|
|
||||||
ExtentEntityCopy entityCopy = new ExtentEntityCopy(from, destination, to, currentTransform);
|
|
||||||
entityCopy.setRemoving(removingEntities);
|
|
||||||
List<? extends Entity> entities = source.getEntities(region);
|
|
||||||
EntityVisitor entityVisitor = new EntityVisitor(entities.iterator(), entityCopy);
|
|
||||||
|
|
||||||
lastVisitor = blockVisitor;
|
lastVisitor = blockVisitor;
|
||||||
currentTransform = currentTransform.combine(transform);
|
currentTransform = currentTransform.combine(transform);
|
||||||
return new DelegateOperation(this, new OperationQueue(blockVisitor, entityVisitor));
|
|
||||||
|
if (copyingEntities) {
|
||||||
|
ExtentEntityCopy entityCopy = new ExtentEntityCopy(from, destination, to, currentTransform);
|
||||||
|
entityCopy.setRemoving(removingEntities);
|
||||||
|
List<? extends Entity> entities = source.getEntities(region);
|
||||||
|
EntityVisitor entityVisitor = new EntityVisitor(entities.iterator(), entityCopy);
|
||||||
|
return new DelegateOperation(this, new OperationQueue(blockVisitor, entityVisitor));
|
||||||
|
} else {
|
||||||
|
return new DelegateOperation(this, blockVisitor);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren