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