InstanceEditCopyCommand class
Пакет: com.hypixel.hytale.builtin.instances.command
Файл: com/hypixel/hytale/builtin/instances/command/InstanceEditCopyCommand.java
extends: AbstractAsyncCommand
Поля (6)
| Модификаторы | Тип | Имя |
|---|---|---|
|
String |
var2 |
|
Path |
var3 |
|
Path |
var4 |
|
WorldConfig |
var5 |
|
|
var5 |
|
Path |
var6 |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(var4 == null) |
abstract |
|
super super("copy", "server.commands.instances.edit.copy.desc") |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.instances.command;
class="kw">import com.hypixel.hytale.builtin.instances.InstancesPlugin;
class="kw">import com.hypixel.hytale.common.util.PathUtil;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.asset.AssetModule;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncCommand;
class="kw">import com.hypixel.hytale.server.core.universe.world.WorldConfig;
class="kw">import com.hypixel.hytale.server.core.util.io.FileUtil;
class="kw">import java.nio.file.Files;
class="kw">import java.nio.file.Path;
class="kw">import java.util.UUID;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">public class InstanceEditCopyCommand class="kw">extends AbstractAsyncCommand {
@Nonnull
class="kw">private class="kw">final RequiredArg<String> originNameArg = this.withRequiredArg("instanceToCopy", "server.commands.instances.editcopy.origin.name", ArgTypes.STRING);
@Nonnull
class="kw">private class="kw">final RequiredArg<String> destinationNameArg = this.withRequiredArg(
"newInstanceName", "server.commands.instances.editcopy.destination.name", ArgTypes.STRING
);
class="kw">public InstanceEditCopyCommand() {
super("copy", "server.commands.instances.edit.copy.desc");
}
@Nonnull
@Override
class="kw">protected CompletableFuture<Void> executeAsync(@Nonnull CommandContext var1) {
String var2 = this.originNameArg.get(var1);
Path var3 = InstancesPlugin.getInstanceAssetPath(var2);
if (!Files.exists(var3)) {
var1.sendMessage(Message.translation("server.commands.instances.edit.copy.originNotFound").param("path", var3.toAbsolutePath().toString()));
class="kw">return CompletableFuture.completedFuture(null);
}
if (AssetModule.get().isAssetPathImmutable(var3)) {
var1.sendMessage(Message.translation("server.commands.instances.edit.assetsImmutable"));
class="kw">return CompletableFuture.completedFuture(null);
}
Path var4 = PathUtil.resolveName(var3.getParent(), this.destinationNameArg.get(var1));
if (var4 == null) {
var1.sendMessage(Message.translation("server.commands.instances.edit.copy.invalidPath"));
class="kw">return CompletableFuture.completedFuture(null);
}
if (Files.exists(var4)) {
var1.sendMessage(Message.translation("server.commands.instances.edit.copy.destinationExists").param("path", var4.toAbsolutePath().toString()));
class="kw">return CompletableFuture.completedFuture(null);
}
WorldConfig var5;
try {
var5 = WorldConfig.load(var3.resolve("instance.bson")).join();
} catch (Throwable var9) {
var1.sendMessage(Message.translation("server.commands.instances.edit.copy.errorLoading"));
((HytaleLogger.Api)InstancesPlugin.get().getLogger().at(Level.SEVERE).withCause(var9)).log("Error loading origin instance config for copy");
class="kw">return CompletableFuture.completedFuture(null);
}
var5.setUuid(UUID.randomUUID());
Path var6 = var4.resolve("instance.bson");
try {
FileUtil.copyDirectory(var3, var4);
Files.deleteIfExists(var6);
} catch (Throwable var8) {
var1.sendMessage(Message.translation("server.commands.instances.edit.copy.errorCopying"));
((HytaleLogger.Api)InstancesPlugin.get().getLogger().at(Level.SEVERE).withCause(var8)).log("Error copying instance folder for copy");
class="kw">return CompletableFuture.completedFuture(null);
}
class="kw">return WorldConfig.save(var6, var5)
.thenRun(
() -> var1.sendMessage(
Message.translation("server.commands.instances.copiedInstanceAssetConfig")
.param("origin", var2)
.param("destination", var4.getFileName().toString())
)
);
}
}