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);
}