Class ProbeMoveData

java.lang.Object
com.hypixel.hytale.server.npc.movement.controllers.ProbeMoveData

public class ProbeMoveData extends Object
  • Field Details

    • probePosition

      @Nonnull public final org.joml.Vector3d probePosition
    • probeDirection

      @Nonnull public final org.joml.Vector3d probeDirection
    • initialPosition

      @Nonnull public final org.joml.Vector3d initialPosition
    • targetPosition

      @Nonnull public final org.joml.Vector3d targetPosition
    • directionComponentSelector

      @Nonnull public final org.joml.Vector3d directionComponentSelector
    • edgeBlocked

      public boolean edgeBlocked
    • isSavingSegments

      public boolean isSavingSegments
    • segmentCount

      public int segmentCount
    • segments

      @Nullable public ProbeMoveData.Segment[] segments
    • debugCollision

      public boolean debugCollision
  • Constructor Details

    • ProbeMoveData

      public ProbeMoveData()
  • Method Details

    • setSaveSegments

      public void setSaveSegments(boolean saveSegments)
    • getRelaxedConstraints

      @Nonnull public EnumSet<RelaxedConstraint> getRelaxedConstraints()
    • setRelaxedConstraints

      public void setRelaxedConstraints(@Nonnull EnumSet<RelaxedConstraint> constraints)
    • getBlockCollisionFilter

      @Nullable public Predicate<CollisionConfig> getBlockCollisionFilter()
    • setBlockCollisionFilter

      public void setBlockCollisionFilter(@Nullable Predicate<CollisionConfig> filter)
    • getBreathableBlockSet

      public int getBreathableBlockSet()
    • setBreathableBlockSet

      public void setBreathableBlockSet(int blockSet)
    • setPosition

      @Nonnull public ProbeMoveData setPosition(@Nonnull org.joml.Vector3dc position)
    • setDirection

      @Nonnull public ProbeMoveData setDirection(@Nonnull org.joml.Vector3dc direction)
    • setTargetPosition

      @Nonnull public ProbeMoveData setTargetPosition(@Nonnull org.joml.Vector3dc targetPosition)
    • canAdvance

      public boolean canAdvance(@Nonnull Ref<EntityStore> ref, @Nonnull MotionController motionController, double threshold, @Nonnull ComponentAccessor<EntityStore> componentAccessor)
    • canAdvanceAbs

      public boolean canAdvanceAbs(@Nonnull Ref<EntityStore> ref, @Nonnull MotionController motionController, double requiredDistance, @Nonnull ComponentAccessor<EntityStore> componentAccessor)
    • canMoveTo

      public boolean canMoveTo(@Nonnull Ref<EntityStore> ref, @Nonnull MotionController motionController, double maxDistance, double maxDistanceY, @Nonnull ComponentAccessor<EntityStore> componentAccessor)
    • canMoveTo

      public boolean canMoveTo(@Nonnull Ref<EntityStore> ref, @Nonnull MotionController motionController, double maxDistance, @Nonnull ComponentAccessor<EntityStore> componentAccessor)
    • computePosition

      public boolean computePosition(double distance, @Nonnull org.joml.Vector3d result)
    • locateSegmentAtDistance

      public boolean locateSegmentAtDistance(double distance, @Nonnull ProbeMoveData.SegmentLocation result)
    • startProbing

      public boolean startProbing()
    • addStartSegment

      public void addStartSegment(@Nonnull org.joml.Vector3dc position, boolean onGround)
    • addEndSegment

      public void addEndSegment(@Nonnull org.joml.Vector3dc position, boolean onGround, double distance)
    • addBlockedGroundSegment

      public void addBlockedGroundSegment(@Nonnull org.joml.Vector3dc position, double distance, @Nonnull org.joml.Vector3dc normal, int blockId)
    • addHitGroundSegment

      public void addHitGroundSegment(@Nonnull org.joml.Vector3dc position, double distance, @Nonnull org.joml.Vector3dc normal, int blockId)
    • addHitWallSegment

      public void addHitWallSegment(@Nonnull org.joml.Vector3dc position, boolean onGround, double distance, @Nonnull org.joml.Vector3dc normal, int blockId)
    • addMoveSegment

      public void addMoveSegment(@Nonnull org.joml.Vector3dc position, boolean onGround, double distance)
    • addClimbSegment

      public void addClimbSegment(@Nonnull org.joml.Vector3dc position, double distance, int blockId)
    • addHitEdgeSegment

      public void addHitEdgeSegment(@Nonnull org.joml.Vector3dc position, double distance)
    • addDropSegment

      public void addDropSegment(@Nonnull org.joml.Vector3d position, double distance)
    • addBlockedDropSegment

      public void addBlockedDropSegment(@Nonnull org.joml.Vector3d position, double distance)
    • changeSegmentToBlockedWall

      public void changeSegmentToBlockedWall()
    • changeSegmentToBlockedEdge

      public void changeSegmentToBlockedEdge()
    • truncateBeforeInvalidPosition

      public double truncateBeforeInvalidPosition(@Nonnull MotionController motionController, @Nonnull org.joml.Vector3dc rollbackPosition)
      Ends the run at rollbackPosition, the start of a step that reached a position the NPC may not stand on, and returns the shortened distance.

      The stop reports blocked ground, even where a wall collision caused it. ProbeMoveData.Segment.Type.BLOCKED_WALL makes RailPathSmoother extend the rail past the last segment, which suits a wall the NPC may stand against. Ahead of this stop is a position it may not occupy, so the rail has to end where the probe stopped.

    • getLastDistance

      public double getLastDistance()
    • dump

      @Nonnull public String dump()