Int3ObjectMapCodec class

Пакет: com.hypixel.hytale.math.codec

Файл: com/hypixel/hytale/math/codec/Int3ObjectMapCodec.java

implements: Codec<Int3ObjectOpenHashMap<V>>, WrappedCodec<V>

Поля (15)

МодификаторыТипИмя
final Pattern KEY_PATTERN
int var10
int var11
int var12
int var13
BsonDocument var3
BsonDocument var3
Int3ObjectOpenHashMap var3
Int3ObjectOpenHashMap var4
int var4
int var5
int var6
String var7
BsonValue var8
int var9

Методы (8)

МодификаторыВозвратСигнатура
abstract throw new CodecExceptionthrow new CodecException("Failed to decode", var8, var2, var17)
abstract throw new CodecExceptionthrow new CodecException("Failed to decode", var1, var2, var11)
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Expected a key of the form x,y,z: " + var7)
public Int3ObjectOpenHashMap<V> decodeInt3ObjectOpenHashMap<V> decode(@Nonnull BsonValue var1, @Nonnull ExtraInfo var2)
public Int3ObjectOpenHashMap<V> decodeJsonInt3ObjectOpenHashMap<V> decodeJson(@Nonnull RawJsonReader var1, @Nonnull ExtraInfo var2)
if if(var9 < 0 || var10 < 0)
abstract this this(var1, Int3ObjectOpenHashMap::new)
while while(true)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.math.codec;

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.ExtraInfo;
class="kw">import com.hypixel.hytale.codec.WrappedCodec;
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.ObjectSchema;
class="kw">import com.hypixel.hytale.codec.schema.config.Schema;
class="kw">import com.hypixel.hytale.codec.schema.config.StringSchema;
class="kw">import com.hypixel.hytale.codec.util.RawJsonReader;
class="kw">import com.hypixel.hytale.math.data.Int3ObjectOpenHashMap;
class="kw">import java.io.IOException;
class="kw">import java.util.Map.Entry;
class="kw">import java.util.function.Supplier;
class="kw">import java.util.regex.Pattern;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.bson.BsonDocument;
class="kw">import org.bson.BsonValue;

class="kw">public class Int3ObjectMapCodec<V> class="kw">implements Codec<Int3ObjectOpenHashMap<V>>, WrappedCodec<V> {
   class="kw">private class="kw">static class="kw">final Pattern KEY_PATTERN = Pattern.compile("^-?[0-9]+,-?[0-9]+,-?[0-9]+$");
   class="kw">private class="kw">final Codec<V> valueCodec;
   class="kw">private class="kw">final Supplier<Int3ObjectOpenHashMap<V>> supplier;

   class="kw">public Int3ObjectMapCodec(@Nonnull Codec<V> var1) {
      this(var1, Int3ObjectOpenHashMap::new);
   }

   class="kw">public Int3ObjectMapCodec(@Nonnull Codec<V> var1, @Nonnull Supplier<Int3ObjectOpenHashMap<V>> var2) {
      this.valueCodec = var1;
      this.supplier = var2;
   }

   @Override
   class="kw">public Codec<V> getChildCodec() {
      class="kw">return this.valueCodec;
   }

   class="kw">public Int3ObjectOpenHashMap<V> decode(@Nonnull BsonValue var1, @Nonnull ExtraInfo var2) {
      BsonDocument var3 = var1.asDocument();
      Int3ObjectOpenHashMap var4 = this.supplier.get();

      for (Entry var6 : var3.entrySet()) {
         String var7 = var6.getKey();
         BsonValue var8 = var6.getValue();
         var2.pushKey(var7);

         try {
            int var9 = var7.indexOf(44);
            int var10 = var7.indexOf(44, var9 + 1);
            if (var9 < 0 || var10 < 0) {
               throw new IllegalArgumentException("Expected a key of the form x,y,z: " + var7);
            }

            int var11 = Integer.parseInt(var7, 0, var9, 10);
            int var12 = Integer.parseInt(var7, var9 + 1, var10, 10);
            int var13 = Integer.parseInt(var7, var10 + 1, var7.length(), 10);
            var4.put(var11, var12, var13, this.valueCodec.decode(var8, var2));
         } catch (Exception var17) {
            throw new CodecException("Failed to decode", var8, var2, var17);
         } class="kw">finally {
            var2.popKey();
         }
      }

      class="kw">return var4;
   }

   @Nonnull
   class="kw">public BsonValue encode(@Nonnull Int3ObjectOpenHashMap<V> var1, ExtraInfo var2) {
      BsonDocument var3 = new BsonDocument();
      var1.forEach((var3x, var4, var5, var6) -> var3.put(var3x + "," + var4 + "," + var5, this.valueCodec.encode((V)var6, var2)));
      class="kw">return var3;
   }

   class="kw">public Int3ObjectOpenHashMap<V> decodeJson(@Nonnull RawJsonReader var1, @Nonnull ExtraInfo var2) class="kw">throws IOException {
      var1.expect('{');
      var1.consumeWhiteSpace();
      Int3ObjectOpenHashMap var3 = this.supplier.get();
      if (var1.tryConsume('}')) {
         class="kw">return var3;
      }

      while (true) {
         var1.expect('"');
         int var4 = var1.readIntValue();
         var1.expect(',');
         int var5 = var1.readIntValue();
         var1.expect(',');
         int var6 = var1.readIntValue();
         var1.expect('"');
         var1.consumeWhiteSpace();
         var1.expect(':');
         var1.consumeWhiteSpace();
         var2.pushKey(var4 + "," + var5 + "," + var6, var1);

         try {
            var3.put(var4, var5, var6, this.valueCodec.decodeJson(var1, var2));
         } catch (Exception var11) {
            throw new CodecException("Failed to decode", var1, var2, var11);
         } class="kw">finally {
            var2.popKey();
         }

         var1.consumeWhiteSpace();
         if (var1.tryConsumeOrExpect('}', ',')) {
            class="kw">return var3;
         }

         var1.consumeWhiteSpace();
      }
   }

   @Nonnull
   @Override
   class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
      ObjectSchema var2 = new ObjectSchema();
      StringSchema var3 = new StringSchema();
      var3.setPattern(KEY_PATTERN);
      var3.setMarkdownDescription("A block position key of the form `x,y,z`");
      var2.setPropertyNames(var3);
      var2.setAdditionalProperties(var1.refDefinition(this.valueCodec));
      class="kw">return var2;
   }
}