Apply watchdog mode to undo/redo. Abstract EditSession creation logic.

This commit is contained in:
wizjany 2019-09-30 18:28:13 -04:00
parent 3093c45675
commit 91f92a46fe

View File

@ -239,12 +239,7 @@ public class LocalSession {
EditSession editSession = history.get(historyPointer); EditSession editSession = history.get(historyPointer);
try (EditSession newEditSession = WorldEdit.getInstance().getEditSessionFactory() try (EditSession newEditSession = WorldEdit.getInstance().getEditSessionFactory()
.getEditSession(editSession.getWorld(), -1, newBlockBag, actor)) { .getEditSession(editSession.getWorld(), -1, newBlockBag, actor)) {
newEditSession.enableStandardMode(); prepareEditingExtents(editSession, actor);
newEditSession.setReorderMode(reorderMode);
newEditSession.setFastMode(fastMode);
if (newEditSession.getSurvivalExtent() != null) {
newEditSession.getSurvivalExtent().setStripNbt(!actor.hasPermission("worldedit.setnbt"));
}
editSession.undo(newEditSession); editSession.undo(newEditSession);
} }
return editSession; return editSession;
@ -267,12 +262,7 @@ public class LocalSession {
EditSession editSession = history.get(historyPointer); EditSession editSession = history.get(historyPointer);
try (EditSession newEditSession = WorldEdit.getInstance().getEditSessionFactory() try (EditSession newEditSession = WorldEdit.getInstance().getEditSessionFactory()
.getEditSession(editSession.getWorld(), -1, newBlockBag, actor)) { .getEditSession(editSession.getWorld(), -1, newBlockBag, actor)) {
newEditSession.enableStandardMode(); prepareEditingExtents(editSession, actor);
newEditSession.setReorderMode(reorderMode);
newEditSession.setFastMode(fastMode);
if (newEditSession.getSurvivalExtent() != null) {
newEditSession.getSurvivalExtent().setStripNbt(!actor.hasPermission("worldedit.setnbt"));
}
editSession.redo(newEditSession); editSession.redo(newEditSession);
} }
++historyPointer; ++historyPointer;
@ -954,15 +944,19 @@ public class LocalSession {
} }
Request.request().setEditSession(editSession); Request.request().setEditSession(editSession);
editSession.setMask(mask);
prepareEditingExtents(editSession, actor);
return editSession;
}
private void prepareEditingExtents(EditSession editSession, Actor actor) {
editSession.setFastMode(fastMode); editSession.setFastMode(fastMode);
editSession.setReorderMode(reorderMode); editSession.setReorderMode(reorderMode);
editSession.setMask(mask);
if (editSession.getSurvivalExtent() != null) { if (editSession.getSurvivalExtent() != null) {
editSession.getSurvivalExtent().setStripNbt(!actor.hasPermission("worldedit.setnbt")); editSession.getSurvivalExtent().setStripNbt(!actor.hasPermission("worldedit.setnbt"));
} }
editSession.setTickingWatchdog(tickingWatchdog); editSession.setTickingWatchdog(tickingWatchdog);
return editSession;
} }
/** /**