TaggedValue class
Пакет: com.hypixel.hytale.builtin.triggervolumes.effect
Файл: com/hypixel/hytale/builtin/triggervolumes/effect/TriggerVolumeCodecs.java
Поля (1)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final String |
EMPTY |
Методы (1)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public static String |
normalizepublic static String normalize(@Nullable String var0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.triggervolumes.effect;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.ExtraInfo;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.codecs.map.MapCodec;
class="kw">import com.hypixel.hytale.codec.schema.SchemaContext;
class="kw">import com.hypixel.hytale.codec.schema.config.Schema;
class="kw">import com.hypixel.hytale.codec.util.RawJsonReader;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import java.io.IOException;
class="kw">import java.util.Arrays;
class="kw">import java.util.HashMap;
class="kw">import java.util.Map;
class="kw">import java.util.function.IntFunction;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.bson.BsonString;
class="kw">import org.bson.BsonValue;
class="kw">public class="kw">final class TriggerVolumeCodecs {
@Nonnull
class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
@Nonnull
class="kw">public class="kw">static class="kw">final ArrayCodec<TriggerEffect> TOLERANT_EFFECTS = tolerantArray("trigger effect", TriggerEffect.CODEC, TriggerEffect[]::new);
@Nonnull
class="kw">public class="kw">static class="kw">final ArrayCodec<TriggerCondition> TOLERANT_CONDITIONS = tolerantArray("trigger condition", TriggerCondition.CODEC, TriggerCondition[]::new);
@Nonnull
class="kw">public class="kw">static class="kw">final ArrayCodec<TriggerRule> TOLERANT_RULES = tolerantArray("trigger rule", TriggerRule.CODEC, TriggerRule[]::new);
@Nonnull
class="kw">public class="kw">static class="kw">final MapCodec<String, Map<String, String>> TAGS = new MapCodec<>(new TriggerVolumeCodecs.TagValueCodec(), HashMap::new, false);
class="kw">private TriggerVolumeCodecs() {
}
@Nonnull
class="kw">private class="kw">static <T> ArrayCodec<T> tolerantArray(@Nonnull class="kw">final String var0, @Nonnull Codec<T> var1, @Nonnull IntFunction<T[]> var2) {
class="kw">return new ArrayCodec<T>(var1, var2) {
@Nullable
@Override
class="kw">protected T decodeJsonElement(@Nonnull RawJsonReader var1, ExtraInfo var2x) class="kw">throws IOException {
class="kw">return (T)this.decodeElement(RawJsonReader.readBsonValue(var1), var2x);
}
@Nullable
@Override
class="kw">protected T decodeElement(@Nonnull BsonValue var1, ExtraInfo var2x) {
try {
class="kw">return (T)super.decodeElement(var1, var2x);
} catch (Exception var4) {
TriggerVolumeCodecs.LOGGER.at(Level.WARNING).log("Skipping unrecognized %s: %s", var0, var4.getMessage());
class="kw">return null;
}
}
};
}
class="kw">private class="kw">static class="kw">final class TagValueCodec class="kw">implements Codec<String> {
class="kw">private TagValueCodec() {
}
@Nonnull
class="kw">public String decode(@Nonnull BsonValue var1, ExtraInfo var2) {
class="kw">return var1.isArray()
? Arrays.stream(Codec.STRING_ARRAY.decode(var1, var2))
.filter(var0 -> var0 != null && !var0.isBlank())
.map(String::trim)
.filter(var0 -> !var0.isEmpty())
.findFirst()
.orElse("Empty")
: TriggerVolumeCodecs.TaggedValue.normalize(Codec.STRING.decode(var1, var2));
}
@Nonnull
class="kw">public BsonValue encode(@Nonnull String var1, ExtraInfo var2) {
class="kw">return new BsonString(TriggerVolumeCodecs.TaggedValue.normalize(var1));
}
@Nonnull
class="kw">public String decodeJson(@Nonnull RawJsonReader var1, ExtraInfo var2) class="kw">throws IOException {
class="kw">return this.decode(RawJsonReader.readBsonValue(var1), var2);
}
@Nonnull
@Override
class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
class="kw">return Codec.STRING.toSchema(var1);
}
}
class="kw">public class="kw">static class="kw">final class TaggedValue {
class="kw">public class="kw">static class="kw">final String EMPTY = "Empty";
class="kw">private TaggedValue() {
}
@Nonnull
class="kw">public class="kw">static String normalize(@Nullable String var0) {
class="kw">return var0 != null && !var0.isBlank() ? var0.trim() : "Empty";
}
}
}