InteractionPriorityCodec class

Пакет: com.hypixel.hytale.server.core.modules.interaction.interaction.config

Файл: com/hypixel/hytale/server/core/modules/interaction/interaction/config/InteractionPriorityCodec.java

implements: Codec<InteractionPriority>

Поля (4)

МодификаторыТипИмя
final EnumMapCodec<PrioritySlot, Integer> MAP_CODEC
Schema var2
Map var3
int var3

Методы (2)

МодификаторыВозвратСигнатура
abstract return new BsonInt32return new BsonInt32(0)
if if(var3 == 123)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.interaction.interaction.config;

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.ExtraInfo;
class="kw">import com.hypixel.hytale.codec.codecs.map.EnumMapCodec;
class="kw">import com.hypixel.hytale.codec.exception.CodecException;
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.protocol.PrioritySlot;
class="kw">import java.io.IOException;
class="kw">import java.util.EnumMap;
class="kw">import java.util.Map;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.bson.BsonInt32;
class="kw">import org.bson.BsonValue;

class="kw">public class InteractionPriorityCodec class="kw">implements Codec<InteractionPriority> {
   class="kw">private class="kw">static class="kw">final EnumMapCodec<PrioritySlot, Integer> MAP_CODEC = new EnumMapCodec<>(
      PrioritySlot.class, Codec.INTEGER, () -> new EnumMap<>(PrioritySlot.class), false
   );

   class="kw">public InteractionPriorityCodec() {
   }

   @Nonnull
   class="kw">public InteractionPriority decode(@Nonnull BsonValue var1, ExtraInfo var2) {
      if (var1.isInt32()) {
         class="kw">return new InteractionPriority(var1.asInt32().getValue());
      } else if (var1.isDocument()) {
         class="kw">return new InteractionPriority(MAP_CODEC.decode(var1, var2));
      } else {
         throw new CodecException("Expected integer or object for InteractionPriority, got: " + var1.getBsonType());
      }
   }

   @Nonnull
   class="kw">public BsonValue encode(@Nonnull InteractionPriority var1, ExtraInfo var2) {
      Map var3 = var1.values();
      if (var3 != null && !var3.isEmpty()) {
         class="kw">return (BsonValue)(var3.size() == 1 && var3.containsKey(PrioritySlot.Default)
            ? new BsonInt32(var3.get(PrioritySlot.Default))
            : MAP_CODEC.encode(var3, var2));
      } else {
         class="kw">return new BsonInt32(0);
      }
   }

   @Nonnull
   class="kw">public InteractionPriority decodeJson(@Nonnull RawJsonReader var1, ExtraInfo var2) class="kw">throws IOException {
      var1.consumeWhiteSpace();
      int var3 = var1.peek();
      if (var3 == 123) {
         class="kw">return new InteractionPriority(MAP_CODEC.decodeJson(var1, var2));
      } else if (var3 != 45 && !Character.isDigit(var3)) {
         throw new CodecException("Expected integer or object for InteractionPriority, got: " + (char)var3, var1, var2, null);
      } else {
         class="kw">return new InteractionPriority(var1.readIntValue());
      }
   }

   @Nonnull
   @Override
   class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
      Schema var2 = MAP_CODEC.toSchema(var1);
      var2.setTitle("InteractionPriority");
      var2.setDescription("Either an integer (class="kw">default for all types) or an object with named priorities (e.g., 'MainHand', 'OffHand', 'Default').");
      class="kw">return var2;
   }
}