WeightedMapCodec class
Пакет: com.hypixel.hytale.server.core.codec
Файл: com/hypixel/hytale/server/core/codec/WeightedMapCodec.java
implements: Codec<IWeightedMap<T>>, WrappedCodec<T>
Поля (10)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
Codec<T> |
codec |
|
ArraySchema |
var2 |
|
BsonArray |
var3 |
|
BsonArray |
var3 |
|
WeightedMap.Builder |
var3 |
|
WeightedMap.Builder |
var4 |
|
int |
var4 |
|
IWeightedElement |
var5 |
|
BsonValue |
var6 |
|
IWeightedElement |
var7 |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
CodecExceptionthrow new CodecException("Failed to decode", var6, var2, var11) |
abstract |
throw new |
CodecExceptionthrow new CodecException("Failed to decode", var1, var2, var9) |
public |
IWeightedMap<T> |
decodeIWeightedMap<T> decode(@Nonnull BsonValue var1, @Nonnull ExtraInfo var2) |
public |
IWeightedMap<T> |
decodeJsonIWeightedMap<T> decodeJson(@Nonnull RawJsonReader var1, @Nonnull ExtraInfo var2) |
abstract |
|
for for(int var5 = 0; var5 < var3.size() |
|
|
while while(true) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.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.ArraySchema;
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.common.map.IWeightedElement;
class="kw">import com.hypixel.hytale.common.map.IWeightedMap;
class="kw">import com.hypixel.hytale.common.map.WeightedMap;
class="kw">import java.io.IOException;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.bson.BsonArray;
class="kw">import org.bson.BsonValue;
class="kw">public class WeightedMapCodec<T class="kw">extends IWeightedElement> class="kw">implements Codec<IWeightedMap<T>>, WrappedCodec<T> {
class="kw">private class="kw">final Codec<T> codec;
class="kw">private class="kw">final T[] emptyKeys;
class="kw">public WeightedMapCodec(Codec<T> var1, T[] var2) {
this.codec = var1;
this.emptyKeys = var2;
}
@Override
class="kw">public Codec<T> getChildCodec() {
class="kw">return this.codec;
}
class="kw">public IWeightedMap<T> decode(@Nonnull BsonValue var1, @Nonnull ExtraInfo var2) {
BsonArray var3 = var1.asArray();
WeightedMap.Builder var4 = WeightedMap.builder(this.emptyKeys);
var4.ensureCapacity(var3.size());
for (int var5 = 0; var5 < var3.size(); var5++) {
BsonValue var6 = var3.get(var5);
var2.pushIntKey(var5);
try {
IWeightedElement var7 = this.codec.decode(var6, var2);
var4.put(var7, var7.getWeight());
} catch (Exception var11) {
throw new CodecException("Failed to decode", var6, var2, var11);
} class="kw">finally {
var2.popKey();
}
}
class="kw">return var4.build();
}
@Nonnull
class="kw">public BsonValue encode(@Nonnull IWeightedMap<T> var1, ExtraInfo var2) {
BsonArray var3 = new BsonArray();
var1.forEach(var3x -> var3.add(this.codec.encode(var3x, var2)));
class="kw">return var3;
}
class="kw">public IWeightedMap<T> decodeJson(@Nonnull RawJsonReader var1, @Nonnull ExtraInfo var2) class="kw">throws IOException {
var1.expect('[');
var1.consumeWhiteSpace();
WeightedMap.Builder var3 = WeightedMap.builder(this.emptyKeys);
if (var1.tryConsume(']')) {
class="kw">return var3.build();
}
int var4 = 0;
while (true) {
var2.pushIntKey(var4, var1);
try {
IWeightedElement var5 = this.codec.decodeJson(var1, var2);
var3.put(var5, var5.getWeight());
} catch (Exception var9) {
throw new CodecException("Failed to decode", var1, var2, var9);
} class="kw">finally {
var2.popKey();
}
var1.consumeWhiteSpace();
if (var1.tryConsumeOrExpect(']', ',')) {
class="kw">return var3.build();
}
var1.consumeWhiteSpace();
}
}
@Nonnull
@Override
class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
ArraySchema var2 = new ArraySchema();
var2.setTitle("WeightedMap");
var2.setItem(var1.refDefinition(this.codec));
class="kw">return var2;
}
}