HyCodeYourTale
classpublicPriority 3

RandomiserCondition

com.hypixel.hytale.server.npc.decisionmaker.core.conditions.RandomiserCondition

extends Condition

1

Methods

1

Public Methods

2

Fields

1

Constructors

Constants

BuilderCodec<RandomiserCondition>CODEC= BuilderCodec.builder(RandomiserCondition.class, RandomiserCondition::new, BASE_CODEC) .docu...

Constructors

public
RandomiserCondition()

Methods

Public Methods (1)

public
int getSimplicity()
@Override

Fields

Protected Fields (2)

protecteddouble maxValue
protecteddouble minValue

Inheritance

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.universe.world.storage.EntityStore;
import com.hypixel.hytale.server.npc.decisionmaker.core.EvaluationContext;
import com.hypixel.hytale.server.npc.decisionmaker.core.conditions.base.Condition;
import java.util.concurrent.ThreadLocalRandom;

public class RandomiserCondition extends Condition {
   public static final BuilderCodec<RandomiserCondition> CODEC = BuilderCodec.builder(RandomiserCondition.class, RandomiserCondition::new, BASE_CODEC)
      .documentation("A condition that jitters between two defined values to add a small amount of randomness to the final utility value.")
      .<Double>appendInherited(
         new KeyedCodec<>("MinValue", Codec.DOUBLE),
         (condition, d) -> condition.minValue = d,
         condition -> condition.minValue,
         (condition, parent) -> condition.minValue = parent.minValue
      )
      .documentation("The minimum bound of the jitter.")
      .addValidator(Validators.range(0.0, 1.0))
      .add()
      .<Double>appendInherited(
         new KeyedCodec<>("MaxValue", Codec.DOUBLE),
         (condition, d) -> condition.maxValue = d,
         condition -> condition.maxValue,
         (condition, parent) -> condition.maxValue = parent.maxValue
      )
      .documentation("The maximum bound of the jitter.")
      .addValidator(Validators.range(0.0, 1.0))
      .add()
      .build();
   protected double minValue;
   protected double maxValue;

   public RandomiserCondition() {
   }

   @Override
   public double calculateUtility(
      int selfIndex, ArchetypeChunk<EntityStore> archetypeChunk, Ref<EntityStore> target, CommandBuffer<EntityStore> commandBuffer, EvaluationContext context
   ) {
      return ThreadLocalRandom.current().nextDouble(this.minValue, this.maxValue);
   }

   @Override
   public int getSimplicity() {
      return 10;
   }
}