Search in sources :

Example 1 with InvalidSnapshotException

use of com.sk89q.worldedit.world.snapshot.InvalidSnapshotException 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 InvalidSnapshotException

use of com.sk89q.worldedit.world.snapshot.InvalidSnapshotException 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)

Aggregations

LocalConfiguration (com.sk89q.worldedit.LocalConfiguration)2 InvalidSnapshotException (com.sk89q.worldedit.world.snapshot.InvalidSnapshotException)2 Snapshot (com.sk89q.worldedit.world.snapshot.Snapshot)2 MissingWorldException (com.sk89q.worldedit.world.storage.MissingWorldException)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 File (java.io.File)1 IOException (java.io.IOException)1