DumpCommandsCommand class

Пакет: com.hypixel.hytale.server.core.command.commands.utility.metacommands

Файл: com/hypixel/hytale/server/core/command/commands/utility/metacommands/DumpCommandsCommand.java

extends: CommandBase

Поля (13)

МодификаторыТипИмя
Map var1
JsonObject var2
List var2
Gson var3
String var3
String var3
List var4
Path var4
String var4
String var5
String var6
String var7
List var8

Методы (7)

МодификаторыВозвратСигнатура
private record CommandDefrecord CommandDef(String name, String className, String owner, String ownerClass, String permission, List<String> permissionGroups)
abstract throw new RuntimeExceptionthrow new RuntimeException(var5)
private void extractCommandvoid extractCommand(@Nonnull AbstractCommand var1, @Nonnull List<DumpCommandsCommand.CommandDef> var2)
private <T> String formatNullable<T> String formatNullable(@Nullable T var1, Function<T, String> var2)
private String formatPermissionString formatPermission(@Nullable String var1)
private List<DumpCommandsCommand.CommandDef> gatherCommandDefsList<DumpCommandsCommand.CommandDef> gatherCommandDefs()
abstract super super("dump", "server.commands.meta.dump.desc")

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.command.commands.utility.metacommands;

class="kw">import com.google.gson.Gson;
class="kw">import com.google.gson.GsonBuilder;
class="kw">import com.google.gson.JsonObject;
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.command.system.AbstractCommand;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandManager;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandOwner;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.nio.file.Files;
class="kw">import java.nio.file.Path;
class="kw">import java.nio.file.Paths;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.function.Function;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class DumpCommandsCommand class="kw">extends CommandBase {
   class="kw">public DumpCommandsCommand() {
      super("dump", "server.commands.meta.dump.desc");
   }

   @Override
   class="kw">protected void executeSync(@Nonnull CommandContext var1) {
      JsonObject var2 = new JsonObject();
      Gson var3 = new GsonBuilder().setPrettyPrinting().create();
      List var4 = this.gatherCommandDefs();
      var2.add("modern", var3.toJsonTree(var4));
      CompletableFuture.runAsync(() -> {
         try {
            String var3 = var3.toJson(var2);
            Path var4 = Paths.get("dumps/commands.dump.json");
            Files.createDirectories(var4.getParent());
            Files.writeString(var4, var3);
            var1.sendMessage(Message.translation("server.commands.meta.dump.success").param("file", var4.toAbsolutePath().toString()));
         } catch (Throwable var5) {
            throw new RuntimeException(var5);
         }
      }).exceptionally(var1x -> {
         var1.sendMessage(Message.translation("server.commands.meta.dump.error"));
         ((HytaleLogger.Api)HytaleLogger.getLogger().at(Level.SEVERE).withCause(var1x)).log("Couldn't write command dump");
         class="kw">return null;
      });
   }

   class="kw">private List<DumpCommandsCommand.CommandDef> gatherCommandDefs() {
      Map var1 = CommandManager.get().getCommandRegistration();
      List var2 = new ObjectArrayList(var1.size() * 2);
      var1.forEach((var2x, var3) -> this.extractCommand(var3, var2));
      class="kw">return var2;
   }

   class="kw">private void extractCommand(@Nonnull AbstractCommand var1, @Nonnull List<DumpCommandsCommand.CommandDef> var2) {
      String var3 = "/" + var1.getFullyQualifiedName();
      String var4 = var1.getClass().getName();
      String var5 = this.formatNullable(var1.getOwner(), CommandOwner::getName);
      String var6 = this.formatNullable(var1.getOwner(), var0 -> var0.getClass().getName());
      String var7 = this.formatPermission(var1.getPermission());
      List var8 = var1.getPermissionGroups();
      var2.add(new DumpCommandsCommand.CommandDef(var3, var4, var5, var6, var7, var8));

      for (AbstractCommand var10 : var1.getSubCommands().values()) {
         this.extractCommand(var10, var2);
      }
   }

   class="kw">private <T> String formatNullable(@Nullable T var1, Function<T, String> var2) {
      try {
         class="kw">return var1 == null ? "NULL" : var2.apply(var1);
      } catch (Throwable var4) {
         class="kw">return "ERROR";
      }
   }

   class="kw">private String formatPermission(@Nullable String var1) {
      class="kw">return var1 == null ? "NULL" : var1;
   }

   class="kw">private record CommandDef(String name, String className, String owner, String ownerClass, String permission, List<String> permissionGroups) {
      class="kw">private CommandDef {
      }
   }
}