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 {
}
}
}