CommandListPageEventData class
Пакет: com.hypixel.hytale.server.core.command.system.pages
Файл: com/hypixel/hytale/server/core/command/system/pages/CommandListPage.java
Поля (13)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final BuilderCodec<CommandListPage.CommandListPageEventData> |
CODEC |
|
static final String |
KEY_COMMAND |
|
static final String |
KEY_NAVIGATE_UP |
|
static final String |
KEY_SEARCH_QUERY |
|
static final String |
KEY_SEND_TO_CHAT |
|
static final String |
KEY_SUBCOMMAND |
|
static final String |
KEY_VARIANT |
|
private String |
command |
|
private String |
navigateUp |
|
private String |
searchQuery |
|
private String |
sendToChat |
|
private String |
subcommand |
|
private String |
variantIndex |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.command.system.pages;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.CustomPageLifetime;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.CustomUIEventBindingType;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.OpenChatWithCommand;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.Page;
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.CommandManager;
class="kw">import com.hypixel.hytale.server.core.command.system.MatchResult;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
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.system.RequiredArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.types.ArgumentType;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.pages.InteractiveCustomUIPage;
class="kw">import com.hypixel.hytale.server.core.ui.Value;
class="kw">import com.hypixel.hytale.server.core.ui.builder.EventData;
class="kw">import com.hypixel.hytale.server.core.ui.builder.UICommandBuilder;
class="kw">import com.hypixel.hytale.server.core.ui.builder.UIEventBuilder;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectIterator;
class="kw">import java.lang.reflect.Field;
class="kw">import java.util.Collections;
class="kw">import java.util.Comparator;
class="kw">import java.util.HashSet;
class="kw">import java.util.List;
class="kw">import java.util.Locale;
class="kw">import java.util.Map;
class="kw">import java.util.Set;
class="kw">import java.util.Map.Entry;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class CommandListPage class="kw">extends InteractiveCustomUIPage<CommandListPage.CommandListPageEventData> {
class="kw">private class="kw">static class="kw">final Value<String> BUTTON_LABEL_STYLE = Value.ref("Pages/BasicTextButton.ui", "LabelStyle");
class="kw">private class="kw">static class="kw">final Value<String> BUTTON_LABEL_STYLE_SELECTED = Value.ref("Pages/BasicTextButton.ui", "SelectedLabelStyle");
class="kw">private class="kw">final List<String> visibleCommands = new ObjectArrayList();
@Nonnull
class="kw">private String searchQuery = "";
class="kw">private String selectedCommand;
@Nullable
class="kw">private String selectedSubcommand;
@Nullable
class="kw">private Integer selectedVariantIndex;
class="kw">private class="kw">final List<String> subcommandBreadcrumb = new ObjectArrayList();
@Nullable
class="kw">private class="kw">final String initialCommand;
class="kw">public CommandListPage(@Nonnull PlayerRef var1) {
this(var1, null);
}
class="kw">public CommandListPage(@Nonnull PlayerRef var1, @Nullable String var2) {
super(var1, CustomPageLifetime.CanDismiss, CommandListPage.CommandListPageEventData.CODEC);
this.initialCommand = var2;
}
@Override
class="kw">public void build(@Nonnull Ref<EntityStore> var1, @Nonnull UICommandBuilder var2, @Nonnull UIEventBuilder var3, @Nonnull Store<EntityStore> var4) {
var2.append("Pages/CommandListPage.ui");
var3.addEventBinding(CustomUIEventBindingType.ValueChanged, "#SearchInput", EventData.of("@SearchQuery", "#SearchInput.Value"), false);
var3.addEventBinding(CustomUIEventBindingType.Activating, "#BackButton", EventData.of("NavigateUp", "true"));
var3.addEventBinding(CustomUIEventBindingType.Activating, "#SendToChatButton", EventData.of("SendToChat", "true"));
this.buildCommandList(var1, var2, var3, var4);
String var5 = this.visibleCommands.getFirst();
if (this.initialCommand != null && this.visibleCommands.contains(this.initialCommand)) {
var5 = this.initialCommand;
}
this.selectCommand(var1, var5, var2, var3, var4);
}
class="kw">public void handleDataEvent(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull CommandListPage.CommandListPageEventData var3) {
if (var3.searchQuery != null) {
this.searchQuery = var3.searchQuery.trim().toLowerCase(Locale.ROOT);
UICommandBuilder var4 = new UICommandBuilder();
UIEventBuilder var5 = new UIEventBuilder();
this.buildCommandList(var1, var4, var5, var2);
this.sendUpdate(var4, var5, false);
} else if (var3.command != null) {
UICommandBuilder var8 = new UICommandBuilder();
UIEventBuilder var12 = new UIEventBuilder();
this.selectCommand(var1, var3.command, var8, var12, var2);
this.sendUpdate(var8, var12, false);
} else if (var3.navigateUp != null) {
UICommandBuilder var9 = new UICommandBuilder();
UIEventBuilder var13 = new UIEventBuilder();
this.navigateUp(var1, var9, var13, var2);
this.sendUpdate(var9, var13, false);
} else if (var3.subcommand != null) {
UICommandBuilder var10 = new UICommandBuilder();
UIEventBuilder var14 = new UIEventBuilder();
this.selectSubcommand(var1, var3.subcommand, var10, var14, var2);
this.sendUpdate(var10, var14, false);
} else if (var3.variantIndex != null) {
UICommandBuilder var11 = new UICommandBuilder();
UIEventBuilder var15 = new UIEventBuilder();
try {
int var6 = Integer.parseInt(var3.variantIndex);
this.selectVariant(var1, var6, var11, var15, var2);
this.sendUpdate(var11, var15, false);
} catch (NumberFormatException var7) {
}
} else if (var3.sendToChat != null) {
this.handleSendToChat(var1, var2);
}
}
class="kw">private void handleSendToChat(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2) {
Player var3 = var2.getComponent(var1, Player.getComponentType());
if (var3 != null) {
String var4 = this.buildCurrentCommandString();
var3.getPageManager().setPage(var1, var2, Page.None);
this.playerRef.getPacketHandler().write(new OpenChatWithCommand(var4));
}
}
@Nonnull
class="kw">private String buildCurrentCommandString() {
StringBuilder var1 = new StringBuilder("/");
var1.append(this.selectedCommand);
for (String var3 : this.subcommandBreadcrumb) {
var1.append(" ").append(var3);
}
AbstractCommand var6 = CommandManager.get().getCommandRegistration().get(this.selectedCommand);
if (var6 != null) {
for (String var4 : this.subcommandBreadcrumb) {
Map var5 = var6.getSubCommands();
var6 = var5.get(var4);
if (var6 == null) {
break;
}
}
if (var6 != null) {
for (RequiredArg var9 : var6.getRequiredArguments()) {
var1.append(" <").append(var9.getName()).append(">");
}
}
}
class="kw">return var1.toString();
}
class="kw">private void buildCommandList(
@Nonnull Ref<EntityStore> var1, @Nonnull UICommandBuilder var2, @Nonnull UIEventBuilder var3, @Nonnull ComponentAccessor<EntityStore> var4
) {
var2.clear("#CommandList");
Map var5 = new Object2ObjectOpenHashMap(CommandManager.get().getCommandRegistration());
PlayerRef var6 = var4.getComponent(var1, PlayerRef.getComponentType());
assert var6 != null;
var5.values().removeIf(var1x -> !var1x.hasPermission(var6));
if (this.searchQuery.isEmpty()) {
this.visibleCommands.clear();
this.visibleCommands.addAll(var5.keySet());
Collections.sort(this.visibleCommands);
} else {
ObjectArrayList var7 = new ObjectArrayList();
for (Entry var9 : var5.entrySet()) {
if (var9.getValue() != null) {
var7.add(new CommandListPage.SearchResult(var9.getKey(), MatchResult.EXACT));
}
}
String[] var16 = this.searchQuery.split(" ", 0);
for (int var18 = 0; var18 < var16.length; var18++) {
String var10 = var16[var18];
for (int var11 = var7.size() - 1; var11 >= 0; var11--) {
CommandListPage.SearchResult var12 = (CommandListPage.SearchResult)var7.get(var11);
AbstractCommand var13 = var5.get(var12.name);
MatchResult var14;
if (var13 != null) {
var14 = var13.matches(this.playerRef.getLanguage(), var10, var18);
} else {
var14 = MatchResult.NONE;
}
if (var14.equals(MatchResult.NONE)) {
var7.remove(var11);
} else {
var12.match = var12.match.min(var14);
}
}
}
var7.sort(CommandListPage.SearchResult.COMPARATOR);
this.visibleCommands.clear();
for (int var19 = 0; var19 < var7.size(); var19++) {
this.visibleCommands.add(((CommandListPage.SearchResult)var7.get(var19)).name);
}
}
for (int var15 = 0; var15 < this.visibleCommands.size(); var15++) {
String var17 = this.visibleCommands.get(var15);
var2.append("#CommandList", "Pages/BasicTextButton.ui");
var2.set("#CommandList[" + var15 + "].TextSpans", Message.raw(var17));
var3.addEventBinding(CustomUIEventBindingType.Activating, "#CommandList[" + var15 + "]", EventData.of("Command", var17));
if (var17.equals(this.selectedCommand)) {
var2.set("#CommandList[" + var15 + "].Style", BUTTON_LABEL_STYLE_SELECTED);
}
}
}
class="kw">private void selectCommand(
@Nonnull Ref<EntityStore> var1,
@Nonnull String var2,
@Nonnull UICommandBuilder var3,
@Nonnull UIEventBuilder var4,
@Nonnull ComponentAccessor<EntityStore> var5
) {
AbstractCommand var6 = CommandManager.get().getCommandRegistration().get(var2);
if (var6 == null) {
throw new IllegalArgumentException("Unknown command: " + var2);
}
var3.set("#CommandName.TextSpans", Message.raw(var2));
PlayerRef var7 = var5.getComponent(var1, PlayerRef.getComponentType());
this.selectedSubcommand = null;
this.selectedVariantIndex = null;
this.subcommandBreadcrumb.clear();
this.buildSubcommandTabs(var6, var7, var3, var4);
this.displayCommandInfo(var6, var7, var3, var4);
if (this.selectedCommand != null && this.visibleCommands.contains(this.selectedCommand)) {
var3.set("#CommandList[" + this.visibleCommands.indexOf(this.selectedCommand) + "].Style", BUTTON_LABEL_STYLE);
}
var3.set("#CommandList[" + this.visibleCommands.indexOf(var2) + "].Style", BUTTON_LABEL_STYLE_SELECTED);
this.selectedCommand = var2;
}
class="kw">private void selectSubcommand(
@Nonnull Ref<EntityStore> var1,
@Nonnull String var2,
@Nonnull UICommandBuilder var3,
@Nonnull UIEventBuilder var4,
@Nonnull ComponentAccessor<EntityStore> var5
) {
AbstractCommand var6 = CommandManager.get().getCommandRegistration().get(this.selectedCommand);
if (var6 != null) {
for (String var8 : this.subcommandBreadcrumb) {
Map var9 = var6.getSubCommands();
var6 = var9.get(var8);
if (var6 == null) {
class="kw">return;
}
}
PlayerRef var10 = var5.getComponent(var1, PlayerRef.getComponentType());
if (var10 != null) {
Map var11 = var6.getSubCommands();
AbstractCommand var12 = var11.get(var2);
if (var12 != null) {
this.subcommandBreadcrumb.add(var2);
this.selectedSubcommand = var2;
this.selectedVariantIndex = null;
this.updateTitleWithBreadcrumb(var3);
this.buildSubcommandTabs(var12, var10, var3, var4);
var3.set("#BackButton.Visible", true);
this.displayCommandInfo(var12, var10, var3, var4);
}
}
}
}
class="kw">private void selectVariant(
@Nonnull Ref<EntityStore> var1, int var2, @Nonnull UICommandBuilder var3, @Nonnull UIEventBuilder var4, @Nonnull ComponentAccessor<EntityStore> var5
) {
AbstractCommand var6 = CommandManager.get().getCommandRegistration().get(this.selectedCommand);
if (var6 != null) {
for (String var8 : this.subcommandBreadcrumb) {
Map var9 = var6.getSubCommands();
var6 = var9.get(var8);
if (var6 == null) {
class="kw">return;
}
}
PlayerRef var13 = var5.getComponent(var1, PlayerRef.getComponentType());
try {
Field var14 = AbstractCommand.class.getDeclaredField("variantCommands");
var14.setAccessible(true);
Int2ObjectMap var15 = (Int2ObjectMap<AbstractCommand>)var14.get(var6);
AbstractCommand var10 = (AbstractCommand)var15.get(var2);
if (var10 == null || !var10.hasPermission(var13)) {
class="kw">return;
}
this.selectedVariantIndex = var2;
this.updateTitleWithVariantSuffix(var3);
var3.set("#VariantsSection.Visible", false);
var3.set("#BackButton.Visible", true);
String var11 = var10.getDescription();
var3.set("#CommandDescription.TextSpans", var11 != null ? Message.translation(var11) : Message.empty());
var3.set("#CommandUsageLabel.TextSpans", this.getSimplifiedUsage(var10, var13));
this.buildParametersSection(var10, var13, var3);
this.buildArgumentTypesSection(var10, var13, var3);
} catch (Exception var12) {
}
}
}
class="kw">private void navigateUp(
@Nonnull Ref<EntityStore> var1, @Nonnull UICommandBuilder var2, @Nonnull UIEventBuilder var3, @Nonnull ComponentAccessor<EntityStore> var4
) {
if (this.selectedVariantIndex != null) {
this.selectedVariantIndex = null;
AbstractCommand var9 = CommandManager.get().getCommandRegistration().get(this.selectedCommand);
if (var9 != null) {
for (String var13 : this.subcommandBreadcrumb) {
Map var14 = var9.getSubCommands();
var9 = var14.get(var13);
if (var9 == null) {
class="kw">return;
}
}
PlayerRef var12 = var4.getComponent(var1, PlayerRef.getComponentType());
this.updateTitleWithBreadcrumb(var2);
this.displayCommandInfo(var9, var12, var2, var3);
var2.set("#BackButton.Visible", !this.subcommandBreadcrumb.isEmpty());
}
} else if (!this.subcommandBreadcrumb.isEmpty()) {
this.subcommandBreadcrumb.remove(this.subcommandBreadcrumb.size() - 1);
AbstractCommand var5 = CommandManager.get().getCommandRegistration().get(this.selectedCommand);
if (var5 != null) {
for (String var7 : this.subcommandBreadcrumb) {
Map var8 = var5.getSubCommands();
var5 = var8.get(var7);
if (var5 == null) {
class="kw">return;
}
}
PlayerRef var10 = var4.getComponent(var1, PlayerRef.getComponentType());
this.selectedSubcommand = this.subcommandBreadcrumb.isEmpty() ? null : this.subcommandBreadcrumb.get(this.subcommandBreadcrumb.size() - 1);
this.updateTitleWithBreadcrumb(var2);
this.buildSubcommandTabs(var5, var10, var2, var3);
this.displayCommandInfo(var5, var10, var2, var3);
}
}
}
class="kw">private void buildSubcommandTabs(@Nonnull AbstractCommand var1, @Nonnull PlayerRef var2, @Nonnull UICommandBuilder var3, @Nonnull UIEventBuilder var4) {
var3.clear("#SubcommandCards");
Map var5 = var1.getSubCommands();
if (var5.isEmpty()) {
var3.set("#SubcommandSection.Visible", false);
} else {
var3.set("#SubcommandSection.Visible", true);
int var6 = 0;
int var7 = 0;
int var8 = 0;
for (Entry var10 : var5.entrySet()) {
AbstractCommand var11 = var10.getValue();
if (var11.hasPermission(var2)) {
if (var8 == 0) {
var3.appendInline("#SubcommandCards", "Group { LayoutMode: Left; Anchor: (Bottom: 0); }");
}
var3.append("#SubcommandCards[" + var7 + "]", "Pages/SubcommandCard.ui");
String var12 = var11.getDescription();
var3.set("#SubcommandCards[" + var7 + "][" + var8 + "] #SubcommandName.TextSpans", Message.raw(var10.getKey()));
var3.set("#SubcommandCards[" + var7 + "][" + var8 + "] #SubcommandUsage.TextSpans", this.getSimplifiedUsage(var11, var2));
var3.set(
"#SubcommandCards[" + var7 + "][" + var8 + "] #SubcommandDescription.TextSpans", var12 != null ? Message.translation(var12) : Message.empty()
);
var4.addEventBinding(
CustomUIEventBindingType.Activating, "#SubcommandCards[" + var7 + "][" + var8 + "]", EventData.of("Subcommand", var10.getKey())
);
var8++;
var6++;
if (var8 >= 3) {
var8 = 0;
var7++;
}
}
}
}
var3.set("#BackButton.Visible", !this.subcommandBreadcrumb.isEmpty());
}
class="kw">private void updateTitleWithBreadcrumb(@Nonnull UICommandBuilder var1) {
StringBuilder var2 = new StringBuilder(this.selectedCommand);
for (String var4 : this.subcommandBreadcrumb) {
var2.append(" > ").append(var4);
}
var1.set("#CommandName.TextSpans", Message.raw(var2.toString()));
}
class="kw">private void updateTitleWithVariantSuffix(@Nonnull UICommandBuilder var1) {
StringBuilder var2 = new StringBuilder(this.selectedCommand);
for (String var4 : this.subcommandBreadcrumb) {
var2.append(" > ").append(var4);
}
var1.set("#CommandName.TextSpans", Message.raw(var2.toString()).insert(" ").insert(Message.translation("server.customUI.commandListPage.variantSuffix")));
}
class="kw">private void buildAliasesSection(@Nonnull AbstractCommand var1, @Nonnull UICommandBuilder var2) {
Set var3 = var1.getAliases();
if (var3 != null && !var3.isEmpty()) {
var2.set("#AliasesSection.Visible", true);
var2.set("#AliasesList.TextSpans", Message.raw(String.join(", ", var3)));
} else {
var2.set("#AliasesSection.Visible", false);
}
}
class="kw">private void buildPermissionSection(@Nonnull AbstractCommand var1, @Nonnull UICommandBuilder var2) {
String var3 = var1.getPermission();
if (var3 != null && !var3.isEmpty()) {
var2.set("#PermissionSection.Visible", true);
var2.set("#PermissionLabel.TextSpans", Message.raw(var3));
} else {
var2.set("#PermissionSection.Visible", false);
}
}
class="kw">private void buildVariantsSection(@Nonnull AbstractCommand var1, @Nonnull PlayerRef var2, @Nonnull UICommandBuilder var3, @Nonnull UIEventBuilder var4) {
var3.clear("#VariantsList");
try {
Field var5 = AbstractCommand.class.getDeclaredField("variantCommands");
var5.setAccessible(true);
Int2ObjectMap var6 = (Int2ObjectMap<AbstractCommand>)var5.get(var1);
if (var6.isEmpty()) {
var3.set("#VariantsSection.Visible", false);
class="kw">return;
}
var3.set("#VariantsSection.Visible", true);
int var7 = 0;
ObjectIterator var8 = var6.int2ObjectEntrySet().iterator();
while (var8.hasNext()) {
it.unimi.dsi.fastutil.ints.Int2ObjectMap.Entry var9 = (it.unimi.dsi.fastutil.ints.Int2ObjectMap.Entry<AbstractCommand>)var8.next();
AbstractCommand var10 = (AbstractCommand)var9.getValue();
int var11 = var9.getIntKey();
if (var10.hasPermission(var2)) {
var3.append("#VariantsList", "Pages/VariantCard.ui");
var3.set("#VariantsList[" + var7 + "] #VariantUsage.TextSpans", this.getSimplifiedUsage(var10, var2));
var4.addEventBinding(CustomUIEventBindingType.Activating, "#VariantsList[" + var7 + "]", EventData.of("Variant", String.valueOf(var11)));
var7++;
}
}
if (var7 == 0) {
var3.set("#VariantsSection.Visible", false);
}
} catch (Exception var12) {
var3.set("#VariantsSection.Visible", false);
}
}
class="kw">private void displayCommandInfo(@Nonnull AbstractCommand var1, @Nonnull PlayerRef var2, @Nonnull UICommandBuilder var3, @Nonnull UIEventBuilder var4) {
String var5 = var1.getDescription();
var3.set("#CommandDescription.TextSpans", var5 != null ? Message.translation(var5) : Message.empty());
this.buildVariantsSection(var1, var2, var3, var4);
this.buildAliasesSection(var1, var3);
this.buildPermissionSection(var1, var3);
var3.set("#CommandUsageLabel.TextSpans", this.getSimplifiedUsage(var1, var2));
this.buildParametersSection(var1, var2, var3);
this.buildArgumentTypesSection(var1, var2, var3);
}
class="kw">private Message getSimplifiedUsage(@Nonnull AbstractCommand var1, @Nonnull PlayerRef var2) {
Message var3 = Message.raw("/").insert(var1.getFullyQualifiedName());
try {
Field var4 = AbstractCommand.class.getDeclaredField("requiredArguments");
var4.setAccessible(true);
for (RequiredArg var7 : (List)var4.get(var1)) {
var3.insert(" <").insert(Message.translation(var7.getName())).insert(">");
}
} catch (Exception var9) {
}
try {
Field var10 = AbstractCommand.class.getDeclaredField("optionalArguments");
var10.setAccessible(true);
Map var11 = (Map<String, ?>)var10.get(var1);
if (!var11.isEmpty()) {
var3.insert(" [").insert(Message.translation("server.customUI.commandListPage.optionsIndicator")).insert("]");
}
} catch (Exception var8) {
}
class="kw">return var3;
}
class="kw">private void buildParametersSection(@Nonnull AbstractCommand var1, @Nonnull PlayerRef var2, @Nonnull UICommandBuilder var3) {
var3.clear("#RequiredArgumentsList");
var3.clear("#OptionalArgumentsList");
var3.clear("#DefaultArgumentsList");
var3.clear("#FlagArgumentsList");
boolean var4 = false;
try {
Field var5 = AbstractCommand.class.getDeclaredField("requiredArguments");
var5.setAccessible(true);
List var6 = (List<RequiredArg<?>>)var5.get(var1);
if (!var6.isEmpty()) {
var4 = true;
for (int var7 = 0; var7 < var6.size(); var7++) {
RequiredArg var8 = var6.get(var7);
var3.append("#RequiredArgumentsList", "Pages/ParameterItem.ui");
var3.set("#RequiredArgumentsList[" + var7 + "] #ParamName.TextSpans", Message.raw(var8.getName()));
var3.set("#RequiredArgumentsList[" + var7 + "] #ParamTag.TextSpans", Message.translation("server.customUI.commandListPage.required"));
var3.set(
"#RequiredArgumentsList[" + var7 + "] #ParamType.TextSpans",
Message.translation("server.customUI.commandListPage.paramType").param("type", var8.getArgumentType().getName())
);
var3.set(
"#RequiredArgumentsList[" + var7 + "] #ParamDescription.TextSpans",
var8.getDescription() != null
? Message.translation(var8.getDescription())
: Message.translation("server.customUI.commandListPage.noDescription")
);
}
}
} catch (Exception var17) {
}
try {
Field var18 = AbstractCommand.class.getDeclaredField("optionalArguments");
var18.setAccessible(true);
Map var19 = (Map<String, ?>)var18.get(var1);
if (!var19.isEmpty()) {
var4 = true;
}
int var20 = 0;
int var21 = 0;
int var9 = 0;
for (Entry var11 : var19.entrySet()) {
Object var12 = var11.getValue();
if (var12 class="kw">instanceof OptionalArg var13) {
if (var13.hasPermission(var2)) {
var3.append("#OptionalArgumentsList", "Pages/ParameterItem.ui");
var3.set("#OptionalArgumentsList[" + var20 + "] #ParamName.TextSpans", Message.raw("--" + var13.getName() + " <" + var13.getName() + ">"));
var3.set("#OptionalArgumentsList[" + var20 + "] #ParamTag.TextSpans", Message.translation("server.customUI.commandListPage.optional"));
var3.set(
"#OptionalArgumentsList[" + var20 + "] #ParamType.TextSpans",
Message.translation("server.customUI.commandListPage.paramType").param("type", var13.getArgumentType().getName())
);
var3.set(
"#OptionalArgumentsList[" + var20 + "] #ParamDescription.TextSpans",
var13.getDescription() != null
? Message.translation(var13.getDescription())
: Message.translation("server.customUI.commandListPage.noDescription")
);
var20++;
}
} else if (var12 class="kw">instanceof DefaultArg var14) {
if (var14.hasPermission(var2)) {
var3.append("#DefaultArgumentsList", "Pages/ParameterItem.ui");
var3.set("#DefaultArgumentsList[" + var21 + "] #ParamName.TextSpans", Message.raw("--" + var14.getName() + " <" + var14.getName() + ">"));
var3.set("#DefaultArgumentsList[" + var21 + "] #ParamTag.TextSpans", Message.translation("server.customUI.commandListPage.class="kw">default"));
var3.set(
"#DefaultArgumentsList[" + var21 + "] #ParamType.TextSpans",
Message.translation("server.customUI.commandListPage.paramTypeDefault")
.param("type", var14.getArgumentType().getName())
.param("class="kw">default", Message.translation(var14.getDefaultValueDescription()))
);
var3.set(
"#DefaultArgumentsList[" + var21 + "] #ParamDescription.TextSpans",
var14.getDescription() != null
? Message.translation(var14.getDescription())
: Message.translation("server.customUI.commandListPage.noDescription")
);
var21++;
}
} else if (var12 class="kw">instanceof FlagArg var15 && var15.hasPermission(var2)) {
var3.append("#FlagArgumentsList", "Pages/ParameterItem.ui");
var3.set("#FlagArgumentsList[" + var9 + "] #ParamName.TextSpans", Message.raw("--" + var15.getName()));
var3.set("#FlagArgumentsList[" + var9 + "] #ParamTag.TextSpans", Message.translation("server.customUI.commandListPage.flag"));
var3.set("#FlagArgumentsList[" + var9 + "] #ParamType.TextSpans", Message.translation("server.customUI.commandListPage.paramTypeFlag"));
var3.set(
"#FlagArgumentsList[" + var9 + "] #ParamDescription.TextSpans",
var15.getDescription() != null
? Message.translation(var15.getDescription())
: Message.translation("server.customUI.commandListPage.noDescription")
);
var9++;
}
}
} catch (Exception var16) {
}
var3.set("#ParametersSection.Visible", var4);
}
class="kw">private void buildArgumentTypesSection(@Nonnull AbstractCommand var1, @Nonnull PlayerRef var2, @Nonnull UICommandBuilder var3) {
var3.clear("#ArgumentTypesList");
HashSet var4 = new HashSet<>();
try {
Field var5 = AbstractCommand.class.getDeclaredField("requiredArguments");
var5.setAccessible(true);
for (RequiredArg var8 : (List)var5.get(var1)) {
var4.add(var8.getArgumentType());
}
Field var14 = AbstractCommand.class.getDeclaredField("optionalArguments");
var14.setAccessible(true);
Map var16 = (Map<String, ?>)var14.get(var1);
for (Object var10 : var16.values()) {
if (var10 class="kw">instanceof OptionalArg) {
var4.add(((OptionalArg)var10).getArgumentType());
} else if (var10 class="kw">instanceof DefaultArg) {
var4.add(((DefaultArg)var10).getArgumentType());
}
}
} catch (Exception var11) {
}
if (var4.isEmpty()) {
var3.set("#ArgumentTypesSection.Visible", false);
} else {
var3.set("#ArgumentTypesSection.Visible", true);
int var12 = 0;
for (ArgumentType var15 : var4) {
var3.append("#ArgumentTypesList", "Pages/ArgumentTypeItem.ui");
var3.set("#ArgumentTypesList[" + var12 + "] #TypeName.TextSpans", var15.getName());
var3.set("#ArgumentTypesList[" + var12 + "] #TypeDescription.TextSpans", var15.getArgumentUsage());
String[] var17 = var15.getExamples();
if (var17 != null && var17.length > 0) {
var3.set(
"#ArgumentTypesList[" + var12 + "] #TypeExamples.TextSpans",
Message.translation("server.customUI.commandListPage.examples").param("examples", String.join("', '", var17))
);
} else {
var3.set("#ArgumentTypesList[" + var12 + "] #TypeExamples.Visible", false);
}
var12++;
}
}
}
class="kw">public class="kw">static class CommandListPageEventData {
class="kw">static class="kw">final String KEY_COMMAND = "Command";
class="kw">static class="kw">final String KEY_SUBCOMMAND = "Subcommand";
class="kw">static class="kw">final String KEY_SEARCH_QUERY = "@SearchQuery";
class="kw">static class="kw">final String KEY_NAVIGATE_UP = "NavigateUp";
class="kw">static class="kw">final String KEY_VARIANT = "Variant";
class="kw">static class="kw">final String KEY_SEND_TO_CHAT = "SendToChat";
class="kw">public class="kw">static class="kw">final BuilderCodec<CommandListPage.CommandListPageEventData> CODEC = BuilderCodec.builder(
CommandListPage.CommandListPageEventData.class, CommandListPage.CommandListPageEventData::new
)
.addField(new KeyedCodec<>("Command", Codec.STRING), (var0, var1) -> var0.command = var1, var0 -> var0.command)
.addField(new KeyedCodec<>("Subcommand", Codec.STRING), (var0, var1) -> var0.subcommand = var1, var0 -> var0.subcommand)
.addField(new KeyedCodec<>("@SearchQuery", Codec.STRING), (var0, var1) -> var0.searchQuery = var1, var0 -> var0.searchQuery)
.addField(new KeyedCodec<>("NavigateUp", Codec.STRING), (var0, var1) -> var0.navigateUp = var1, var0 -> var0.navigateUp)
.addField(new KeyedCodec<>("Variant", Codec.STRING), (var0, var1) -> var0.variantIndex = var1, var0 -> var0.variantIndex)
.addField(new KeyedCodec<>("SendToChat", Codec.STRING), (var0, var1) -> var0.sendToChat = var1, var0 -> var0.sendToChat)
.build();
class="kw">private String command;
class="kw">private String subcommand;
class="kw">private String searchQuery;
class="kw">private String navigateUp;
class="kw">private String variantIndex;
class="kw">private String sendToChat;
class="kw">public CommandListPageEventData() {
}
}
class="kw">private class="kw">static class SearchResult {
class="kw">public class="kw">static class="kw">final Comparator<CommandListPage.SearchResult> COMPARATOR = Comparator.comparing(var0 -> var0.match);
class="kw">private class="kw">final String name;
class="kw">private MatchResult match;
class="kw">public SearchResult(String var1, MatchResult var2) {
this.name = var1;
this.match = var2;
}
}
}