Fix history rollback

- Fixes #959
This commit is contained in:
dordsor21 2021-08-08 19:35:57 +01:00
parent f06ba41f91
commit 57f7c93033
No known key found for this signature in database
GPG Key ID: 1E53E88969FFCF0B
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 {

View File

@ -148,7 +148,11 @@ public class HistorySubCommands {
for (Supplier<RollbackOptimizedHistory> supplier : database.getEdits(other, minTime, bot, top, !restore, restore)) {
count++;
RollbackOptimizedHistory edit = supplier.get();
edit.undo(player, allowedRegions);
if (restore) {
edit.redo(player, allowedRegions);
} else {
edit.undo(player, allowedRegions);
}
String path = edit.getWorld().getName() + "/" + finalOther + "-" + edit.getIndex();
player.print(Caption.of("fawe.worldedit.rollback.rollback.element", path));
}