ChangeStatBaseInteraction class
Пакет: com.hypixel.hytale.server.core.modules.interaction.interaction.config.server
Файл: com/hypixel/hytale/server/core/modules/interaction/interaction/config/server/ChangeStatBaseInteraction.java
extends: SimpleInstantInteraction
Поля (1)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
BuilderCodec<ChangeStatBaseInteraction> |
CODEC |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.interaction.interaction.config.server;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import com.hypixel.hytale.codec.codecs.map.Object2FloatMapCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.protocol.ChangeStatBehaviour;
class="kw">import com.hypixel.hytale.protocol.ValueType;
class="kw">import com.hypixel.hytale.server.core.codec.ProtocolCodecs;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatsModule;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.asset.EntityStatType;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.SimpleInstantInteraction;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.util.InteractionTarget;
class="kw">import it.unimi.dsi.fastutil.ints.Int2FloatMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2FloatMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2FloatOpenHashMap;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class="kw">abstract class ChangeStatBaseInteraction class="kw">extends SimpleInstantInteraction {
class="kw">public class="kw">static class="kw">final BuilderCodec<ChangeStatBaseInteraction> CODEC = BuilderCodec.abstractBuilder(
ChangeStatBaseInteraction.class, SimpleInstantInteraction.CODEC
)
.append(
new KeyedCodec<>("StatModifiers", new Object2FloatMapCodec<>(Codec.STRING, Object2FloatOpenHashMap::new), true),
(var0, var1) -> var0.entityStatAssets = var1,
var0 -> var0.entityStatAssets
)
.addValidator(Validators.nonNull())
.addValidator(Validators.nonEmptyMap())
.addValidator(EntityStatType.VALIDATOR_CACHE.getMapKeyValidator())
.documentation("Modifiers to apply to EntityStats.")
.add()
.<ValueType>append(new KeyedCodec<>("ValueType", new EnumCodec<>(ValueType.class)), (var0, var1) -> var0.valueType = var1, var0 -> var0.valueType)
.documentation(
"Enum to specify if the StatModifiers must be considered as absolute values or percent. Default value is Absolute. When using ValueType.Absolute, '100' matches the max value."
)
.add()
.<ChangeStatBehaviour>append(
new KeyedCodec<>("Behaviour", ProtocolCodecs.CHANGE_STAT_BEHAVIOUR_CODEC),
(var0, var1) -> var0.changeStatBehaviour = var1,
var0 -> var0.changeStatBehaviour
)
.documentation("Specifies how StatModifiers should be applied to the stats.")
.add()
.<InteractionTarget>appendInherited(
new KeyedCodec<>("Entity", InteractionTarget.CODEC),
(var0, var1) -> var0.entityTarget = var1,
var0 -> var0.entityTarget,
(var0, var1) -> var0.entityTarget = var1.entityTarget
)
.documentation("The entity to target for this interaction.")
.addValidator(Validators.nonNull())
.add()
.afterDecode(var0 -> var0.entityStats = EntityStatsModule.resolveEntityStats(var0.entityStatAssets))
.build();
class="kw">protected Object2FloatMap<String> entityStatAssets;
@Nullable
class="kw">protected Int2FloatMap entityStats;
class="kw">protected ValueType valueType = ValueType.Absolute;
class="kw">protected ChangeStatBehaviour changeStatBehaviour = ChangeStatBehaviour.Add;
class="kw">protected InteractionTarget entityTarget = InteractionTarget.USER;
class="kw">public ChangeStatBaseInteraction() {
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "ChangeStatBaseInteraction{unknownEntityStats="
+ this.entityStatAssets
+ ", entityStats="
+ this.entityStats
+ ", valueType="
+ this.valueType
+ ", changeStatBehaviour="
+ this.changeStatBehaviour
+ ", entityTarget="
+ this.entityTarget
+ "}";
}
}