WorldSaveCommand class
Пакет: com.hypixel.hytale.server.core.universe.world.commands.world
Файл: com/hypixel/hytale/server/core/universe/world/commands/world/WorldSaveCommand.java
extends: AbstractAsyncCommand
Поля (2)
| Модификаторы | Тип | Имя |
|---|---|---|
|
World |
var2 |
|
CompletableFuture[] |
var2 |
Методы (1)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
|
super super("save", "server.commands.world.save.desc", true) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.commands.world;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
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.Universe;
class="kw">import com.hypixel.hytale.server.core.universe.system.WorldConfigSaveSystem;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.component.ChunkSavingSystems;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.concurrent.CompletionStage;
class="kw">import javax.annotation.Nonnull;
class="kw">public class WorldSaveCommand class="kw">extends AbstractAsyncCommand {
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_WORLD_SAVE_NO_WORLD_SPECIFIED = Message.translation("server.commands.world.save.noWorldSpecified");
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_WORLD_SAVE_SAVING_ALL = Message.translation("server.commands.world.save.savingAll");
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_WORLD_SAVE_SAVING_ALL_DONE = Message.translation("server.commands.world.save.savingAllDone");
@Nonnull
class="kw">private class="kw">final OptionalArg<World> worldArg = this.withOptionalArg("world", "server.commands.worldthread.arg.desc", ArgTypes.WORLD);
@Nonnull
class="kw">private class="kw">final FlagArg saveAllFlag = this.withFlagArg("all", "server.commands.world.save.all.desc");
class="kw">public WorldSaveCommand() {
super("save", "server.commands.world.save.desc", true);
}
@Nonnull
@Override
class="kw">protected CompletableFuture<Void> executeAsync(@Nonnull CommandContext var1) {
if (this.saveAllFlag.get(var1)) {
class="kw">return this.saveAllWorlds(var1);
} else if (!this.worldArg.provided(var1)) {
var1.sendMessage(MESSAGE_COMMANDS_WORLD_SAVE_NO_WORLD_SPECIFIED);
class="kw">return CompletableFuture.completedFuture(null);
} else {
World var2 = this.worldArg.getProcessed(var1);
var1.sendMessage(Message.translation("server.commands.world.save.saving").param("world", var2.getName()));
class="kw">return CompletableFuture.<CompletableFuture<Void>>supplyAsync(() -> saveWorld(var2), var2)
.thenCompose(var0 -> (CompletionStage<Void>)var0)
.thenRun(() -> var1.sendMessage(Message.translation("server.commands.world.save.savingDone").param("world", var2.getName())));
}
}
@Nonnull
class="kw">private CompletableFuture<Void> saveAllWorlds(@Nonnull CommandContext var1) {
var1.sendMessage(MESSAGE_COMMANDS_WORLD_SAVE_SAVING_ALL);
CompletableFuture[] var2 = Universe.get()
.getWorlds()
.values()
.stream()
.map(var0 -> CompletableFuture.<CompletableFuture<Void>>supplyAsync(() -> saveWorld(var0), var0).thenCompose(var0x -> (CompletionStage<Void>)var0x))
.toArray(CompletableFuture[]::new);
class="kw">return CompletableFuture.allOf(var2).thenRun(() -> var1.sendMessage(MESSAGE_COMMANDS_WORLD_SAVE_SAVING_ALL_DONE));
}
@Nonnull
class="kw">private class="kw">static CompletableFuture<Void> saveWorld(@Nonnull World var0) {
class="kw">return CompletableFuture.allOf(
WorldConfigSaveSystem.saveWorldConfigAndResources(var0), ChunkSavingSystems.saveChunksInWorld(var0.getChunkStore().getStore(), var0)
);
}
}