InstanceEditCopyCommand.java
package com.hypixel.hytale.builtin.instances.command;
import com.hypixel.hytale.builtin.instances.InstancesPlugin;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.asset.AssetModule;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncCommand;
import com.hypixel.hytale.server.core.universe.world.WorldConfig;
import com.hypixel.hytale.server.core.util.io.FileUtil;
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.logging.Level;
import javax.annotation.Nonnull;
public class InstanceEditCopyCommand extends AbstractAsyncCommand {
private final RequiredArg<String> originNameArg;
private final RequiredArg<String> destinationNameArg;
public InstanceEditCopyCommand() {
super("copy", "server.commands.instances.edit.copy.desc");
.originNameArg = .withRequiredArg(, , ArgTypes.STRING);
.destinationNameArg = .withRequiredArg(, , ArgTypes.STRING);
}
CompletableFuture<Void> {
(AssetModule.get().getBaseAssetPack().isImmutable()) {
context.sendMessage(Message.translation());
CompletableFuture.completedFuture((Object));
} {
(String).originNameArg.get(context);
InstancesPlugin.getInstanceAssetPath(instanceToCopy);
(!Files.exists(originPath, [])) {
context.sendMessage(Message.translation().param(, originPath.toAbsolutePath().toString()));
CompletableFuture.completedFuture((Object));
} {
(String).destinationNameArg.get(context);
originPath.getParent().resolve(destinationName);
(Files.exists(destinationPath, [])) {
context.sendMessage(Message.translation().param(, destinationPath.toAbsolutePath().toString()));
CompletableFuture.completedFuture((Object));
} {
WorldConfig worldConfig;
{
worldConfig = (WorldConfig)WorldConfig.load(originPath.resolve()).join();
} (Throwable t) {
context.sendMessage(Message.translation());
InstancesPlugin.get().getLogger().at(Level.SEVERE).log(, t);
CompletableFuture.completedFuture((Object));
}
worldConfig.setUuid(UUID.randomUUID());
destinationPath.resolve();
{
FileUtil.copyDirectory(originPath, destinationPath);
Files.deleteIfExists(destinationConfigFile);
} (Throwable t) {
context.sendMessage(Message.translation());
InstancesPlugin.get().getLogger().at(Level.SEVERE).log(, t);
CompletableFuture.completedFuture((Object));
}
WorldConfig.save(destinationConfigFile, worldConfig).thenRun(() -> context.sendMessage(Message.translation().param(, instanceToCopy).param(, destinationName)));
}
}
}
}
}