classpublicPriority 3
SelfStatPercentageCondition
com.hypixel.hytale.server.npc.decisionmaker.core.conditions.SelfStatPercentageCondition
extends CurveCondition
1
Methods
1
Public Methods
2
Fields
1
Constructors
Constants
BuilderCodec<SelfStatPercentageCondition>CODEC= BuilderCodec.builder(
SelfStatPercentageCondition.class, SelfStatPercentageCondition::ne...
Constructors
protected
SelfStatPercentageCondition()Methods
Public Methods (1)
public
String toString()@Nonnull@Override
Fields
Protected Fields (2)
protected
String statprotected
int statIndexInheritance
Parent
Current
Interface
Child
Use mouse wheel to zoom, drag to pan. Click nodes to navigate.
Related Classes
Source Code
package com.hypixel.hytale.server.npc.decisionmaker.core.conditions;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.codec.validation.Validators;
import com.hypixel.hytale.component.ArchetypeChunk;
import com.hypixel.hytale.component.CommandBuffer;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap;
import com.hypixel.hytale.server.core.modules.entitystats.EntityStatsModule;
import com.hypixel.hytale.server.core.modules.entitystats.asset.EntityStatType;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.server.npc.decisionmaker.core.EvaluationContext;
import com.hypixel.hytale.server.npc.decisionmaker.core.conditions.base.CurveCondition;
import java.util.Objects;
import javax.annotation.Nonnull;
public class SelfStatPercentageCondition extends CurveCondition {
public static final BuilderCodec<SelfStatPercentageCondition> CODEC = BuilderCodec.builder(
SelfStatPercentageCondition.class, SelfStatPercentageCondition::new, CurveCondition.ABSTRACT_CODEC
)
.documentation("A curve condition that returns a utility value based on the percentage value of one of this NPC's stats.")
.<String>appendInherited(
new KeyedCodec<>("Stat", Codec.STRING),
(condition, s) -> condition.stat = s,
condition -> condition.stat,
(condition, parent) -> condition.stat = parent.stat
)
.addValidator(Validators.nonNull())
.addValidator(EntityStatType.VALIDATOR_CACHE.getValidator())
.documentation("The stat to check.")
.add()
.afterDecode(condition -> condition.statIndex = EntityStatType.getAssetMap().getIndex(condition.stat))
.build();
protected String stat;
protected int statIndex;
protected SelfStatPercentageCondition() {
}
@Override
protected double getNormalisedInput(
int selfIndex,
@Nonnull ArchetypeChunk<EntityStore> archetypeChunk,
Ref<EntityStore> target,
CommandBuffer<EntityStore> commandBuffer,
EvaluationContext context
) {
EntityStatMap entityStatMapComponent = archetypeChunk.getComponent(selfIndex, EntityStatsModule.get().getEntityStatMapComponentType());
assert entityStatMapComponent != null;
return (double)Objects.requireNonNull(entityStatMapComponent.get(this.statIndex)).asPercentage();
}
@Nonnull
@Override
public String toString() {
return "SelfStatPercentageCondition{stat='" + this.stat + "', statIndex=" + this.statIndex + "}" + super.toString();
}
}