MacroCommandTreeBuilder class
Пакет: com.hypixel.hytale.builtin.commandmacro
Файл: com/hypixel/hytale/builtin/commandmacro/MacroCommandTreeBuilder.java
Поля (14)
| Модификаторы | Тип | Имя |
|---|---|---|
|
final Map<String, MacroCommandTreeBuilder.Node> |
children |
|
final String |
fullPath |
|
MacroCommandBuilder |
macro |
|
final String |
token |
|
String[] |
var1 |
|
AbstractCommand |
var1 |
|
|
var1 |
|
|
var1 |
|
MacroCommandTreeBuilder.Node |
var2 |
|
MacroCommandTreeBuilder.Node |
var3 |
|
|
var3 |
|
StringBuilder |
var4 |
|
String[] |
var5 |
|
String |
var6 |
Методы (9)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
Node Node(@Nonnull String var1, @Nonnull String var2) |
|
|
for for(MacroCommandBuilder var4 : var1) |
|
|
for for(int var5 = 1; var5 < var2.length; var5++) |
|
|
if if(var5 == null) |
|
|
if if(var3.macro != null) |
|
|
if if(var0.macro != null) |
|
|
if if(var1 == null) |
static |
void |
insertvoid insert(@Nonnull MacroCommandTreeBuilder.Node var0, @Nonnull MacroCommandBuilder var1, @Nonnull String[] var2) |
abstract |
|
insert insert(var2, var4, var5) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.commandmacro;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.command.system.AbstractCommand;
class="kw">import java.util.Collection;
class="kw">import java.util.LinkedHashMap;
class="kw">import java.util.Locale;
class="kw">import java.util.Map;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">final class MacroCommandTreeBuilder {
@Nonnull
class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
class="kw">private MacroCommandTreeBuilder() {
}
@Nullable
class="kw">static String rootTokenOf(@Nonnull MacroCommandBuilder var0) {
String[] var1 = var0.getPathTokens();
class="kw">return var1 != null && var1.length != 0 ? var1[0].toLowerCase(Locale.ROOT) : null;
}
@Nullable
class="kw">static AbstractCommand build(@Nonnull String var0, @Nonnull Collection<MacroCommandBuilder> var1) {
MacroCommandTreeBuilder.Node var2 = new MacroCommandTreeBuilder.Node(var0, var0);
for (MacroCommandBuilder var4 : var1) {
String[] var5 = var4.getPathTokens();
if (var5 == null) {
if (var4.getName() != null) {
LOGGER.at(Level.WARNING)
.log("Skipping macro command with invalid Name (must be non-blank, single-space-separated tokens): '%s'", var4.getName());
}
} else if (var5[0].toLowerCase(Locale.ROOT).equals(var0)) {
insert(var2, var4, var5);
}
}
class="kw">return var2.macro == null && var2.children.isEmpty() ? null : toCommand(var2);
}
class="kw">private class="kw">static void insert(@Nonnull MacroCommandTreeBuilder.Node var0, @Nonnull MacroCommandBuilder var1, @Nonnull String[] var2) {
MacroCommandTreeBuilder.Node var3 = var0;
StringBuilder var4 = new StringBuilder(var2[0].toLowerCase(Locale.ROOT));
for (int var5 = 1; var5 < var2.length; var5++) {
String var6 = var2[var5].toLowerCase(Locale.ROOT);
var4.append(' ').append(var6);
var3 = var3.children.computeIfAbsent(var6, var1x -> new MacroCommandTreeBuilder.Node(var1x, var4.toString()));
}
if (var3.macro != null) {
LOGGER.at(Level.WARNING)
.log("Duplicate macro command path '%s' (asset '%s'); ignoring duplicate, keeping the first definition.", var3.fullPath, var1.getId());
} else {
var3.macro = var1;
}
}
@Nonnull
class="kw">private class="kw">static AbstractCommand toCommand(@Nonnull MacroCommandTreeBuilder.Node var0) {
AbstractCommand var1 = null;
if (var0.macro != null) {
try {
var1 = var0.macro.createBase(var0.token, var0.fullPath);
} catch (RuntimeException var4) {
((HytaleLogger.Api)LOGGER.at(Level.WARNING).withCause(var4))
.log("Failed to construct macro command '%s' (asset '%s'); leaving path as a passthrough collection.", var0.fullPath, var0.macro.getId());
}
}
if (var1 == null) {
var1 = new MacroCommandCollection(var0.token);
}
for (MacroCommandTreeBuilder.Node var3 : var0.children.values()) {
var1.addSubCommand(toCommand(var3));
}
class="kw">return var1;
}
class="kw">private class="kw">static class="kw">final class Node {
@Nonnull
class="kw">final String token;
@Nonnull
class="kw">final String fullPath;
@Nullable
MacroCommandBuilder macro;
@Nonnull
class="kw">final Map<String, MacroCommandTreeBuilder.Node> children = new LinkedHashMap<>();
Node(@Nonnull String var1, @Nonnull String var2) {
this.token = var1;
this.fullPath = var2;
}
}
}