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