hytale-server/com/hypixel/hytale/builtin/npccombatactionevaluator/config/CombatBalanceAsset.java

50 lines
2.2 KiB
Java

package com.hypixel.hytale.builtin.npccombatactionevaluator.config;
import com.hypixel.hytale.builtin.npccombatactionevaluator.evaluator.CombatActionEvaluatorConfig;
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.server.npc.config.balancing.BalanceAsset;
import javax.annotation.Nonnull;
public class CombatBalanceAsset extends BalanceAsset {
public static final BuilderCodec<CombatBalanceAsset> CODEC = BuilderCodec.builder(CombatBalanceAsset.class, CombatBalanceAsset::new, ABSTRACT_CODEC)
.documentation("A balance asset which also configures a combat action evaluator.")
.<Float>appendInherited(
new KeyedCodec<>("TargetMemoryDuration", Codec.FLOAT),
(balanceAsset, f) -> balanceAsset.targetMemoryDuration = f,
balanceAsset -> balanceAsset.targetMemoryDuration,
(balanceAsset, parent) -> balanceAsset.targetMemoryDuration = parent.targetMemoryDuration
)
.documentation("How long the target should remain in the NPCs list of potential targets after last being spotted")
.addValidator(Validators.greaterThan(0.0F))
.add()
.<CombatActionEvaluatorConfig>appendInherited(
new KeyedCodec<>("CombatActionEvaluator", CombatActionEvaluatorConfig.CODEC),
(balanceAsset, o) -> balanceAsset.evaluatorConfig = o,
balanceAsset -> balanceAsset.evaluatorConfig,
(balanceAsset, parent) -> balanceAsset.targetMemoryDuration = parent.targetMemoryDuration
)
.addValidator(Validators.nonNull())
.documentation("The combat action evaluator complete with combat action definitions and conditions.")
.add()
.build();
protected float targetMemoryDuration = 15.0F;
protected CombatActionEvaluatorConfig evaluatorConfig;
public float getTargetMemoryDuration() {
return this.targetMemoryDuration;
}
public CombatActionEvaluatorConfig getEvaluatorConfig() {
return this.evaluatorConfig;
}
@Nonnull
@Override
public String toString() {
return "CombatBalanceAsset{TargetMemoryDuration='" + this.targetMemoryDuration + "'}";
}
}