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