Search in sources :

Example 1 with Snapshot

use of com.sk89q.worldedit.world.snapshot.Snapshot in project FastAsyncWorldEdit by IntellectualSites.

the class LegacySnapshotUtilCommands method restore.

// FAWE start - biome and entity restore
void restore(Actor actor, World world, LocalSession session, EditSession editSession, String snapshotName, boolean restoreBiomes, boolean restoreEntities) throws // FAWE end
WorldEditException {
    LocalConfiguration config = we.getConfiguration();
    Region region = session.getSelection(world);
    Snapshot snapshot;
    if (snapshotName != null) {
        try {
            snapshot = config.snapshotRepo.getSnapshot(snapshotName);
        } catch (InvalidSnapshotException e) {
            actor.print(Caption.of("worldedit.restore.not-available"));
            return;
        }
    } else {
        snapshot = session.getSnapshot();
    }
    // No snapshot set?
    if (snapshot == null) {
        try {
            snapshot = config.snapshotRepo.getDefaultSnapshot(world.getName());
            if (snapshot == null) {
                actor.print(Caption.of("worldedit.restore.none-found-console"));
                // Okay, let's toss some debugging information!
                File dir = config.snapshotRepo.getDirectory();
                try {
                    WorldEdit.logger.info("WorldEdit found no snapshots: looked in: " + dir.getCanonicalPath());
                } catch (IOException e) {
                    WorldEdit.logger.info("WorldEdit found no snapshots: looked in " + "(NON-RESOLVABLE PATH - does it exist?): " + dir.getPath());
                }
                return;
            }
        } catch (MissingWorldException ex) {
            actor.print(Caption.of("worldedit.restore.none-for-world"));
            return;
        }
    }
    ChunkStore chunkStore;
    // Load chunk store
    try {
        chunkStore = snapshot.getChunkStore();
        actor.print(Caption.of("worldedit.restore.loaded", TextComponent.of(snapshot.getName())));
    } catch (DataException | IOException e) {
        actor.print(Caption.of("worldedit.restore.failed", TextComponent.of(e.getMessage())));
        return;
    }
    try {
        // Restore snapshot
        // FAWE start - biome and entity restore
        SnapshotRestore restore = new SnapshotRestore(chunkStore, editSession, region, restoreBiomes, restoreEntities);
        // FAWE end
        restore.restore();
        if (restore.hadTotalFailure()) {
            String error = restore.getLastErrorMessage();
            if (!restore.getMissingChunks().isEmpty()) {
                actor.print(Caption.of("worldedit.restore.chunk-not-present"));
            } else if (error != null) {
                actor.print(Caption.of("worldedit.restore.block-place-failed"));
                actor.print(Caption.of("worldedit.restore.block-place-error", TextComponent.of(error)));
            } else {
                actor.print(Caption.of("worldedit.restore.chunk-load-failed"));
            }
        } else {
            actor.print(Caption.of("worldedit.restore.restored", TextComponent.of(restore.getMissingChunks().size()), TextComponent.of(restore.getErrorChunks().size())));
        }
    } finally {
        try {
            chunkStore.close();
        } catch (IOException ignored) {
        }
    }
}
Also used : Snapshot(com.sk89q.worldedit.world.snapshot.Snapshot) InvalidSnapshotException(com.sk89q.worldedit.world.snapshot.InvalidSnapshotException) DataException(com.sk89q.worldedit.world.DataException) SnapshotRestore(com.sk89q.worldedit.world.snapshot.SnapshotRestore) Region(com.sk89q.worldedit.regions.Region) IOException(java.io.IOException) LocalConfiguration(com.sk89q.worldedit.LocalConfiguration) File(java.io.File) MissingWorldException(com.sk89q.worldedit.world.storage.MissingWorldException) ChunkStore(com.sk89q.worldedit.world.storage.ChunkStore)

Example 2 with Snapshot

use of com.sk89q.worldedit.world.snapshot.Snapshot in project FastAsyncWorldEdit by IntellectualSites.

the class LegacySnapshotCommands method before.

void before(Actor actor, World world, LocalSession session, ZonedDateTime date) {
    LocalConfiguration config = we.getConfiguration();
    try {
        Snapshot snapshot = config.snapshotRepo.getSnapshotBefore(date, world.getName());
        if (snapshot == null) {
            actor.print(Caption.of("worldedit.snapshot.none-before", TextComponent.of(dateFormat.withZone(session.getTimeZone()).format(date))));
        } else {
            session.setSnapshot(snapshot);
            actor.print(Caption.of("worldedit.snapshot.use", TextComponent.of(snapshot.getName())));
        }
    } catch (MissingWorldException ex) {
        actor.print(Caption.of("worldedit.restore.none-for-world"));
    }
}
Also used : Snapshot(com.sk89q.worldedit.world.snapshot.Snapshot) LocalConfiguration(com.sk89q.worldedit.LocalConfiguration) MissingWorldException(com.sk89q.worldedit.world.storage.MissingWorldException)

