MultiArgumentType class

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

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

extends: ArgumentType<DataType>

Поля (4)

МодификаторыТипИмя
var1
MultiArgumentContext var3
WrappedArgumentType var4
int var4

Методы (2)

МодификаторыВозвратСигнатура
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Cannot register two MultiArgumentType parameters with the same name")
abstract super super(var1, var2, 0, var3)

Исходный код

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

class="kw">import com.hypixel.hytale.server.core.command.system.ParseResult;
class="kw">import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap;
class="kw">import java.util.Arrays;
class="kw">import java.util.Locale;
class="kw">import java.util.Map;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class="kw">abstract class MultiArgumentType<DataType> class="kw">extends ArgumentType<DataType> {
   @Nonnull
   class="kw">private class="kw">final Map<String, SingleArgumentType<?>> argumentValues = new Object2ObjectLinkedOpenHashMap();

   class="kw">public MultiArgumentType(@Nonnull String var1, @Nonnull String var2, @Nullable String... var3) {
      super(var1, var2, 0, var3);
   }

   @Nonnull
   class="kw">protected <D> WrappedArgumentType<D> withParameter(@Nonnull String var1, @Nonnull String var2, @Nonnull SingleArgumentType<D> var3) {
      WrappedArgumentType var4 = var3.withOverriddenUsage(var2);
      var1 = var1.toLowerCase(Locale.ROOT);
      if (this.argumentValues.containsKey(var1)) {
         throw new IllegalArgumentException("Cannot register two MultiArgumentType parameters with the same name");
      }

      this.argumentValues.put(var1, var4);
      this.numberOfParameters = this.argumentValues.size();
      class="kw">return var4;
   }

   @Nullable
   @Override
   class="kw">public DataType parse(@Nonnull String[] var1, @Nonnull ParseResult var2) {
      MultiArgumentContext var3 = new MultiArgumentContext();
      int var4 = 0;

      for (SingleArgumentType var6 : this.argumentValues.values()) {
         var3.registerArgumentValues(var6, Arrays.copyOfRange(var1, var4, var4 + var6.numberOfParameters), var2);
         if (var2.failed()) {
            class="kw">return null;
         }

         var4 += var6.numberOfParameters;
      }

      class="kw">return this.parse(var3, var2);
   }

   @Nullable
   class="kw">public class="kw">abstract DataType parse(@Nonnull MultiArgumentContext var1, @Nonnull ParseResult var2);
}