HyCodeYourTale
classpublicPriority 3

TargetMovementStateCondition

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

extends SimpleCondition

0

Methods

0

Public Methods

1

Fields

1

Constructors

Constants

BuilderCodec<TargetMovementStateCondition>CODEC= BuilderCodec.builder( TargetMovementStateCondition.class, TargetMovementStateCondition::...

Constructors

public
TargetMovementStateCondition()

Fields

Protected Fields (1)

protectedMovementState movementState

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.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.codec.codecs.EnumCodec;
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.SimpleCondition;
import com.hypixel.hytale.server.npc.movement.MovementState;
import com.hypixel.hytale.server.npc.movement.controllers.MotionController;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;

public class TargetMovementStateCondition extends SimpleCondition {
   public static final BuilderCodec<TargetMovementStateCondition> CODEC = BuilderCodec.builder(
         TargetMovementStateCondition.class, TargetMovementStateCondition::new, ABSTRACT_CODEC
      )
      .documentation("A simple boolean condition that returns whether the target is in a given movement state.")
      .<MovementState>appendInherited(
         new KeyedCodec<>("State", new EnumCodec<>(MovementState.class)),
         (condition, e) -> condition.movementState = e,
         condition -> condition.movementState,
         (condition, parent) -> condition.movementState = parent.movementState
      )
      .addValidator(Validators.nonNull())
      .documentation("The movement state to check for.")
      .add()
      .build();
   protected MovementState movementState;

   public TargetMovementStateCondition() {
   }

   @Override
   protected boolean evaluate(
      int selfIndex,
      ArchetypeChunk<EntityStore> archetypeChunk,
      @Nullable Ref<EntityStore> target,
      @Nonnull CommandBuffer<EntityStore> commandBuffer,
      EvaluationContext context
   ) {
      return target != null && target.isValid() ? MotionController.isInMovementState(target, this.movementState, commandBuffer) : false;
   }
}