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)
      );
   }
}