TriggerVolumeCodecs class

Пакет: com.hypixel.hytale.builtin.triggervolumes.effect

Файл: com/hypixel/hytale/builtin/triggervolumes/effect/TriggerVolumeCodecs.java

Поля (1)

МодификаторыТипИмя
public static final String EMPTY

Методы (9)

МодификаторыВозвратСигнатура
private TagValueCodecprivate TagValueCodec()
private TaggedValueprivate TaggedValue()
public String decodepublic String decode(@Nonnull BsonValue var1, ExtraInfo var2)
protected T decodeElementprotected T decodeElement(@Nonnull BsonValue var1, ExtraInfo var2x)
public String decodeJsonpublic String decodeJson(@Nonnull RawJsonReader var1, ExtraInfo var2)
protected T decodeJsonElementprotected T decodeJsonElement(@Nonnull RawJsonReader var1, ExtraInfo var2x)
public BsonValue encodepublic BsonValue encode(@Nonnull String var1, ExtraInfo var2)
public static String normalizepublic static String normalize(@Nullable String var0)
public Schema toSchemapublic Schema toSchema(@Nonnull SchemaContext var1)

Исходный код

Показать/скрыть
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";
      }
   }
}