Fix history rollback

- Fixes #959
This commit is contained in:
dordsor21
2021-08-08 19:35:57 +01:00
parent f06ba41f91
commit 57f7c93033
3 changed files with 22 additions and 5 deletions

View File

@ -14,6 +14,7 @@ import com.sk89q.jnbt.NBTInputStream;
import com.sk89q.jnbt.NBTOutputStream;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.entity.Player;
import com.sk89q.worldedit.function.operation.ChangeSetExecutor;
import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.world.World;
@ -133,8 +134,14 @@ public class DiskStorageHistory extends FaweStreamChangeSet {
}
public void undo(Player player, Region[] regions) {
try {
close();
} catch (IOException e) {
e.printStackTrace();
return;
}
EditSession session = toEditSession(player, regions);
session.undo(session);
session.setBlocks(this, ChangeSetExecutor.Type.UNDO);
deleteFiles();
}
@ -143,12 +150,18 @@ public class DiskStorageHistory extends FaweStreamChangeSet {
}
public void redo(Player player, Region[] regions) {
try {
close();
} catch (IOException e) {
e.printStackTrace();
return;
}
EditSession session = toEditSession(player, regions);
session.redo(session);
session.setBlocks(this, ChangeSetExecutor.Type.REDO);
}
public void redo(Player player) {
undo(player, null);
redo(player, null);
}
public UUID getUUID() {

View File

@ -245,7 +245,7 @@ public abstract class AbstractChangeSet implements ChangeSet, IBatchProcessor {
public EditSession toEditSession(Player player, Region[] regions) {
EditSessionBuilder builder =
new EditSessionBuilder(getWorld()).player(player).autoQueue(false).fastmode(false)
.checkMemory(false).changeSet(this).limitUnlimited();
.checkMemory(false).limitUnlimited();
if (regions != null) {
builder.allowedRegions(regions);
} else {