diff --git a/src/main/java/com/minecolonies/core/entity/pathfinding/navigation/IDynamicHeuristicNavigator.java b/src/main/java/com/minecolonies/api/entity/pathfinding/IDynamicHeuristicNavigator.java similarity index 78% rename from src/main/java/com/minecolonies/core/entity/pathfinding/navigation/IDynamicHeuristicNavigator.java rename to src/main/java/com/minecolonies/api/entity/pathfinding/IDynamicHeuristicNavigator.java index 19494a22014..af7960c7de2 100644 --- a/src/main/java/com/minecolonies/core/entity/pathfinding/navigation/IDynamicHeuristicNavigator.java +++ b/src/main/java/com/minecolonies/api/entity/pathfinding/IDynamicHeuristicNavigator.java @@ -1,4 +1,4 @@ -package com.minecolonies.core.entity.pathfinding.navigation; +package com.minecolonies.api.entity.pathfinding; /** * Interface for navigators which keep an internal heuristic mod diff --git a/src/main/java/com/minecolonies/api/entity/pathfinding/IMinecoloniesNavigator.java b/src/main/java/com/minecolonies/api/entity/pathfinding/IMinecoloniesNavigator.java new file mode 100644 index 00000000000..6f6543eb3c8 --- /dev/null +++ b/src/main/java/com/minecolonies/api/entity/pathfinding/IMinecoloniesNavigator.java @@ -0,0 +1,71 @@ +package com.minecolonies.api.entity.pathfinding; + +import com.minecolonies.core.entity.pathfinding.navigation.MinecoloniesAdvancedPathNavigate; +import com.minecolonies.core.entity.pathfinding.pathjobs.AbstractPathJob; +import com.minecolonies.core.entity.pathfinding.pathresults.PathResult; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.Mob; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Describes the Navigator used by minecolonies entities + */ +public interface IMinecoloniesNavigator +{ + /** + * Sets a new pathjob to execute + * + * @param job to run + * @param dest + * @param speedFactor + * @param safeDestination + * @param + * @return null or new pathresult + */ + @Nullable + PathResult setPathJob( + @NotNull AbstractPathJob job, + BlockPos dest, + double speedFactor, boolean safeDestination); + + /** + * Indirectly triggers a recalulation, by marking the navigator as done + */ + void recalc(); + + /** + * Returns the pathresult holding the current pathing task and result + * + * @return + */ + PathResult getPathResult(); + + /** + * Gets the safe destination the entity wants to travel to + * + * @return + */ + BlockPos getSafeDestination(); + + /** + * Gets the entity of the navigator + * + * @return + */ + Mob getOurEntity(); + + /** + * Pauses the navigator for X ticks from starting any new pathing tasks + * + * @param pauseTicks + */ + void setPauseTicks(int pauseTicks); + + /** + * Returns the stuck handler used by the navigator + * + * @return + */ + IStuckHandler getStuckHandler(); +} diff --git a/src/main/java/com/minecolonies/api/entity/pathfinding/IStuckHandler.java b/src/main/java/com/minecolonies/api/entity/pathfinding/IStuckHandler.java index ff9d5b2b48a..a416778b4d2 100644 --- a/src/main/java/com/minecolonies/api/entity/pathfinding/IStuckHandler.java +++ b/src/main/java/com/minecolonies/api/entity/pathfinding/IStuckHandler.java @@ -1,16 +1,25 @@ package com.minecolonies.api.entity.pathfinding; -import com.minecolonies.core.entity.pathfinding.navigation.AbstractAdvancedPathNavigate; +import net.minecraft.world.entity.ai.navigation.PathNavigation; /** * Stuck handler for pathing, gets called to check/deal with stuck status */ -public interface IStuckHandler +public interface IStuckHandler