CodecKeyArgumentType class

Пакет: com.hypixel.hytale.server.core.command.system.arguments.types

Файл: com/hypixel/hytale/server/core/command/system/arguments/types/CodecKeyArgumentType.java

extends: SingleArgumentType<String>

Поля (3)

МодификаторыТипИмя
Set var1
ObjectArrayList var2
String var5

Методы (3)

МодификаторыВозвратСигнатура
private Collection<String> candidateKeysCollection<String> candidateKeys()
for for(String var7 : this.additionalKeys)
abstract super super(var1, var2)

Исходный код

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

class="kw">import com.hypixel.hytale.codec.lookup.StringCodecMapCodec;
class="kw">import com.hypixel.hytale.common.util.StringUtil;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandSender;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandUtil;
class="kw">import com.hypixel.hytale.server.core.command.system.ParseResult;
class="kw">import com.hypixel.hytale.server.core.command.system.suggestion.SuggestionResult;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.Collection;
class="kw">import java.util.Locale;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class CodecKeyArgumentType class="kw">extends SingleArgumentType<String> {
   class="kw">private class="kw">final StringCodecMapCodec<?, ?> mapCodec;
   class="kw">private class="kw">final Set<String> additionalKeys;

   class="kw">public CodecKeyArgumentType(String var1, String var2, StringCodecMapCodec<?, ?> var3) {
      this(var1, var2, var3, Set.of());
   }

   class="kw">public CodecKeyArgumentType(String var1, String var2, StringCodecMapCodec<?, ?> var3, Set<String> var4) {
      super(var1, var2);
      this.mapCodec = var3;
      this.additionalKeys = var4;
   }

   @Nullable
   class="kw">public String parse(String var1, ParseResult var2) {
      if (this.mapCodec.getCodecFor(var1) == null && !this.additionalKeys.contains(var1)) {
         var2.fail(
            Message.empty()
               .insert(Message.translation("server.commands.errors.noSuchCodecKey").param("type", this.getName()).param("key", var1))
               .insert(Message.raw(" "))
               .insert(
                  Message.translation("server.general.failed.didYouMean")
                     .param(
                        "choices", StringUtil.sortByFuzzyDistance(var1.toLowerCase(Locale.ROOT), this.candidateKeys(), CommandUtil.RECOMMEND_COUNT).toString()
                     )
               )
         );
         class="kw">return null;
      } else {
         class="kw">return var1;
      }
   }

   @Override
   class="kw">public void suggest(@Nonnull CommandSender var1, @Nonnull String var2, int var3, @Nonnull SuggestionResult var4) {
      String var5 = var2.toLowerCase(Locale.ROOT);

      for (String var7 : this.additionalKeys) {
         if (var7.toLowerCase(Locale.ROOT).startsWith(var5)) {
            var4.suggest(var7);
         }
      }

      for (String var9 : this.mapCodec.getRegisteredIds()) {
         if (var9.toLowerCase(Locale.ROOT).startsWith(var5)) {
            var4.suggest(var9);
         }
      }
   }

   @Override
   class="kw">public int getSuggestionValueCount() {
      class="kw">return this.mapCodec.getRegisteredIds().size() + this.additionalKeys.size();
   }

   class="kw">private Collection<String> candidateKeys() {
      Set var1 = this.mapCodec.getRegisteredIds();
      if (this.additionalKeys.isEmpty()) {
         class="kw">return var1;
      }

      ObjectArrayList var2 = new ObjectArrayList(var1.size() + this.additionalKeys.size());
      var2.addAll(var1);
      var2.addAll(this.additionalKeys);
      class="kw">return var2;
   }
}