Example 3 with Snapshot

use of com.sk89q.worldedit.world.snapshot.Snapshot in project FastAsyncWorldEdit by IntellectualSites.

the class LegacySnapshotCommands method after.

void after(Actor actor, World world, LocalSession session, ZonedDateTime date) {
    LocalConfiguration config = we.getConfiguration();
    try {
        Snapshot snapshot = config.snapshotRepo.getSnapshotAfter(date, world.getName());
        if (snapshot == null) {
            actor.print(Caption.of("worldedit.snapshot.none-after", TextComponent.of(dateFormat.withZone(session.getTimeZone()).format(date))));
        } else {
            session.setSnapshot(snapshot);
            actor.print(Caption.of("worldedit.snapshot.use", TextComponent.of(snapshot.getName())));
        }
    } catch (MissingWorldException ex) {
        actor.print(Caption.of("worldedit.restore.none-for-world"));
    }
}
Also used : Snapshot(com.sk89q.worldedit.world.snapshot.Snapshot) LocalConfiguration(com.sk89q.worldedit.LocalConfiguration) MissingWorldException(com.sk89q.worldedit.world.storage.MissingWorldException)

Example 4 with Snapshot

use of com.sk89q.worldedit.world.snapshot.Snapshot in project FastAsyncWorldEdit by IntellectualSites.

the class LegacySnapshotCommands method use.

void use(Actor actor, World world, LocalSession session, String name) {
    LocalConfiguration config = we.getConfiguration();
    // Want the latest snapshot?
    if (name.equalsIgnoreCase("latest")) {
        try {
            Snapshot snapshot = config.snapshotRepo.getDefaultSnapshot(world.getName());
            if (snapshot != null) {
                session.setSnapshot(null);
                actor.print(Caption.of("worldedit.snapshot.use.newest"));
            } else {
                actor.print(Caption.of("worldedit.restore.none-found"));
            }
        } catch (MissingWorldException ex) {
            actor.print(Caption.of("worldedit.restore.none-for-world"));
        }
    } else {
        try {
            session.setSnapshot(config.snapshotRepo.getSnapshot(name));
            actor.print(Caption.of("worldedit.snapshot.use", TextComponent.of(name)));
        } catch (InvalidSnapshotException e) {
            actor.print(Caption.of("worldedit.restore.not-available"));
        }
    }
}
Also used : Snapshot(com.sk89q.worldedit.world.snapshot.Snapshot) InvalidSnapshotException(com.sk89q.worldedit.world.snapshot.InvalidSnapshotException) LocalConfiguration(com.sk89q.worldedit.LocalConfiguration) MissingWorldException(com.sk89q.worldedit.world.storage.MissingWorldException)

Example 5 with Snapshot

use of com.sk89q.worldedit.world.snapshot.Snapshot in project FastAsyncWorldEdit by IntellectualSites.

the class LegacySnapshotCommands method sel.

void sel(Actor actor, World world, LocalSession session, int index) {
    LocalConfiguration config = we.getConfiguration();
    if (index < 1) {
        actor.print(Caption.of("worldedit.snapshot.index-above-0"));
        return;
    }
    try {
        List<Snapshot> snapshots = config.snapshotRepo.getSnapshots(true, world.getName());
        if (snapshots.size() < index) {
            actor.print(Caption.of("worldedit.snapshot.index-oob", TextComponent.of(snapshots.size())));
            return;
        }
        Snapshot snapshot = snapshots.get(index - 1);
        if (snapshot == null) {
            actor.print(Caption.of("worldedit.restore.not-available"));
            return;
        }
        session.setSnapshot(snapshot);
        actor.print(Caption.of("worldedit.snapshot.use", TextComponent.of(snapshot.getName())));
    } catch (MissingWorldException e) {
        actor.print(Caption.of("worldedit.restore.none-for-world"));
    }
}
Also used : Snapshot(com.sk89q.worldedit.world.snapshot.Snapshot) LocalConfiguration(com.sk89q.worldedit.LocalConfiguration) MissingWorldException(com.sk89q.worldedit.world.storage.MissingWorldException)

Aggregations

LocalConfiguration (com.sk89q.worldedit.LocalConfiguration)6 Snapshot (com.sk89q.worldedit.world.snapshot.Snapshot)6 MissingWorldException (com.sk89q.worldedit.world.storage.MissingWorldException)6 InvalidSnapshotException (com.sk89q.worldedit.world.snapshot.InvalidSnapshotException)2 File (java.io.File)2 IOException (java.io.IOException)2 Region (com.sk89q.worldedit.regions.Region)1 DataException (com.sk89q.worldedit.world.DataException)1 SnapshotRestore (com.sk89q.worldedit.world.snapshot.SnapshotRestore)1 ChunkStore (com.sk89q.worldedit.world.storage.ChunkStore)1