Added Goal<T>, which EntityGoal<T> and TargetGoal<T> extend from, giving them a shared parent class
This commit is contained in:
@@ -8,14 +8,8 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
*
|
*
|
||||||
* @param <T> The type of mob that the goal can be applied to.
|
* @param <T> The type of mob that the goal can be applied to.
|
||||||
*/
|
*/
|
||||||
public interface EntityGoal<T extends Mob> {
|
public interface EntityGoal<T extends Mob> extends Goal<T> {
|
||||||
/**
|
@Override
|
||||||
* Add the entity goal to an entity.
|
|
||||||
*
|
|
||||||
* @param entity The entity.
|
|
||||||
* @param priority The priority.
|
|
||||||
* @return The entity, modified.
|
|
||||||
*/
|
|
||||||
default T addToEntity(@NotNull T entity, int priority) {
|
default T addToEntity(@NotNull T entity, int priority) {
|
||||||
return EntityController.getFor(entity)
|
return EntityController.getFor(entity)
|
||||||
.addEntityGoal(priority, this)
|
.addEntityGoal(priority, this)
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.willfp.eco.core.entities.ai;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Mob;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A generic goal for entity AI.
|
||||||
|
*
|
||||||
|
* @param <T> The type of mob that the goal can be applied to.
|
||||||
|
*/
|
||||||
|
public interface Goal<T extends Mob> {
|
||||||
|
/**
|
||||||
|
* Add the entity goal to an entity.
|
||||||
|
* <p>
|
||||||
|
* The lower the priority, the higher up the execution order; so
|
||||||
|
* priority 0 will execute first. Lower priority (higher number) goals
|
||||||
|
* will only execute if all higher priority goals are stopped.
|
||||||
|
*
|
||||||
|
* @param entity The entity.
|
||||||
|
* @param priority The priority.
|
||||||
|
* @return The entity, modified.
|
||||||
|
*/
|
||||||
|
T addToEntity(@NotNull T entity, int priority);
|
||||||
|
}
|
||||||
@@ -8,14 +8,8 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
*
|
*
|
||||||
* @param <T> The type of mob that the goal can be applied to.
|
* @param <T> The type of mob that the goal can be applied to.
|
||||||
*/
|
*/
|
||||||
public interface TargetGoal<T extends Mob> {
|
public interface TargetGoal<T extends Mob> extends Goal<T> {
|
||||||
/**
|
@Override
|
||||||
* Add the target goal to an entity.
|
|
||||||
*
|
|
||||||
* @param entity The entity.
|
|
||||||
* @param priority The priority.
|
|
||||||
* @return The entity, modified.
|
|
||||||
*/
|
|
||||||
default T addToEntity(@NotNull T entity, int priority) {
|
default T addToEntity(@NotNull T entity, int priority) {
|
||||||
return EntityController.getFor(entity)
|
return EntityController.getFor(entity)
|
||||||
.addTargetGoal(priority, this)
|
.addTargetGoal(priority, this)
|
||||||
|
|||||||
Reference in New Issue
Block a user