StatsConditionBaseInteraction class
Пакет: com.hypixel.hytale.server.core.modules.interaction.interaction.config.none
Файл: com/hypixel/hytale/server/core/modules/interaction/interaction/config/none/StatsConditionBaseInteraction.java
extends: SimpleInstantInteraction
Поля (2)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Ref |
var4 |
|
CommandBuffer |
var5 |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract abstract |
boolean |
canAffordboolean canAfford(@Nonnull Ref<EntityStore> var1, @Nonnull ComponentAccessor<EntityStore> var2) |
protected |
boolean |
canOverdrawboolean canOverdraw(float var1, float var2) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.interaction.interaction.config.none;
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.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.protocol.InteractionState;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.protocol.ValueType;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
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.CooldownHandler;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.SimpleInstantInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
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 StatsConditionBaseInteraction class="kw">extends SimpleInstantInteraction {
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<StatsConditionBaseInteraction> CODEC = BuilderCodec.abstractBuilder(
StatsConditionBaseInteraction.class, SimpleInstantInteraction.CODEC
)
.appendInherited(
new KeyedCodec<>("Costs", new Object2FloatMapCodec<>(Codec.STRING, Object2FloatOpenHashMap::new)),
(var0, var1) -> var0.rawCosts = var1,
var0 -> var0.rawCosts,
(var0, var1) -> var0.rawCosts = var1.rawCosts
)
.addValidator(Validators.nonNull())
.addValidator(EntityStatType.VALIDATOR_CACHE.getMapKeyValidator())
.add()
.appendInherited(
new KeyedCodec<>("LessThan", Codec.BOOLEAN),
(var0, var1) -> var0.lessThan = var1,
var0 -> var0.lessThan,
(var0, var1) -> var0.lessThan = var1.lessThan
)
.add()
.<Boolean>appendInherited(
new KeyedCodec<>("Lenient", Codec.BOOLEAN), (var0, var1) -> var0.lenient = var1, var0 -> var0.lenient, (var0, var1) -> var0.lenient = var1.lenient
)
.documentation("Specifies that the interaction can run even if the stat cost is not met, providing that the value is greater than zero.")
.add()
.<ValueType>appendInherited(
new KeyedCodec<>("ValueType", new EnumCodec<>(ValueType.class)),
(var0, var1) -> var0.valueType = var1,
var0 -> var0.valueType,
(var0, var1) -> var0.valueType = var1.valueType
)
.documentation(
"Enum to specify if the Costs must be considered as absolute values or percent. Default value is Absolute. When using ValueType.Absolute, '100' matches the max value."
)
.add()
.afterDecode(var0 -> var0.costs = EntityStatsModule.resolveEntityStats(var0.rawCosts))
.build();
class="kw">protected Object2FloatMap<String> rawCosts;
@Nullable
class="kw">protected Int2FloatMap costs;
class="kw">protected boolean lessThan;
class="kw">protected boolean lenient;
class="kw">protected ValueType valueType = ValueType.Absolute;
class="kw">public StatsConditionBaseInteraction() {
}
@Override
class="kw">protected void firstRun(@Nonnull InteractionType var1, @Nonnull InteractionContext var2, @Nonnull CooldownHandler var3) {
Ref var4 = var2.getEntity();
CommandBuffer var5 = var2.getCommandBuffer();
if (!this.canAfford(var4, var5)) {
var2.getState().state = InteractionState.Failed;
}
}
class="kw">protected class="kw">abstract boolean canAfford(@Nonnull Ref<EntityStore> var1, @Nonnull ComponentAccessor<EntityStore> var2);
class="kw">protected boolean canOverdraw(float var1, float var2) {
class="kw">return this.lenient && var1 > 0.0F && var2 < 0.0F;
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "StatsConditionBaseInteraction{rawCosts="
+ this.rawCosts
+ ", costs="
+ this.costs
+ ", lessThan="
+ this.lessThan
+ ", lenient="
+ this.lenient
+ ", valueType="
+ this.valueType
+ "}"
+ super.toString();
}
}