HyCodeYourTale
classpublicPriority 1

WorldPruneCommand

com.hypixel.hytale.server.core.universe.world.commands.world.WorldPruneCommand

extends AbstractAsyncCommand

0

Methods

0

Public Methods

0

Fields

1

Constructors

Constants

MessageMESSAGE_COMMANDS_WORLD_PRUNE_NONE_TO_PRUNE= Message.translation("server.commands.world.prune.noneToPrune")
MessageMESSAGE_COMMANDS_WORLD_PRUNE_PRUNE_ERROR= Message.translation("server.commands.world.prune.pruneError")

Constructors

public
WorldPruneCommand()

Inheritance

Parent
Current
Interface
Child

Use mouse wheel to zoom, drag to pan. Click nodes to navigate.

Related Classes

Source Code

package com.hypixel.hytale.server.core.universe.world.commands.world;

import com.hypixel.hytale.logger.HytaleLogger;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.command.system.CommandContext;
import com.hypixel.hytale.server.core.command.system.CommandSender;
import com.hypixel.hytale.server.core.command.system.basecommands.AbstractAsyncCommand;
import com.hypixel.hytale.server.core.universe.Universe;
import com.hypixel.hytale.server.core.universe.world.World;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.logging.Level;
import javax.annotation.Nonnull;

public class WorldPruneCommand extends AbstractAsyncCommand {
   @Nonnull
   private static final Message MESSAGE_COMMANDS_WORLD_PRUNE_NONE_TO_PRUNE = Message.translation("server.commands.world.prune.noneToPrune");
   @Nonnull
   private static final Message MESSAGE_COMMANDS_WORLD_PRUNE_PRUNE_ERROR = Message.translation("server.commands.world.prune.pruneError");

   public WorldPruneCommand() {
      super("prune", "server.commands.world.prune.desc", true);
   }

   @Nonnull
   @Override
   protected CompletableFuture<Void> executeAsync(@Nonnull CommandContext context) {
      CommandSender sender = context.sender();
      World defaultWorld = Universe.get().getDefaultWorld();
      Map<String, World> worlds = Universe.get().getWorlds();
      Set<String> toRemove = new HashSet<>();
      worlds.forEach((worldKey, world) -> {
         if (world != defaultWorld && world.getPlayerCount() == 0) {
            toRemove.add(worldKey);
            world.getWorldConfig().setDeleteOnRemove(true);
         }
      });
      if (toRemove.isEmpty()) {
         sender.sendMessage(MESSAGE_COMMANDS_WORLD_PRUNE_NONE_TO_PRUNE);
         return CompletableFuture.completedFuture(null);
      } else {
         return CompletableFuture.runAsync(() -> {
            toRemove.forEach(worldKey -> {
               try {
                  boolean removed = Universe.get().removeWorld(worldKey);
                  String msgKey = removed ? "server.commands.world.prune.prunedWorld" : "server.commands.world.prune.pruneFailed";
                  sender.sendMessage(Message.translation(msgKey).param("world", worldKey));
               } catch (Throwable var4x) {
                  sender.sendMessage(MESSAGE_COMMANDS_WORLD_PRUNE_PRUNE_ERROR);
                  ((HytaleLogger.Api)HytaleLogger.getLogger().at(Level.SEVERE).withCause(var4x)).log("Error pruning world " + worldKey);
               }
            });
            sender.sendMessage(Message.translation("server.commands.world.prune.done").param("count", toRemove.size()));
         });
      }
   }
}