## Uses of Interface
bdi4jade.event.GoalListener

- Packages that use GoalListener
  Package | Description
  --- | ---
  bdi4jade.core | This package contains the key classes of BDI4JADE.
  bdi4jade.plan.planbody | This package contains interfaces and classes that allows representation of plan body, which is an executable piece of code that is instantiated and executed to achieve goals.

- - ### Uses of GoalListener in bdi4jade.core

    Fields in bdi4jade.core with type parameters of type GoalListener
    Modifier and Type | Field and Description
    --- | ---
    `protected java.util.List<GoalListener>` | AbstractBDIAgent.`goalListeners`

    Methods in bdi4jade.core that return GoalListener
    Modifier and Type | Method and Description
    --- | ---
    `GoalListener` | GoalUpdateSet.GoalDescription.`getListener()` Returns a listener of the goal.

    Methods in bdi4jade.core that return types with arguments of type GoalListener
    Modifier and Type | Method and Description
    --- | ---
    `java.util.List<GoalListener>` | Intention.`getGoalListeners()` Returns all goal listeners.
    `java.util.List<GoalListener>` | BDIAgent.`getGoalListeners()` Returns all goal listeners.
    `java.util.List<GoalListener>` | AbstractBDIAgent.`getGoalListeners()`

    Methods in bdi4jade.core with parameters of type GoalListener
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | BDIAgent.`addGoal(Capability dispatcher, Goal goal, GoalListener goalListener)` Adds a new goal to this agent to be achieved and adds a listener to observe events related to this goal.
    `boolean` | AbstractBDIAgent.`addGoal(Capability dispatcher, Goal goal, GoalListener goalListener)`
    `boolean` | BDIAgent.`addGoal(Goal goal, GoalListener goalListener)` Adds a new goal to this agent to be achieved and adds a listener to observe events related to this goal.
    `boolean` | AbstractBDIAgent.`addGoal(Goal goal, GoalListener goalListener)`
    `void` | Intention.`addGoalListener(GoalListener goalListener)` Adds a listener to be notified when about goal events.
    `void` | BDIAgent.`addGoalListener(GoalListener goalListener)` Adds a listener to be notified when about goal events.
    `void` | AbstractBDIAgent.`addGoalListener(GoalListener goalListener)`
    `void` | GoalUpdateSet.`generateGoal(Goal goal, Capability dispatcher, GoalListener listener)` Indicates that a goal should be added to the agent, with the capability that dispatched the goal and provided listener.
    `void` | GoalUpdateSet.`generateGoal(Goal goal, GoalListener listener)` Indicates that a goal should be added to the agent, with the provided listener.
    `void` | Intention.`removeGoalListener(GoalListener goalListener)` Removes a goal listener, so it will not be notified about the goal events anymore.
    `void` | BDIAgent.`removeGoalListener(GoalListener goalListener)` Removes a goal listener, so it will not be notified about the goal events anymore.
    `void` | AbstractBDIAgent.`removeGoalListener(GoalListener goalListener)`

  - ### Uses of GoalListener in bdi4jade.plan.planbody

    Subinterfaces of GoalListener in bdi4jade.plan.planbody
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `PlanBody` This interface defines a plan body, which specifies a set of steps to achieve a goal.

    Classes in bdi4jade.plan.planbody that implement GoalListener
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AbstractPlanBody` This class provides an almost complete implementation of the `PlanBody` interface.
    `class` | `BeliefGoalPlanBody` This plan body aims to achieve a `BeliefGoal`.
    `class` | `FSMPlanBody` This allows a plan body to inherit from both `AbstractPlanBody` and `FSMBehaviour`.
    `class` | `ParallelActionPlanBody` This allows a plan body to inherit from both `AbstractPlanBody` and `ParallelBehaviour`.
    `class` | `ParallelGoalPlanBody` This plan body provides the set of actions to achieve a `ParallelGoal`.
    `class` | `SequentialActionPlanBody` This allows a plan body to inherit from both `AbstractPlanBody` and `SequentialBehaviour`.
    `class` | `SequentialGoalPlanBody` This plan body provides the set of actions to achieve a `SequentialGoal`.