Class TargetingStrategy

Direct Known Subclasses:
CustomTargetingStrategy, ExecutingEntityTargetingStrategy, ExecutingEntityTargetTargetingStrategy, FixedTargetingStrategy, OtherEntityTargetingStrategy

public abstract class TargetingStrategy
The abstract class TargetingStrategy defines the logic for selecting targets based on various strategies. It allows for different ways to filter, sort, and select one or more targets in a game environment based on factors like distance or custom conditions.
  • Constructor Details

    • TargetingStrategy

      protected TargetingStrategy(boolean multiTarget, boolean sortByDistance)
      Constructor for the TargetingStrategy class.
      Parameters:
      multiTarget - Specifies if the strategy supports selecting multiple targets.
      sortByDistance - Specifies if the strategy should prioritize targets by distance.
  • Method Details

    • findTargets

      public Collection<ICombatEntity> findTargets(Shape impactArea, ICombatEntity executor)
      Finds and returns a collection of combat entities that match the target criteria defined by the strategy. This method applies internal logic for finding targets and then optionally filters and sorts them based on the additional condition and distance priority settings.
      Parameters:
      impactArea - The area where the effect or action is applied.
      executor - The entity executing the action (e.g., the player or an NPC).
      Returns:
      A collection of ICombatEntity instances representing the selected targets.
    • findTargetsInternal

      protected abstract Collection<ICombatEntity> findTargetsInternal(Shape impactArea, ICombatEntity executor)
      Finds target entities in the impact area. This is implemented by the individual strategies.
      Parameters:
      impactArea - The area where the effect is applied.
      executor - The entity executing the action.
      Returns:
      A collection of ICombatEntity instances that match the strategy criteria.
    • isMultiTarget

      public boolean isMultiTarget()
    • setMultiTarget

      public void setMultiTarget(boolean multiTarget)
    • prioritizeByDistance

      public boolean prioritizeByDistance()
    • setPrioritizeByDistance

      public void setPrioritizeByDistance(boolean prioritizeByDistance)
    • setCustomTargetPriorityComparator

      public void setCustomTargetPriorityComparator(Comparator<IEntity> customTargetPriorityComparator)
    • withCondition

      public TargetingStrategy withCondition(BiPredicate<ICombatEntity, ICombatEntity> customCondition)
      Adds a custom condition to the targeting strategy.
      Parameters:
      customCondition - A condition that adds further filtering based on the executor and target.
      Returns:
      The current TargetingStrategy instance, allowing for method chaining.
    • enemies

      public static TargetingStrategy enemies()
      Returns a strategy that targets enemy entities.
      Returns:
      An instance of EnemyTargetingStrategy.
    • executingEntity

      public static TargetingStrategy executingEntity()
      Returns a strategy that targets the entity executing the action.
      Returns:
      An instance of ExecutingEntityTargetingStrategy.
    • friendly

      public static TargetingStrategy friendly()
      Returns a strategy that targets friendly entities.
      Returns:
      An instance of FriendlyTargetingStrategy.
    • friendlyDead

      public static TargetingStrategy friendlyDead()
      Returns a strategy that targets dead friendly entities.
      Returns:
      An instance of FriendlyTargetingStrategy.
    • custom

      public static TargetingStrategy custom(BiPredicate<ICombatEntity, ICombatEntity> customPredicate)
      Returns a strategy that uses a custom condition to filter targets.
      Parameters:
      customPredicate - A condition to define custom logic for target selection.
      Returns:
      An instance of CustomTargetingStrategy.
    • fixed

      public static TargetingStrategy fixed(ICombatEntity... fixedTargets)
      Returns a strategy for a fixed list of target entities.
      Parameters:
      fixedTargets - An array of target entities to always include as the targets.
      Returns:
      An instance of StaticTargetingStrategy initialized with the given entities.
    • none

      public static TargetingStrategy none()
      Returns a strategy that targets no entities.
      Returns:
      A TargetingStrategy that selects no entities.