From 2a5dcfcacd55f242d40e7c31667c68bfd31f3e03 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 04:10:21 +0000 Subject: [PATCH 01/39] build(deps): bump org.apache.maven.plugins:maven-javadoc-plugin Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.11.1 to 3.11.2. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.11.1...maven-javadoc-plugin-3.11.2) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index aa15fa78..591fde7b 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.11.1 + 3.11.2 ${project.reporting.outputDirectory}/myoutput myapidocs @@ -96,7 +96,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.11.1 + 3.11.2 8 ../ From bc955ea2f77b1e0f3aa3df625a4de3cd16671619 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Thu, 12 Dec 2024 09:10:55 +0100 Subject: [PATCH 02/39] feat: allowingFailFast and respective logic has been removed --- .../PathfinderConfiguration.java | 11 ----------- .../pathfinder/AbstractPathfinder.java | 19 +------------------ 2 files changed, 1 insertion(+), 29 deletions(-) diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/configuration/PathfinderConfiguration.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/configuration/PathfinderConfiguration.java index 9c68c9fb..659fd6ed 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/configuration/PathfinderConfiguration.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/configuration/PathfinderConfiguration.java @@ -45,16 +45,6 @@ public class PathfinderConfiguration { */ boolean async; - /** - * If set to true, the pathfinding process will terminate immediately if either the start or - * target or both are unreachable. - * - *

NOTE: This prevents fallback strategies. - * @deprecated Will be removed in future releases - */ - @Deprecated - boolean allowingFailFast; - /** * If pathfinding fails, this parameter determines whether the algorithm should fall back to the * last successfully calculated path. This can help maintain progress, but might use an outdated @@ -129,7 +119,6 @@ public static PathfinderConfiguration deepCopy(PathfinderConfiguration pathfinde .maxIterations(pathfinderConfiguration.maxIterations) .maxLength(pathfinderConfiguration.maxLength) .async(pathfinderConfiguration.async) - .allowingFailFast(pathfinderConfiguration.allowingFailFast) .allowingFallback(pathfinderConfiguration.allowingFallback) .loadingChunks(pathfinderConfiguration.loadingChunks) .heuristicWeights(pathfinderConfiguration.heuristicWeights) diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java b/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java index d8cb3ead..dbd7c714 100644 --- a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java +++ b/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java @@ -116,8 +116,7 @@ public void abort() { private boolean shouldSkipPathing(PathPosition start, PathPosition target) { return !isSameEnvironment(start, target) - || isSameBlock(start, target) - || isFastFailEnabledAndBlockUnreachable(start, target); + || isSameBlock(start, target); } private boolean isSameEnvironment(PathPosition start, PathPosition target) { @@ -128,22 +127,6 @@ private boolean isSameBlock(PathPosition start, PathPosition target) { return start.isInSameBlock(target); } - private boolean isFastFailEnabledAndBlockUnreachable(PathPosition start, PathPosition target) { - return this.pathfinderConfiguration.isAllowingFailFast() - && (isBlockUnreachable(target) || isBlockUnreachable(start)); - } - - private boolean isBlockUnreachable(PathPosition position) { - for (PathVector vector : Offset.MERGED.getVectors()) { - PathPosition offsetPosition = position.add(vector); - PathBlock pathBlock = this.snapshotManager.getBlock(offsetPosition); - if (pathBlock != null && pathBlock.isPassable()) { - return false; - } - } - return true; - } - private CompletionStage initiatePathing( PathPosition start, PathPosition target, From 75958feb88c34496bc9890ae26bae7100b6faa96 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Thu, 12 Dec 2024 09:19:07 +0100 Subject: [PATCH 03/39] feat: experimental prioritizing feature has been removed This is due to its inconsistency + it has nothing to do with the pathfinder per se. The same result is better achievable through filters and stages. --- .../PathfinderConfiguration.java | 19 ------------- .../pathing/pathfinder/AStarPathfinder.java | 28 ++----------------- .../pathfinder/AbstractPathfinder.java | 3 -- 3 files changed, 2 insertions(+), 48 deletions(-) diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/configuration/PathfinderConfiguration.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/configuration/PathfinderConfiguration.java index 659fd6ed..e5dae77f 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/configuration/PathfinderConfiguration.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/configuration/PathfinderConfiguration.java @@ -1,10 +1,5 @@ package de.metaphoriker.pathetic.api.pathing.configuration; -import de.metaphoriker.pathetic.api.annotation.Experimental; -import de.metaphoriker.pathetic.api.pathing.Pathfinder; -import de.metaphoriker.pathetic.api.pathing.filter.PathFilterStage; -import de.metaphoriker.pathetic.api.wrapper.PathPosition; -import java.util.List; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; @@ -58,20 +53,6 @@ public class PathfinderConfiguration { */ boolean loadingChunks; - /** - * Determines whether the pathfinding algorithm should see PathFilterStages as prioritization, - * instead of filtering. This means that the pathfinding algorithm will prioritize paths that pass - * the filters over paths that do not. - * - *

Setting this to true will no longer take the {@link PathFilterStage}s into the validation - * process. Shared filters must still be passed. - * - *

{@link Pathfinder#findPath(PathPosition, PathPosition, List, List)} - * - * @experimental This feature is experimental and may be subject to change. - */ - @Experimental @Builder.Default boolean prioritizing = false; - /** * The set of weights used to calculate heuristics within the A* algorithm. These influence the * pathfinding priority for distance, elevation changes, smoothness, and diagonal movement. diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java b/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java index 11b7d0e7..66954fb0 100644 --- a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java +++ b/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java @@ -18,7 +18,6 @@ public class AStarPathfinder extends AbstractPathfinder { private static final int DEFAULT_GRID_CELL_SIZE = 12; - private static final int PRIORITY_BOOST_IN_PERCENTAGE = 80; /** * The grid map used to store the regional examined positions and Bloom filters for each grid @@ -66,32 +65,10 @@ private void evaluateNewNodes( for (Node newNode : newNodes) { double nodeCost = newNode.getHeuristic().get(); - if (pathfinderConfiguration.isPrioritizing()) { - double priorityAdjustment = calculatePriorityAdjustment(newNode, filterStages); - nodeCost -= priorityAdjustment; - } nodeQueue.insert(nodeCost, newNode); } } - private double calculatePriorityAdjustment(Node node, List filterStages) { - for (PathFilterStage filterStage : filterStages) { - boolean filterResult = - filterStage.filter( - new PathValidationContext( - node.getPosition(), - node.getParent() != null ? node.getParent().getPosition() : null, - node.getStart(), - node.getTarget(), - snapshotManager)); - - if (filterResult) { - return node.getHeuristic().get() * (PRIORITY_BOOST_IN_PERCENTAGE / 100.0); - } - } - return 0.0; - } - private boolean isNodeValid( Node currentNode, Node newNode, @@ -141,8 +118,7 @@ private boolean isReachable( isHeightDifferencePassable(from, to, vector1, hasYDifference); if (doAllFiltersPass(filters, neighbour1) - && (!pathfinderConfiguration.isPrioritizing() - && doAnyFilterStagePass(filterStages, neighbour1)) + && doAnyFilterStagePass(filterStages, neighbour1) && heightDifferencePassable) return true; } } @@ -228,7 +204,7 @@ private boolean isNodeInvalid( return true; // Node is invalid if filters fail } - return !pathfinderConfiguration.isPrioritizing() && !stagesPass; + return !stagesPass; } private boolean doAllFiltersPass(List filters, Node node) { diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java b/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java index dbd7c714..75506b34 100644 --- a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java +++ b/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java @@ -27,11 +27,8 @@ import de.metaphoriker.pathetic.api.pathing.result.PathState; import de.metaphoriker.pathetic.api.pathing.result.PathfinderResult; import de.metaphoriker.pathetic.api.snapshot.SnapshotManager; -import de.metaphoriker.pathetic.api.wrapper.PathBlock; import de.metaphoriker.pathetic.api.wrapper.PathPosition; -import de.metaphoriker.pathetic.api.wrapper.PathVector; import de.metaphoriker.pathetic.model.pathing.Node; -import de.metaphoriker.pathetic.model.pathing.Offset; import de.metaphoriker.pathetic.model.pathing.result.PathImpl; import de.metaphoriker.pathetic.model.pathing.result.PathfinderResultImpl; import de.metaphoriker.pathetic.model.snapshot.FailingSnapshotManager; From b659d13661e6fa541b07fa9537d03ac3d8226c91 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Fri, 13 Dec 2024 15:03:34 +0100 Subject: [PATCH 04/39] refact: pathetic-nms is now pathetic-provider and all NMS modules have been moved into their own spigot module --- pathetic-model/pom.xml | 2 +- .../paper/pom.xml | 0 .../paper/PaperChunkDataProvider.java | 0 {pathetic-nms => pathetic-provider}/pom.xml | 2 +- pathetic-provider/spigot/pom.xml | 14 +++++++ .../spigot}/v1_12/pom.xml | 0 .../v1_12/v1_12ChunkDataProviderImpl.java | 0 .../spigot}/v1_15/pom.xml | 0 .../v1_15/v1_15ChunkDataProviderImpl.java | 0 .../spigot}/v1_16/pom.xml | 0 .../v1_16/v1_16ChunkDataProviderImpl.java | 0 .../spigot}/v1_17/pom.xml | 0 .../v1_17/v1_17ChunkDataProviderImpl.java | 0 .../spigot}/v1_18/pom.xml | 0 .../v1_18/v1_18ChunkDataProviderImpl.java | 0 .../spigot}/v1_18_R2/pom.xml | 0 .../v1_18_R2ChunkDataProviderImpl.java | 0 .../spigot}/v1_19_R2/pom.xml | 0 .../v1_19_R2ChunkDataProviderImpl.java | 0 .../spigot}/v1_19_R3/pom.xml | 0 .../v1_19_R3ChunkDataProviderImpl.java | 0 .../spigot}/v1_20_R1/pom.xml | 0 .../v1_20_R1ChunkDataProviderImpl.java | 0 .../spigot}/v1_20_R2/pom.xml | 0 .../v1_20_R2ChunkDataProviderImpl.java | 0 .../spigot}/v1_20_R3/pom.xml | 0 .../v1_20_R3ChunkDataProviderImpl.java | 0 .../spigot}/v1_20_R4/pom.xml | 0 .../v1_20_R4ChunkDataProviderImpl.java | 0 .../spigot}/v1_21_R1/pom.xml | 0 .../v1_21_R1ChunkDataProviderImpl.java | 0 .../spigot}/v1_21_R2/pom.xml | 0 .../v1_21_R2ChunkDataProviderImpl.java | 0 .../spigot}/v1_21_R3/pom.xml | 0 .../v1_21_R3ChunkDataProviderImpl.java | 0 .../spigot}/v1_8/pom.xml | 0 .../v1_8/v1_8ChunkDataProviderImpl.java | 0 .../provider/ChunkDataProviderResolver.java | 0 pom.xml | 37 ++++++++++--------- 39 files changed, 35 insertions(+), 20 deletions(-) rename {pathetic-nms => pathetic-provider}/paper/pom.xml (100%) rename {pathetic-nms => pathetic-provider}/paper/src/main/java/de/metaphoriker/pathetic/provider/paper/PaperChunkDataProvider.java (100%) rename {pathetic-nms => pathetic-provider}/pom.xml (98%) create mode 100644 pathetic-provider/spigot/pom.xml rename {pathetic-nms => pathetic-provider/spigot}/v1_12/pom.xml (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_12/src/main/java/de/metaphoriker/pathetic/provider/v1_12/v1_12ChunkDataProviderImpl.java (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_15/pom.xml (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_15/src/main/java/de/metaphoriker/pathetic/provider/v1_15/v1_15ChunkDataProviderImpl.java (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_16/pom.xml (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_16/src/main/java/de/metaphoriker/pathetic/provider/v1_16/v1_16ChunkDataProviderImpl.java (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_17/pom.xml (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_17/src/main/java/de/metaphoriker/pathetic/provider/v1_17/v1_17ChunkDataProviderImpl.java (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_18/pom.xml (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_18/src/main/java/de/metaphoriker/pathetic/provider/v1_18/v1_18ChunkDataProviderImpl.java (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_18_R2/pom.xml (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_18_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_18_R2/v1_18_R2ChunkDataProviderImpl.java (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_19_R2/pom.xml (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_19_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R2/v1_19_R2ChunkDataProviderImpl.java (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_19_R3/pom.xml (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_19_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R3/v1_19_R3ChunkDataProviderImpl.java (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_20_R1/pom.xml (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_20_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R1/v1_20_R1ChunkDataProviderImpl.java (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_20_R2/pom.xml (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_20_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R2/v1_20_R2ChunkDataProviderImpl.java (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_20_R3/pom.xml (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_20_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R3/v1_20_R3ChunkDataProviderImpl.java (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_20_R4/pom.xml (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_20_R4/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R4/v1_20_R4ChunkDataProviderImpl.java (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_21_R1/pom.xml (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_21_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R1/v1_21_R1ChunkDataProviderImpl.java (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_21_R2/pom.xml (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_21_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R2/v1_21_R2ChunkDataProviderImpl.java (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_21_R3/pom.xml (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_21_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R3ChunkDataProviderImpl.java (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_8/pom.xml (100%) rename {pathetic-nms => pathetic-provider/spigot}/v1_8/src/main/java/de/metaphoriker/pathetic/provider/v1_8/v1_8ChunkDataProviderImpl.java (100%) rename {pathetic-nms => pathetic-provider}/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java (100%) diff --git a/pathetic-model/pom.xml b/pathetic-model/pom.xml index 9f2a9c45..807000a0 100644 --- a/pathetic-model/pom.xml +++ b/pathetic-model/pom.xml @@ -105,7 +105,7 @@ de.metaphoriker - pathetic-nms + pathetic-provider 3.3.1 compile diff --git a/pathetic-nms/paper/pom.xml b/pathetic-provider/paper/pom.xml similarity index 100% rename from pathetic-nms/paper/pom.xml rename to pathetic-provider/paper/pom.xml diff --git a/pathetic-nms/paper/src/main/java/de/metaphoriker/pathetic/provider/paper/PaperChunkDataProvider.java b/pathetic-provider/paper/src/main/java/de/metaphoriker/pathetic/provider/paper/PaperChunkDataProvider.java similarity index 100% rename from pathetic-nms/paper/src/main/java/de/metaphoriker/pathetic/provider/paper/PaperChunkDataProvider.java rename to pathetic-provider/paper/src/main/java/de/metaphoriker/pathetic/provider/paper/PaperChunkDataProvider.java diff --git a/pathetic-nms/pom.xml b/pathetic-provider/pom.xml similarity index 98% rename from pathetic-nms/pom.xml rename to pathetic-provider/pom.xml index 142f6b8f..575e3810 100644 --- a/pathetic-nms/pom.xml +++ b/pathetic-provider/pom.xml @@ -11,7 +11,7 @@ 4.0.0 - pathetic-nms + pathetic-provider 3.3.1 diff --git a/pathetic-provider/spigot/pom.xml b/pathetic-provider/spigot/pom.xml new file mode 100644 index 00000000..7ab742aa --- /dev/null +++ b/pathetic-provider/spigot/pom.xml @@ -0,0 +1,14 @@ + + + 4.0.0 + + de.metaphoriker + pathetic-main + 3.3.1 + ../../pom.xml + + + spigot + diff --git a/pathetic-nms/v1_12/pom.xml b/pathetic-provider/spigot/v1_12/pom.xml similarity index 100% rename from pathetic-nms/v1_12/pom.xml rename to pathetic-provider/spigot/v1_12/pom.xml diff --git a/pathetic-nms/v1_12/src/main/java/de/metaphoriker/pathetic/provider/v1_12/v1_12ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_12/src/main/java/de/metaphoriker/pathetic/provider/v1_12/v1_12ChunkDataProviderImpl.java similarity index 100% rename from pathetic-nms/v1_12/src/main/java/de/metaphoriker/pathetic/provider/v1_12/v1_12ChunkDataProviderImpl.java rename to pathetic-provider/spigot/v1_12/src/main/java/de/metaphoriker/pathetic/provider/v1_12/v1_12ChunkDataProviderImpl.java diff --git a/pathetic-nms/v1_15/pom.xml b/pathetic-provider/spigot/v1_15/pom.xml similarity index 100% rename from pathetic-nms/v1_15/pom.xml rename to pathetic-provider/spigot/v1_15/pom.xml diff --git a/pathetic-nms/v1_15/src/main/java/de/metaphoriker/pathetic/provider/v1_15/v1_15ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_15/src/main/java/de/metaphoriker/pathetic/provider/v1_15/v1_15ChunkDataProviderImpl.java similarity index 100% rename from pathetic-nms/v1_15/src/main/java/de/metaphoriker/pathetic/provider/v1_15/v1_15ChunkDataProviderImpl.java rename to pathetic-provider/spigot/v1_15/src/main/java/de/metaphoriker/pathetic/provider/v1_15/v1_15ChunkDataProviderImpl.java diff --git a/pathetic-nms/v1_16/pom.xml b/pathetic-provider/spigot/v1_16/pom.xml similarity index 100% rename from pathetic-nms/v1_16/pom.xml rename to pathetic-provider/spigot/v1_16/pom.xml diff --git a/pathetic-nms/v1_16/src/main/java/de/metaphoriker/pathetic/provider/v1_16/v1_16ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_16/src/main/java/de/metaphoriker/pathetic/provider/v1_16/v1_16ChunkDataProviderImpl.java similarity index 100% rename from pathetic-nms/v1_16/src/main/java/de/metaphoriker/pathetic/provider/v1_16/v1_16ChunkDataProviderImpl.java rename to pathetic-provider/spigot/v1_16/src/main/java/de/metaphoriker/pathetic/provider/v1_16/v1_16ChunkDataProviderImpl.java diff --git a/pathetic-nms/v1_17/pom.xml b/pathetic-provider/spigot/v1_17/pom.xml similarity index 100% rename from pathetic-nms/v1_17/pom.xml rename to pathetic-provider/spigot/v1_17/pom.xml diff --git a/pathetic-nms/v1_17/src/main/java/de/metaphoriker/pathetic/provider/v1_17/v1_17ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_17/src/main/java/de/metaphoriker/pathetic/provider/v1_17/v1_17ChunkDataProviderImpl.java similarity index 100% rename from pathetic-nms/v1_17/src/main/java/de/metaphoriker/pathetic/provider/v1_17/v1_17ChunkDataProviderImpl.java rename to pathetic-provider/spigot/v1_17/src/main/java/de/metaphoriker/pathetic/provider/v1_17/v1_17ChunkDataProviderImpl.java diff --git a/pathetic-nms/v1_18/pom.xml b/pathetic-provider/spigot/v1_18/pom.xml similarity index 100% rename from pathetic-nms/v1_18/pom.xml rename to pathetic-provider/spigot/v1_18/pom.xml diff --git a/pathetic-nms/v1_18/src/main/java/de/metaphoriker/pathetic/provider/v1_18/v1_18ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_18/src/main/java/de/metaphoriker/pathetic/provider/v1_18/v1_18ChunkDataProviderImpl.java similarity index 100% rename from pathetic-nms/v1_18/src/main/java/de/metaphoriker/pathetic/provider/v1_18/v1_18ChunkDataProviderImpl.java rename to pathetic-provider/spigot/v1_18/src/main/java/de/metaphoriker/pathetic/provider/v1_18/v1_18ChunkDataProviderImpl.java diff --git a/pathetic-nms/v1_18_R2/pom.xml b/pathetic-provider/spigot/v1_18_R2/pom.xml similarity index 100% rename from pathetic-nms/v1_18_R2/pom.xml rename to pathetic-provider/spigot/v1_18_R2/pom.xml diff --git a/pathetic-nms/v1_18_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_18_R2/v1_18_R2ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_18_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_18_R2/v1_18_R2ChunkDataProviderImpl.java similarity index 100% rename from pathetic-nms/v1_18_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_18_R2/v1_18_R2ChunkDataProviderImpl.java rename to pathetic-provider/spigot/v1_18_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_18_R2/v1_18_R2ChunkDataProviderImpl.java diff --git a/pathetic-nms/v1_19_R2/pom.xml b/pathetic-provider/spigot/v1_19_R2/pom.xml similarity index 100% rename from pathetic-nms/v1_19_R2/pom.xml rename to pathetic-provider/spigot/v1_19_R2/pom.xml diff --git a/pathetic-nms/v1_19_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R2/v1_19_R2ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_19_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R2/v1_19_R2ChunkDataProviderImpl.java similarity index 100% rename from pathetic-nms/v1_19_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R2/v1_19_R2ChunkDataProviderImpl.java rename to pathetic-provider/spigot/v1_19_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R2/v1_19_R2ChunkDataProviderImpl.java diff --git a/pathetic-nms/v1_19_R3/pom.xml b/pathetic-provider/spigot/v1_19_R3/pom.xml similarity index 100% rename from pathetic-nms/v1_19_R3/pom.xml rename to pathetic-provider/spigot/v1_19_R3/pom.xml diff --git a/pathetic-nms/v1_19_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R3/v1_19_R3ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_19_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R3/v1_19_R3ChunkDataProviderImpl.java similarity index 100% rename from pathetic-nms/v1_19_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R3/v1_19_R3ChunkDataProviderImpl.java rename to pathetic-provider/spigot/v1_19_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R3/v1_19_R3ChunkDataProviderImpl.java diff --git a/pathetic-nms/v1_20_R1/pom.xml b/pathetic-provider/spigot/v1_20_R1/pom.xml similarity index 100% rename from pathetic-nms/v1_20_R1/pom.xml rename to pathetic-provider/spigot/v1_20_R1/pom.xml diff --git a/pathetic-nms/v1_20_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R1/v1_20_R1ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_20_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R1/v1_20_R1ChunkDataProviderImpl.java similarity index 100% rename from pathetic-nms/v1_20_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R1/v1_20_R1ChunkDataProviderImpl.java rename to pathetic-provider/spigot/v1_20_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R1/v1_20_R1ChunkDataProviderImpl.java diff --git a/pathetic-nms/v1_20_R2/pom.xml b/pathetic-provider/spigot/v1_20_R2/pom.xml similarity index 100% rename from pathetic-nms/v1_20_R2/pom.xml rename to pathetic-provider/spigot/v1_20_R2/pom.xml diff --git a/pathetic-nms/v1_20_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R2/v1_20_R2ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_20_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R2/v1_20_R2ChunkDataProviderImpl.java similarity index 100% rename from pathetic-nms/v1_20_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R2/v1_20_R2ChunkDataProviderImpl.java rename to pathetic-provider/spigot/v1_20_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R2/v1_20_R2ChunkDataProviderImpl.java diff --git a/pathetic-nms/v1_20_R3/pom.xml b/pathetic-provider/spigot/v1_20_R3/pom.xml similarity index 100% rename from pathetic-nms/v1_20_R3/pom.xml rename to pathetic-provider/spigot/v1_20_R3/pom.xml diff --git a/pathetic-nms/v1_20_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R3/v1_20_R3ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_20_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R3/v1_20_R3ChunkDataProviderImpl.java similarity index 100% rename from pathetic-nms/v1_20_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R3/v1_20_R3ChunkDataProviderImpl.java rename to pathetic-provider/spigot/v1_20_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R3/v1_20_R3ChunkDataProviderImpl.java diff --git a/pathetic-nms/v1_20_R4/pom.xml b/pathetic-provider/spigot/v1_20_R4/pom.xml similarity index 100% rename from pathetic-nms/v1_20_R4/pom.xml rename to pathetic-provider/spigot/v1_20_R4/pom.xml diff --git a/pathetic-nms/v1_20_R4/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R4/v1_20_R4ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_20_R4/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R4/v1_20_R4ChunkDataProviderImpl.java similarity index 100% rename from pathetic-nms/v1_20_R4/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R4/v1_20_R4ChunkDataProviderImpl.java rename to pathetic-provider/spigot/v1_20_R4/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R4/v1_20_R4ChunkDataProviderImpl.java diff --git a/pathetic-nms/v1_21_R1/pom.xml b/pathetic-provider/spigot/v1_21_R1/pom.xml similarity index 100% rename from pathetic-nms/v1_21_R1/pom.xml rename to pathetic-provider/spigot/v1_21_R1/pom.xml diff --git a/pathetic-nms/v1_21_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R1/v1_21_R1ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_21_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R1/v1_21_R1ChunkDataProviderImpl.java similarity index 100% rename from pathetic-nms/v1_21_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R1/v1_21_R1ChunkDataProviderImpl.java rename to pathetic-provider/spigot/v1_21_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R1/v1_21_R1ChunkDataProviderImpl.java diff --git a/pathetic-nms/v1_21_R2/pom.xml b/pathetic-provider/spigot/v1_21_R2/pom.xml similarity index 100% rename from pathetic-nms/v1_21_R2/pom.xml rename to pathetic-provider/spigot/v1_21_R2/pom.xml diff --git a/pathetic-nms/v1_21_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R2/v1_21_R2ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_21_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R2/v1_21_R2ChunkDataProviderImpl.java similarity index 100% rename from pathetic-nms/v1_21_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R2/v1_21_R2ChunkDataProviderImpl.java rename to pathetic-provider/spigot/v1_21_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R2/v1_21_R2ChunkDataProviderImpl.java diff --git a/pathetic-nms/v1_21_R3/pom.xml b/pathetic-provider/spigot/v1_21_R3/pom.xml similarity index 100% rename from pathetic-nms/v1_21_R3/pom.xml rename to pathetic-provider/spigot/v1_21_R3/pom.xml diff --git a/pathetic-nms/v1_21_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R3ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_21_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R3ChunkDataProviderImpl.java similarity index 100% rename from pathetic-nms/v1_21_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R3ChunkDataProviderImpl.java rename to pathetic-provider/spigot/v1_21_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R3ChunkDataProviderImpl.java diff --git a/pathetic-nms/v1_8/pom.xml b/pathetic-provider/spigot/v1_8/pom.xml similarity index 100% rename from pathetic-nms/v1_8/pom.xml rename to pathetic-provider/spigot/v1_8/pom.xml diff --git a/pathetic-nms/v1_8/src/main/java/de/metaphoriker/pathetic/provider/v1_8/v1_8ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_8/src/main/java/de/metaphoriker/pathetic/provider/v1_8/v1_8ChunkDataProviderImpl.java similarity index 100% rename from pathetic-nms/v1_8/src/main/java/de/metaphoriker/pathetic/provider/v1_8/v1_8ChunkDataProviderImpl.java rename to pathetic-provider/spigot/v1_8/src/main/java/de/metaphoriker/pathetic/provider/v1_8/v1_8ChunkDataProviderImpl.java diff --git a/pathetic-nms/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java b/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java similarity index 100% rename from pathetic-nms/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java rename to pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java diff --git a/pom.xml b/pom.xml index 2a9d6a26..74f28c81 100644 --- a/pom.xml +++ b/pom.xml @@ -19,25 +19,26 @@ pathetic-api pathetic-example pathetic-mapping - pathetic-nms - pathetic-nms/paper pathetic-model - pathetic-nms/v1_8 - pathetic-nms/v1_12 - pathetic-nms/v1_15 - pathetic-nms/v1_16 - pathetic-nms/v1_17 - pathetic-nms/v1_18 - pathetic-nms/v1_18_R2 - pathetic-nms/v1_19_R2 - pathetic-nms/v1_19_R3 - pathetic-nms/v1_20_R1 - pathetic-nms/v1_20_R2 - pathetic-nms/v1_20_R3 - pathetic-nms/v1_20_R4 - pathetic-nms/v1_21_R1 - pathetic-nms/v1_21_R2 - pathetic-nms/v1_21_R3 + pathetic-provider + pathetic-provider/paper + pathetic-provider/spigot + pathetic-provider/spigot/v1_8 + pathetic-provider/spigot/v1_12 + pathetic-provider/spigot/v1_15 + pathetic-provider/spigot/v1_16 + pathetic-provider/spigot/v1_17 + pathetic-provider/spigot/v1_18 + pathetic-provider/spigot/v1_18_R2 + pathetic-provider/spigot/v1_19_R2 + pathetic-provider/spigot/v1_19_R3 + pathetic-provider/spigot/v1_20_R1 + pathetic-provider/spigot/v1_20_R2 + pathetic-provider/spigot/v1_20_R3 + pathetic-provider/spigot/v1_20_R4 + pathetic-provider/spigot/v1_21_R1 + pathetic-provider/spigot/v1_21_R2 + pathetic-provider/spigot/v1_21_R3 From b997c5e2e97cf6dddd5af12b84854b784ba918fa Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Fri, 13 Dec 2024 15:04:51 +0100 Subject: [PATCH 05/39] fix: removed withAllowingFailFast method from example module --- .../java/de/metaphoriker/pathetic/example/PatheticPlugin.java | 1 - 1 file changed, 1 deletion(-) diff --git a/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/PatheticPlugin.java b/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/PatheticPlugin.java index c225f546..ba851e54 100644 --- a/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/PatheticPlugin.java +++ b/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/PatheticPlugin.java @@ -20,7 +20,6 @@ public void onEnable() { Pathfinder reusablePathfinder = PathfinderFactory.createPathfinder( // Use the factory to create a new pathfinder instance PathfinderConfiguration.createConfiguration() - .withAllowingFailFast(true) // Allow pathfinding to fail fast if necessary .withAllowingFallback(true) // Allow fallback strategies if the primary fails .withLoadingChunks(true) // Allow chunks to be loaded during pathfinding ); From 2d7010e5ea707e8a58a0ce2aa9f9d3c6d775ba7c Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Fri, 13 Dec 2024 15:05:58 +0100 Subject: [PATCH 06/39] feat: allowingFallback is now true by default --- .../api/pathing/configuration/PathfinderConfiguration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/configuration/PathfinderConfiguration.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/configuration/PathfinderConfiguration.java index e5dae77f..53644de8 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/configuration/PathfinderConfiguration.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/configuration/PathfinderConfiguration.java @@ -45,7 +45,7 @@ public class PathfinderConfiguration { * last successfully calculated path. This can help maintain progress, but might use an outdated * path. */ - boolean allowingFallback; + @Builder.Default boolean allowingFallback = true; /** * Controls whether chunks should be loaded or generated as needed during the pathfinding process. From cbc9beaffa177b0f8e72c15a5c83d0a2539c6fc4 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Fri, 13 Dec 2024 15:18:39 +0100 Subject: [PATCH 07/39] refact: moved spigot provider resolving into SpigotChunkDataProviderResolver --- pathetic-provider/pom.xml | 107 +------------- pathetic-provider/spigot/pom.xml | 130 ++++++++++++++++++ .../SpigotChunkDataProviderResolver.java | 87 ++++++++++++ .../provider/ChunkDataProviderResolver.java | 87 +----------- 4 files changed, 222 insertions(+), 189 deletions(-) create mode 100644 pathetic-provider/spigot/src/main/java/de/metaphoriker/pathetic/provider/spigot/SpigotChunkDataProviderResolver.java diff --git a/pathetic-provider/pom.xml b/pathetic-provider/pom.xml index 575e3810..672eabee 100644 --- a/pathetic-provider/pom.xml +++ b/pathetic-provider/pom.xml @@ -39,112 +39,7 @@ de.metaphoriker - v1_21_R3 - 3.3.1 - compile - - - - de.metaphoriker - v1_21_R2 - 3.3.1 - compile - - - - de.metaphoriker - v1_21_R1 - 3.3.1 - compile - - - - de.metaphoriker - v1_20_R4 - 3.3.1 - compile - - - - de.metaphoriker - v1_20_R3 - 3.3.1 - compile - - - - de.metaphoriker - v1_20_R2 - 3.3.1 - compile - - - - de.metaphoriker - v1_20_R1 - 3.3.1 - compile - - - - de.metaphoriker - v1_19_R3 - 3.3.1 - compile - - - - de.metaphoriker - v1_19_R2 - 3.3.1 - compile - - - - de.metaphoriker - v1_18_R2 - 3.3.1 - compile - - - - de.metaphoriker - v1_18 - 3.3.1 - compile - - - - de.metaphoriker - v1_17 - 3.3.1 - compile - - - - de.metaphoriker - v1_16 - 3.3.1 - compile - - - - de.metaphoriker - v1_15 - 3.3.1 - compile - - - - de.metaphoriker - v1_12 - 3.3.1 - compile - - - - de.metaphoriker - v1_8 + spigot 3.3.1 compile diff --git a/pathetic-provider/spigot/pom.xml b/pathetic-provider/spigot/pom.xml index 7ab742aa..aee0b992 100644 --- a/pathetic-provider/spigot/pom.xml +++ b/pathetic-provider/spigot/pom.xml @@ -11,4 +11,134 @@ spigot + 3.3.1 + + + + org.slf4j + slf4j-api + + + + org.projectlombok + lombok + + + + de.metaphoriker + pathetic-api + + + + de.metaphoriker + v1_21_R3 + 3.3.1 + compile + + + + de.metaphoriker + v1_21_R2 + 3.3.1 + compile + + + + de.metaphoriker + v1_21_R1 + 3.3.1 + compile + + + + de.metaphoriker + v1_20_R4 + 3.3.1 + compile + + + + de.metaphoriker + v1_20_R3 + 3.3.1 + compile + + + + de.metaphoriker + v1_20_R2 + 3.3.1 + compile + + + + de.metaphoriker + v1_20_R1 + 3.3.1 + compile + + + + de.metaphoriker + v1_19_R3 + 3.3.1 + compile + + + + de.metaphoriker + v1_19_R2 + 3.3.1 + compile + + + + de.metaphoriker + v1_18_R2 + 3.3.1 + compile + + + + de.metaphoriker + v1_18 + 3.3.1 + compile + + + + de.metaphoriker + v1_17 + 3.3.1 + compile + + + + de.metaphoriker + v1_16 + 3.3.1 + compile + + + + de.metaphoriker + v1_15 + 3.3.1 + compile + + + + de.metaphoriker + v1_12 + 3.3.1 + compile + + + + de.metaphoriker + v1_8 + 3.3.1 + compile + + diff --git a/pathetic-provider/spigot/src/main/java/de/metaphoriker/pathetic/provider/spigot/SpigotChunkDataProviderResolver.java b/pathetic-provider/spigot/src/main/java/de/metaphoriker/pathetic/provider/spigot/SpigotChunkDataProviderResolver.java new file mode 100644 index 00000000..9f2f95a9 --- /dev/null +++ b/pathetic-provider/spigot/src/main/java/de/metaphoriker/pathetic/provider/spigot/SpigotChunkDataProviderResolver.java @@ -0,0 +1,87 @@ +package de.metaphoriker.pathetic.provider.spigot; + +import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; +import de.metaphoriker.pathetic.provider.v1_12.v1_12ChunkDataProviderImpl; +import de.metaphoriker.pathetic.provider.v1_15.v1_15ChunkDataProviderImpl; +import de.metaphoriker.pathetic.provider.v1_16.v1_16ChunkDataProviderImpl; +import de.metaphoriker.pathetic.provider.v1_17.v1_17ChunkDataProviderImpl; +import de.metaphoriker.pathetic.provider.v1_18.v1_18ChunkDataProviderImpl; +import de.metaphoriker.pathetic.provider.v1_18_R2.v1_18_R2ChunkDataProviderImpl; +import de.metaphoriker.pathetic.provider.v1_19_R2.v1_19_R2ChunkDataProviderImpl; +import de.metaphoriker.pathetic.provider.v1_19_R3.v1_19_R3ChunkDataProviderImpl; +import de.metaphoriker.pathetic.provider.v1_20_R1.v1_20_R1ChunkDataProviderImpl; +import de.metaphoriker.pathetic.provider.v1_20_R2.v1_20_R2ChunkDataProviderImpl; +import de.metaphoriker.pathetic.provider.v1_20_R3.v1_20_R3ChunkDataProviderImpl; +import de.metaphoriker.pathetic.provider.v1_20_R4.v1_20_R4ChunkDataProviderImpl; +import de.metaphoriker.pathetic.provider.v1_21_R1.v1_21_R1ChunkDataProviderImpl; +import de.metaphoriker.pathetic.provider.v1_21_R2.v1_21_R2ChunkDataProviderImpl; +import de.metaphoriker.pathetic.provider.v1_21_R3ChunkDataProviderImpl; +import de.metaphoriker.pathetic.provider.v1_8.v1_8ChunkDataProviderImpl; + +public class SpigotChunkDataProviderResolver { + + public static ChunkDataProvider resolve(int major, int minor) { + final ChunkDataProvider chunkDataProvider; + switch (major) { + case 21: + if(minor == 4) { + chunkDataProvider = new v1_21_R3ChunkDataProviderImpl(); + break; + } + if(minor == 2 || minor == 3) { + chunkDataProvider = new v1_21_R2ChunkDataProviderImpl(); + break; + } + chunkDataProvider = new v1_21_R1ChunkDataProviderImpl(); + break; + case 20: + if (minor == 5 || minor == 6) { + chunkDataProvider = new v1_20_R4ChunkDataProviderImpl(); + break; + } else if (minor == 3 || minor == 4) { + chunkDataProvider = new v1_20_R3ChunkDataProviderImpl(); + break; + } else if (minor == 2) { + chunkDataProvider = new v1_20_R2ChunkDataProviderImpl(); + break; + } else if (minor == 1) { + chunkDataProvider = new v1_20_R1ChunkDataProviderImpl(); + break; + } + case 19: + if (minor == 2 || minor == 3) { + chunkDataProvider = new v1_19_R2ChunkDataProviderImpl(); + break; + } + if (minor == 4) { + chunkDataProvider = new v1_19_R3ChunkDataProviderImpl(); + break; + } + case 18: + if (minor == 2) { + chunkDataProvider = new v1_18_R2ChunkDataProviderImpl(); + break; + } + chunkDataProvider = new v1_18ChunkDataProviderImpl(); + break; + case 17: + chunkDataProvider = new v1_17ChunkDataProviderImpl(); + break; + case 16: + chunkDataProvider = new v1_16ChunkDataProviderImpl(); + break; + case 15: + chunkDataProvider = new v1_15ChunkDataProviderImpl(); + break; + case 12: + chunkDataProvider = new v1_12ChunkDataProviderImpl(); + break; + case 8: + chunkDataProvider = new v1_8ChunkDataProviderImpl(); + break; + default: + throw new IllegalArgumentException("Unsupported version: " + major + "." + minor); + } + return chunkDataProvider; + } +} diff --git a/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java b/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java index 0e777f78..629a5493 100644 --- a/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java +++ b/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java @@ -1,24 +1,10 @@ package de.metaphoriker.pathetic.provider; -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; -import de.metaphoriker.pathetic.provider.v1_16.v1_16ChunkDataProviderImpl; -import de.metaphoriker.pathetic.provider.v1_12.v1_12ChunkDataProviderImpl; -import de.metaphoriker.pathetic.provider.v1_15.v1_15ChunkDataProviderImpl; -import de.metaphoriker.pathetic.provider.v1_17.v1_17ChunkDataProviderImpl; -import de.metaphoriker.pathetic.provider.v1_18.v1_18ChunkDataProviderImpl; -import de.metaphoriker.pathetic.provider.v1_18_R2.v1_18_R2ChunkDataProviderImpl; -import de.metaphoriker.pathetic.provider.v1_19_R2.v1_19_R2ChunkDataProviderImpl; -import de.metaphoriker.pathetic.provider.v1_19_R3.v1_19_R3ChunkDataProviderImpl; -import de.metaphoriker.pathetic.provider.v1_20_R1.v1_20_R1ChunkDataProviderImpl; -import de.metaphoriker.pathetic.provider.v1_20_R2.v1_20_R2ChunkDataProviderImpl; -import de.metaphoriker.pathetic.provider.v1_20_R3.v1_20_R3ChunkDataProviderImpl; -import de.metaphoriker.pathetic.provider.v1_20_R4.v1_20_R4ChunkDataProviderImpl; -import de.metaphoriker.pathetic.provider.v1_21_R1.v1_21_R1ChunkDataProviderImpl; -import de.metaphoriker.pathetic.provider.v1_21_R2.v1_21_R2ChunkDataProviderImpl; -import de.metaphoriker.pathetic.provider.v1_8.v1_8ChunkDataProviderImpl; import de.metaphoriker.pathetic.provider.paper.PaperChunkDataProvider; +import de.metaphoriker.pathetic.provider.spigot.SpigotChunkDataProviderResolver; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; @Getter @Slf4j @@ -32,78 +18,13 @@ public ChunkDataProviderResolver(int major, int minor) { if (isPaper()) { chunkDataProvider = new PaperChunkDataProvider(); } else { - chunkDataProvider = determineChunkDataProvider(major, minor); + chunkDataProvider = SpigotChunkDataProviderResolver.resolve(major, minor); } log.debug( "Detected version v{}, using {}", version, chunkDataProvider.getClass().getSimpleName()); } - private ChunkDataProvider determineChunkDataProvider(int major, int minor) { - final ChunkDataProvider chunkDataProvider; - switch (major) { - case 21: - if(minor == 4) { - chunkDataProvider = new v1_21_R3ChunkDataProviderImpl(); - break; - } - if(minor == 2 || minor == 3) { - chunkDataProvider = new v1_21_R2ChunkDataProviderImpl(); - break; - } - chunkDataProvider = new v1_21_R1ChunkDataProviderImpl(); - break; - case 20: - if (minor == 5 || minor == 6) { - chunkDataProvider = new v1_20_R4ChunkDataProviderImpl(); - break; - } else if (minor == 3 || minor == 4) { - chunkDataProvider = new v1_20_R3ChunkDataProviderImpl(); - break; - } else if (minor == 2) { - chunkDataProvider = new v1_20_R2ChunkDataProviderImpl(); - break; - } else if (minor == 1) { - chunkDataProvider = new v1_20_R1ChunkDataProviderImpl(); - break; - } - case 19: - if (minor == 2 || minor == 3) { - chunkDataProvider = new v1_19_R2ChunkDataProviderImpl(); - break; - } - if (minor == 4) { - chunkDataProvider = new v1_19_R3ChunkDataProviderImpl(); - break; - } - case 18: - if (minor == 2) { - chunkDataProvider = new v1_18_R2ChunkDataProviderImpl(); - break; - } - chunkDataProvider = new v1_18ChunkDataProviderImpl(); - break; - case 17: - chunkDataProvider = new v1_17ChunkDataProviderImpl(); - break; - case 16: - chunkDataProvider = new v1_16ChunkDataProviderImpl(); - break; - case 15: - chunkDataProvider = new v1_15ChunkDataProviderImpl(); - break; - case 12: - chunkDataProvider = new v1_12ChunkDataProviderImpl(); - break; - case 8: - chunkDataProvider = new v1_8ChunkDataProviderImpl(); - break; - default: - throw new IllegalArgumentException("Unsupported version: " + major + "." + minor); - } - return chunkDataProvider; - } - private boolean isPaper() { try { Class.forName("io.papermc.paper.configuration.GlobalConfiguration"); From 5336b2e5608df98f8f01ed720a3aada325371488 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Fri, 13 Dec 2024 18:10:33 +0100 Subject: [PATCH 08/39] fix: fixed relativePath in poms --- pathetic-provider/spigot/v1_12/pom.xml | 2 +- pathetic-provider/spigot/v1_15/pom.xml | 2 +- pathetic-provider/spigot/v1_16/pom.xml | 2 +- pathetic-provider/spigot/v1_17/pom.xml | 2 +- pathetic-provider/spigot/v1_18/pom.xml | 2 +- pathetic-provider/spigot/v1_18_R2/pom.xml | 2 +- pathetic-provider/spigot/v1_19_R2/pom.xml | 2 +- pathetic-provider/spigot/v1_19_R3/pom.xml | 2 +- pathetic-provider/spigot/v1_20_R1/pom.xml | 2 +- pathetic-provider/spigot/v1_20_R2/pom.xml | 2 +- pathetic-provider/spigot/v1_20_R3/pom.xml | 2 +- pathetic-provider/spigot/v1_20_R4/pom.xml | 2 +- pathetic-provider/spigot/v1_21_R1/pom.xml | 2 +- pathetic-provider/spigot/v1_21_R2/pom.xml | 2 +- pathetic-provider/spigot/v1_21_R3/pom.xml | 2 +- pathetic-provider/spigot/v1_8/pom.xml | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/pathetic-provider/spigot/v1_12/pom.xml b/pathetic-provider/spigot/v1_12/pom.xml index 6f9e68a4..362301d8 100644 --- a/pathetic-provider/spigot/v1_12/pom.xml +++ b/pathetic-provider/spigot/v1_12/pom.xml @@ -6,7 +6,7 @@ pathetic-main de.metaphoriker 3.3.1 - ../../pom.xml + ../../../pom.xml 4.0.0 diff --git a/pathetic-provider/spigot/v1_15/pom.xml b/pathetic-provider/spigot/v1_15/pom.xml index 4fdd37d4..dfcec3ec 100644 --- a/pathetic-provider/spigot/v1_15/pom.xml +++ b/pathetic-provider/spigot/v1_15/pom.xml @@ -6,7 +6,7 @@ pathetic-main de.metaphoriker 3.3.1 - ../../pom.xml + ../../../pom.xml 4.0.0 diff --git a/pathetic-provider/spigot/v1_16/pom.xml b/pathetic-provider/spigot/v1_16/pom.xml index 1a478533..64918dbd 100644 --- a/pathetic-provider/spigot/v1_16/pom.xml +++ b/pathetic-provider/spigot/v1_16/pom.xml @@ -6,7 +6,7 @@ pathetic-main de.metaphoriker 3.3.1 - ../../pom.xml + ../../../pom.xml 4.0.0 diff --git a/pathetic-provider/spigot/v1_17/pom.xml b/pathetic-provider/spigot/v1_17/pom.xml index 081914c0..4ff6f31e 100644 --- a/pathetic-provider/spigot/v1_17/pom.xml +++ b/pathetic-provider/spigot/v1_17/pom.xml @@ -6,7 +6,7 @@ pathetic-main de.metaphoriker 3.3.1 - ../../pom.xml + ../../../pom.xml 4.0.0 diff --git a/pathetic-provider/spigot/v1_18/pom.xml b/pathetic-provider/spigot/v1_18/pom.xml index 8445502d..76ecddc2 100644 --- a/pathetic-provider/spigot/v1_18/pom.xml +++ b/pathetic-provider/spigot/v1_18/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../pom.xml + ../../../pom.xml v1_18 diff --git a/pathetic-provider/spigot/v1_18_R2/pom.xml b/pathetic-provider/spigot/v1_18_R2/pom.xml index cc3cde35..16ae1a13 100644 --- a/pathetic-provider/spigot/v1_18_R2/pom.xml +++ b/pathetic-provider/spigot/v1_18_R2/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../pom.xml + ../../../pom.xml v1_18_R2 diff --git a/pathetic-provider/spigot/v1_19_R2/pom.xml b/pathetic-provider/spigot/v1_19_R2/pom.xml index 0436b7ed..9b1d8e80 100644 --- a/pathetic-provider/spigot/v1_19_R2/pom.xml +++ b/pathetic-provider/spigot/v1_19_R2/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../pom.xml + ../../../pom.xml v1_19_R2 diff --git a/pathetic-provider/spigot/v1_19_R3/pom.xml b/pathetic-provider/spigot/v1_19_R3/pom.xml index c5f66833..9a7b2a5b 100644 --- a/pathetic-provider/spigot/v1_19_R3/pom.xml +++ b/pathetic-provider/spigot/v1_19_R3/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../pom.xml + ../../../pom.xml v1_19_R3 diff --git a/pathetic-provider/spigot/v1_20_R1/pom.xml b/pathetic-provider/spigot/v1_20_R1/pom.xml index 3c6d3634..984a5655 100644 --- a/pathetic-provider/spigot/v1_20_R1/pom.xml +++ b/pathetic-provider/spigot/v1_20_R1/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../pom.xml + ../../../pom.xml v1_20_R1 diff --git a/pathetic-provider/spigot/v1_20_R2/pom.xml b/pathetic-provider/spigot/v1_20_R2/pom.xml index 34739e59..f07e290a 100644 --- a/pathetic-provider/spigot/v1_20_R2/pom.xml +++ b/pathetic-provider/spigot/v1_20_R2/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../pom.xml + ../../../pom.xml v1_20_R2 diff --git a/pathetic-provider/spigot/v1_20_R3/pom.xml b/pathetic-provider/spigot/v1_20_R3/pom.xml index 58119f61..528b05ba 100644 --- a/pathetic-provider/spigot/v1_20_R3/pom.xml +++ b/pathetic-provider/spigot/v1_20_R3/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../pom.xml + ../../../pom.xml v1_20_R3 diff --git a/pathetic-provider/spigot/v1_20_R4/pom.xml b/pathetic-provider/spigot/v1_20_R4/pom.xml index de40d8b4..7b45ca9e 100644 --- a/pathetic-provider/spigot/v1_20_R4/pom.xml +++ b/pathetic-provider/spigot/v1_20_R4/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../pom.xml + ../../../pom.xml v1_20_R4 diff --git a/pathetic-provider/spigot/v1_21_R1/pom.xml b/pathetic-provider/spigot/v1_21_R1/pom.xml index 5c785ba8..dcb986d9 100644 --- a/pathetic-provider/spigot/v1_21_R1/pom.xml +++ b/pathetic-provider/spigot/v1_21_R1/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../pom.xml + ../../../pom.xml v1_21_R1 diff --git a/pathetic-provider/spigot/v1_21_R2/pom.xml b/pathetic-provider/spigot/v1_21_R2/pom.xml index b423f930..490dc65e 100644 --- a/pathetic-provider/spigot/v1_21_R2/pom.xml +++ b/pathetic-provider/spigot/v1_21_R2/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../pom.xml + ../../../pom.xml v1_21_R2 diff --git a/pathetic-provider/spigot/v1_21_R3/pom.xml b/pathetic-provider/spigot/v1_21_R3/pom.xml index b2e510cc..924b63e7 100644 --- a/pathetic-provider/spigot/v1_21_R3/pom.xml +++ b/pathetic-provider/spigot/v1_21_R3/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../pom.xml + ../../../pom.xml v1_21_R3 diff --git a/pathetic-provider/spigot/v1_8/pom.xml b/pathetic-provider/spigot/v1_8/pom.xml index ce2119ce..48c87e16 100644 --- a/pathetic-provider/spigot/v1_8/pom.xml +++ b/pathetic-provider/spigot/v1_8/pom.xml @@ -6,7 +6,7 @@ pathetic-main de.metaphoriker 3.3.1 - ../../pom.xml + ../../../pom.xml 4.0.0 From 3cbdd2d79114854d9506fcd5278adf31925776f2 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Sat, 14 Dec 2024 07:38:01 +0100 Subject: [PATCH 09/39] feat: implemented a way to hook into the pathfinding process --- .../pathetic/api/pathing/Pathfinder.java | 8 ++++ .../api/pathing/hook/PathfinderHook.java | 14 ++++++ .../api/pathing/hook/PathfindingContext.java | 16 +++++++ .../pathetic/api/wrapper}/Depth.java | 2 +- .../pathing/pathfinder/AStarPathfinder.java | 10 +---- .../pathfinder/AbstractPathfinder.java | 44 ++++++++++++------- .../pathfinder/SpigotPathfindingHook.java | 20 +++++++++ 7 files changed, 88 insertions(+), 26 deletions(-) create mode 100644 pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/hook/PathfinderHook.java create mode 100644 pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/hook/PathfindingContext.java rename {pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder => pathetic-api/src/main/java/de/metaphoriker/pathetic/api/wrapper}/Depth.java (79%) create mode 100644 pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/SpigotPathfindingHook.java diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/Pathfinder.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/Pathfinder.java index ce146161..897de784 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/Pathfinder.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/Pathfinder.java @@ -4,6 +4,7 @@ import java.util.concurrent.CompletionStage; import javax.annotation.Nullable; +import de.metaphoriker.pathetic.api.pathing.hook.PathfinderHook; import de.metaphoriker.pathetic.api.pathing.result.PathState; import lombok.NonNull; import de.metaphoriker.pathetic.api.pathing.filter.PathFilter; @@ -62,4 +63,11 @@ CompletionStage findPath( * will be {@link PathState#ABORTED}. */ void abort(); + + /** + * Registers a {@link PathfinderHook} that will be called on every step of the pathfinding process. + * This can be used to modify the pathfinding process or to collect data. + * @param hook The hook to register. + */ + void registerPathfindingHook(PathfinderHook hook); } diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/hook/PathfinderHook.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/hook/PathfinderHook.java new file mode 100644 index 00000000..a2bf7e5e --- /dev/null +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/hook/PathfinderHook.java @@ -0,0 +1,14 @@ +package de.metaphoriker.pathetic.api.pathing.hook; + +/** + * Interface for hooks that are called during the pathfinding process. + */ +public interface PathfinderHook { + + /** + * Called on each step of the pathfinding process. + * + * @param pathfindingContext the context of the current pathfinding step + */ + void onPathfindingStep(PathfindingContext pathfindingContext); +} diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/hook/PathfindingContext.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/hook/PathfindingContext.java new file mode 100644 index 00000000..7eb0559e --- /dev/null +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/hook/PathfindingContext.java @@ -0,0 +1,16 @@ +package de.metaphoriker.pathetic.api.pathing.hook; + +import de.metaphoriker.pathetic.api.wrapper.Depth; +import lombok.Value; + +/** + * Context for the current step of the pathfinding process. + */ +@Value +public class PathfindingContext { + + /** + * The depth of the current pathfinding step. + */ + Depth depth; +} diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/Depth.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/wrapper/Depth.java similarity index 79% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/Depth.java rename to pathetic-api/src/main/java/de/metaphoriker/pathetic/api/wrapper/Depth.java index 7f19b203..1a3ebfbf 100644 --- a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/Depth.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/wrapper/Depth.java @@ -1,4 +1,4 @@ -package de.metaphoriker.pathetic.model.pathing.pathfinder; +package de.metaphoriker.pathetic.api.wrapper; import lombok.EqualsAndHashCode; import lombok.Getter; diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java b/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java index 66954fb0..567a435f 100644 --- a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java +++ b/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java @@ -4,6 +4,7 @@ import de.metaphoriker.pathetic.api.pathing.filter.PathFilter; import de.metaphoriker.pathetic.api.pathing.filter.PathFilterStage; import de.metaphoriker.pathetic.api.pathing.filter.PathValidationContext; +import de.metaphoriker.pathetic.api.wrapper.Depth; import de.metaphoriker.pathetic.api.wrapper.PathPosition; import de.metaphoriker.pathetic.api.wrapper.PathVector; import de.metaphoriker.pathetic.model.pathing.Node; @@ -11,7 +12,6 @@ import de.metaphoriker.pathetic.util.ExpiringHashMap; import de.metaphoriker.pathetic.util.GridRegionData; import de.metaphoriker.pathetic.util.Tuple3; -import de.metaphoriker.pathetic.util.WatchdogUtil; import java.util.*; import org.jheaps.tree.FibonacciHeap; @@ -41,18 +41,10 @@ protected void tick( List filters, List filterStages) { - tickWatchdogIfNeeded(depth); - evaluateNewNodes(nodeQueue, examinedPositions, currentNode, filters, filterStages); depth.increment(); } - private void tickWatchdogIfNeeded(Depth depth) { - if (depth.getDepth() % 500 == 0) { - WatchdogUtil.tickWatchdog(); - } - } - private void evaluateNewNodes( FibonacciHeap nodeQueue, Set examinedPositions, diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java b/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java index 75506b34..82d970d3 100644 --- a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java +++ b/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java @@ -1,19 +1,5 @@ package de.metaphoriker.pathetic.model.pathing.pathfinder; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Optional; -import java.util.Set; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CompletionStage; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import javax.annotation.Nullable; -import lombok.NonNull; -import org.jheaps.tree.FibonacciHeap; import de.metaphoriker.pathetic.BStatsHandler; import de.metaphoriker.pathetic.Pathetic; import de.metaphoriker.pathetic.api.event.EventPublisher; @@ -23,16 +9,33 @@ import de.metaphoriker.pathetic.api.pathing.configuration.PathfinderConfiguration; import de.metaphoriker.pathetic.api.pathing.filter.PathFilter; import de.metaphoriker.pathetic.api.pathing.filter.PathFilterStage; +import de.metaphoriker.pathetic.api.pathing.hook.PathfinderHook; +import de.metaphoriker.pathetic.api.pathing.hook.PathfindingContext; import de.metaphoriker.pathetic.api.pathing.result.Path; import de.metaphoriker.pathetic.api.pathing.result.PathState; import de.metaphoriker.pathetic.api.pathing.result.PathfinderResult; import de.metaphoriker.pathetic.api.snapshot.SnapshotManager; +import de.metaphoriker.pathetic.api.wrapper.Depth; import de.metaphoriker.pathetic.api.wrapper.PathPosition; import de.metaphoriker.pathetic.model.pathing.Node; import de.metaphoriker.pathetic.model.pathing.result.PathImpl; import de.metaphoriker.pathetic.model.pathing.result.PathfinderResultImpl; import de.metaphoriker.pathetic.model.snapshot.FailingSnapshotManager; import de.metaphoriker.pathetic.util.ErrorLogger; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import javax.annotation.Nullable; +import lombok.NonNull; +import org.jheaps.tree.FibonacciHeap; /** * The AbstractPathfinder class provides a skeletal implementation of the Pathfinder interface and @@ -59,6 +62,8 @@ abstract class AbstractPathfinder implements Pathfinder { Pathetic.addShutdownListener(PATHING_EXECUTOR::shutdown); } + private final Set pathfinderHooks = new HashSet<>(); + protected final PathfinderConfiguration pathfinderConfiguration; protected final SnapshotManager snapshotManager; @@ -111,9 +116,13 @@ public void abort() { this.aborted = true; } + @Override + public void registerPathfindingHook(PathfinderHook hook) { + pathfinderHooks.add(hook); + } + private boolean shouldSkipPathing(PathPosition start, PathPosition target) { - return !isSameEnvironment(start, target) - || isSameBlock(start, target); + return !isSameEnvironment(start, target) || isSameBlock(start, target); } private boolean isSameEnvironment(PathPosition start, PathPosition target) { @@ -162,6 +171,9 @@ private PathfinderResult executePathing( while (!nodeQueue.isEmpty() && depth.getDepth() <= pathfinderConfiguration.getMaxIterations()) { + pathfinderHooks.forEach( + hook -> hook.onPathfindingStep(new PathfindingContext(depth))); + if (isAborted()) return abortedPathing(fallbackNode); Node currentNode = nodeQueue.deleteMin().getValue(); diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/SpigotPathfindingHook.java b/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/SpigotPathfindingHook.java new file mode 100644 index 00000000..7ef2a07e --- /dev/null +++ b/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/SpigotPathfindingHook.java @@ -0,0 +1,20 @@ +package de.metaphoriker.pathetic.model.pathing.pathfinder; + +import de.metaphoriker.pathetic.api.pathing.hook.PathfinderHook; +import de.metaphoriker.pathetic.api.pathing.hook.PathfindingContext; +import de.metaphoriker.pathetic.api.wrapper.Depth; +import de.metaphoriker.pathetic.util.WatchdogUtil; + +public class SpigotPathfindingHook implements PathfinderHook { + + @Override + public void onPathfindingStep(PathfindingContext pathfindingContext) { + tickWatchdogIfNeeded(pathfindingContext.getDepth()); + } + + private void tickWatchdogIfNeeded(Depth depth) { + if (depth.getDepth() % 500 == 0) { + WatchdogUtil.tickWatchdog(); + } + } +} From d39a12fd95447cf1194cd0d0ceac9018af12245e Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Sat, 14 Dec 2024 07:47:00 +0100 Subject: [PATCH 10/39] refact: PathingStartFindEvent now also has the respective PathfinderConfiguration and bStats is now handled via listeners --- .../api/event/PathingStartFindEvent.java | 3 +++ .../de/metaphoriker/pathetic/Pathetic.java | 21 +++++++++++++++++++ .../pathfinder/AbstractPathfinder.java | 13 ++---------- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/PathingStartFindEvent.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/PathingStartFindEvent.java index 28f9ba82..2347fb41 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/PathingStartFindEvent.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/PathingStartFindEvent.java @@ -1,6 +1,8 @@ package de.metaphoriker.pathetic.api.event; import java.util.List; + +import de.metaphoriker.pathetic.api.pathing.configuration.PathfinderConfiguration; import lombok.Getter; import lombok.NonNull; import lombok.RequiredArgsConstructor; @@ -17,4 +19,5 @@ public class PathingStartFindEvent implements PathingEvent { @NonNull private final PathPosition target; @NonNull private final List filters; @NonNull private final List filterStages; + @NonNull private final PathfinderConfiguration pathfinderConfiguration; } diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/Pathetic.java b/pathetic-model/src/main/java/de/metaphoriker/pathetic/Pathetic.java index 433e8bf4..7649ccd4 100644 --- a/pathetic-model/src/main/java/de/metaphoriker/pathetic/Pathetic.java +++ b/pathetic-model/src/main/java/de/metaphoriker/pathetic/Pathetic.java @@ -5,6 +5,10 @@ import java.util.HashSet; import java.util.Properties; import java.util.Set; + +import com.google.common.eventbus.Subscribe; +import de.metaphoriker.pathetic.api.event.EventPublisher; +import de.metaphoriker.pathetic.api.event.PathingStartFindEvent; import lombok.Getter; import lombok.experimental.UtilityClass; import lombok.extern.slf4j.Slf4j; @@ -35,6 +39,7 @@ public static void initialize(JavaPlugin javaPlugin) { instance = javaPlugin; Bukkit.getPluginManager().registerEvents(new ChunkInvalidateListener(), javaPlugin); + registerPathingStartListener(); loadModelVersion(); if (BukkitVersionUtil.getVersion().isUnder(16, 0) @@ -67,6 +72,22 @@ public static void addShutdownListener(Runnable listener) { SHUTDOWN_LISTENERS.add(listener); } + private static void registerPathingStartListener() { + EventPublisher.registerListener( + new Object() { + @Subscribe + public void onPathingStart(PathingStartFindEvent event) { + pushToBStatsIfActivated(event); + } + + private void pushToBStatsIfActivated(PathingStartFindEvent event) { + if (event.getPathfinderConfiguration().isBStats()) { + BStatsHandler.increasePathCount(); + } + } + }); + } + private static void loadModelVersion() { try (InputStream inputStream = Pathetic.class.getClassLoader().getResourceAsStream(PROPERTIES_FILE)) { diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java b/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java index 82d970d3..02e237d4 100644 --- a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java +++ b/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java @@ -1,6 +1,5 @@ package de.metaphoriker.pathetic.model.pathing.pathfinder; -import de.metaphoriker.pathetic.BStatsHandler; import de.metaphoriker.pathetic.Pathetic; import de.metaphoriker.pathetic.api.event.EventPublisher; import de.metaphoriker.pathetic.api.event.PathingFinishedEvent; @@ -138,7 +137,6 @@ private CompletionStage initiatePathing( PathPosition target, List filters, List filterStages) { - pushToBStatsIfActivated(); return pathfinderConfiguration.isAsync() ? CompletableFuture.supplyAsync( () -> executePathingAndCleanupFilters(start, target, filters, filterStages), @@ -148,12 +146,6 @@ private CompletionStage initiatePathing( : initiateSyncPathing(start, target, filters, filterStages); } - private void pushToBStatsIfActivated() { - if (pathfinderConfiguration.isBStats()) { - BStatsHandler.increasePathCount(); - } - } - private PathfinderResult executePathing( PathPosition start, PathPosition target, @@ -171,8 +163,7 @@ private PathfinderResult executePathing( while (!nodeQueue.isEmpty() && depth.getDepth() <= pathfinderConfiguration.getMaxIterations()) { - pathfinderHooks.forEach( - hook -> hook.onPathfindingStep(new PathfindingContext(depth))); + pathfinderHooks.forEach(hook -> hook.onPathfindingStep(new PathfindingContext(depth))); if (isAborted()) return abortedPathing(fallbackNode); @@ -256,7 +247,7 @@ private void raiseStartEvent( List filters, List filterStages) { PathingStartFindEvent startEvent = - new PathingStartFindEvent(start, target, filters, filterStages); + new PathingStartFindEvent(start, target, filters, filterStages, pathfinderConfiguration); EventPublisher.raiseEvent(startEvent); } From 611f0802a4ad7f517bb7103b2c9ee85c0b05e0c2 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Sun, 15 Dec 2024 08:11:58 +0100 Subject: [PATCH 11/39] refact: pathetic-model is now pathetic-engine --- {pathetic-model => pathetic-engine}/pom.xml | 0 .../src/main/java/de/metaphoriker/pathetic/BStatsHandler.java | 0 .../src/main/java/de/metaphoriker/pathetic/Pathetic.java | 0 .../pathetic/bukkit/listeners/ChunkInvalidateListener.java | 0 .../main/java/de/metaphoriker/pathetic/model/pathing/Node.java | 0 .../java/de/metaphoriker/pathetic/model/pathing/Offset.java | 0 .../pathetic/model/pathing/pathfinder/AStarPathfinder.java | 0 .../pathetic/model/pathing/pathfinder/AbstractPathfinder.java | 0 .../model/pathing/pathfinder/SpigotPathfindingHook.java | 0 .../de/metaphoriker/pathetic/model/pathing/result/PathImpl.java | 0 .../pathetic/model/pathing/result/PathfinderResultImpl.java | 0 .../pathetic/model/snapshot/FailingSnapshotManager.java | 0 .../metaphoriker/pathetic/model/snapshot/world/WorldDomain.java | 0 .../java/de/metaphoriker/pathetic/util/BukkitVersionUtil.java | 0 .../src/main/java/de/metaphoriker/pathetic/util/ChunkUtils.java | 0 .../main/java/de/metaphoriker/pathetic/util/ComputingCache.java | 0 .../main/java/de/metaphoriker/pathetic/util/ErrorLogger.java | 0 .../java/de/metaphoriker/pathetic/util/ExpiringHashMap.java | 0 .../main/java/de/metaphoriker/pathetic/util/GridRegionData.java | 0 .../src/main/java/de/metaphoriker/pathetic/util/Tuple3.java | 0 .../main/java/de/metaphoriker/pathetic/util/WatchdogUtil.java | 0 .../src/main/resources/pathetic.properties | 0 pom.xml | 2 +- 23 files changed, 1 insertion(+), 1 deletion(-) rename {pathetic-model => pathetic-engine}/pom.xml (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/BStatsHandler.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/Pathetic.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/bukkit/listeners/ChunkInvalidateListener.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/model/pathing/Node.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/model/pathing/Offset.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/SpigotPathfindingHook.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/model/pathing/result/PathImpl.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/model/pathing/result/PathfinderResultImpl.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/model/snapshot/FailingSnapshotManager.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/model/snapshot/world/WorldDomain.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/util/BukkitVersionUtil.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/util/ChunkUtils.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/util/ComputingCache.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/util/ErrorLogger.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/util/ExpiringHashMap.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/util/GridRegionData.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/util/Tuple3.java (100%) rename {pathetic-model => pathetic-engine}/src/main/java/de/metaphoriker/pathetic/util/WatchdogUtil.java (100%) rename {pathetic-model => pathetic-engine}/src/main/resources/pathetic.properties (100%) diff --git a/pathetic-model/pom.xml b/pathetic-engine/pom.xml similarity index 100% rename from pathetic-model/pom.xml rename to pathetic-engine/pom.xml diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/BStatsHandler.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/BStatsHandler.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/BStatsHandler.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/BStatsHandler.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/Pathetic.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/Pathetic.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/Pathetic.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/Pathetic.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/bukkit/listeners/ChunkInvalidateListener.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/bukkit/listeners/ChunkInvalidateListener.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/bukkit/listeners/ChunkInvalidateListener.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/bukkit/listeners/ChunkInvalidateListener.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/Node.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/Node.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/Node.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/Node.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/Offset.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/Offset.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/Offset.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/Offset.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/SpigotPathfindingHook.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/SpigotPathfindingHook.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/SpigotPathfindingHook.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/SpigotPathfindingHook.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/result/PathImpl.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/result/PathImpl.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/result/PathImpl.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/result/PathImpl.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/result/PathfinderResultImpl.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/result/PathfinderResultImpl.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/model/pathing/result/PathfinderResultImpl.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/result/PathfinderResultImpl.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/snapshot/FailingSnapshotManager.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot/FailingSnapshotManager.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/model/snapshot/FailingSnapshotManager.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot/FailingSnapshotManager.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/model/snapshot/world/WorldDomain.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot/world/WorldDomain.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/model/snapshot/world/WorldDomain.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot/world/WorldDomain.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/util/BukkitVersionUtil.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/BukkitVersionUtil.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/util/BukkitVersionUtil.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/BukkitVersionUtil.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/util/ChunkUtils.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ChunkUtils.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/util/ChunkUtils.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ChunkUtils.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/util/ComputingCache.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ComputingCache.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/util/ComputingCache.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ComputingCache.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/util/ErrorLogger.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ErrorLogger.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/util/ErrorLogger.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ErrorLogger.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/util/ExpiringHashMap.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ExpiringHashMap.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/util/ExpiringHashMap.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ExpiringHashMap.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/util/GridRegionData.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/GridRegionData.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/util/GridRegionData.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/GridRegionData.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/util/Tuple3.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/Tuple3.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/util/Tuple3.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/Tuple3.java diff --git a/pathetic-model/src/main/java/de/metaphoriker/pathetic/util/WatchdogUtil.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/WatchdogUtil.java similarity index 100% rename from pathetic-model/src/main/java/de/metaphoriker/pathetic/util/WatchdogUtil.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/WatchdogUtil.java diff --git a/pathetic-model/src/main/resources/pathetic.properties b/pathetic-engine/src/main/resources/pathetic.properties similarity index 100% rename from pathetic-model/src/main/resources/pathetic.properties rename to pathetic-engine/src/main/resources/pathetic.properties diff --git a/pom.xml b/pom.xml index 74f28c81..de36ef3a 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ pathetic-api pathetic-example pathetic-mapping - pathetic-model + pathetic-engine pathetic-provider pathetic-provider/paper pathetic-provider/spigot From 33c306619854bffe5a88ecd33363f955755e8ca6 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Sun, 15 Dec 2024 08:20:04 +0100 Subject: [PATCH 12/39] refact: pathetic-model is now pathetic-engine --- pathetic-engine/pom.xml | 2 +- .../src/main/java/de/metaphoriker/pathetic/BStatsHandler.java | 2 +- pathetic-mapping/pom.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pathetic-engine/pom.xml b/pathetic-engine/pom.xml index 807000a0..7d55717c 100644 --- a/pathetic-engine/pom.xml +++ b/pathetic-engine/pom.xml @@ -9,7 +9,7 @@ 3.3.1 - pathetic-model + pathetic-engine 3.3.1 diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/BStatsHandler.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/BStatsHandler.java index 2e27e918..a777f382 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/BStatsHandler.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/BStatsHandler.java @@ -25,7 +25,7 @@ private void init(JavaPlugin javaPlugin) { paths = 0; return totalPaths; })); - metrics.addCustomChart(new SimplePie("pathetic-model_version", Pathetic::getModelVersion)); + metrics.addCustomChart(new SimplePie("pathetic-engine_version", Pathetic::getModelVersion)); } private void makeSureBStatsIsInitialized() { diff --git a/pathetic-mapping/pom.xml b/pathetic-mapping/pom.xml index a00fa6ff..33bc426f 100644 --- a/pathetic-mapping/pom.xml +++ b/pathetic-mapping/pom.xml @@ -33,7 +33,7 @@ de.metaphoriker - pathetic-model + pathetic-engine 3.3.1 compile From 5398136fce46112951b441caf93d33f7051bc5c5 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Sun, 15 Dec 2024 08:25:09 +0100 Subject: [PATCH 13/39] refact: SnapshotManager is now BlockProvider --- .../pathing/filter/PathValidationContext.java | 6 +++--- .../filter/filters/PassablePathFilter.java | 2 +- .../filter/filters/SolidGroundPathFilter.java | 12 ++++++------ .../pathing/filter/filters/WaterPathFilter.java | 6 +++--- .../{SnapshotManager.java => BlockProvider.java} | 4 ++-- .../listeners/ChunkInvalidateListener.java | 4 ++-- .../pathing/pathfinder/AStarPathfinder.java | 6 +++--- .../pathing/pathfinder/AbstractPathfinder.java | 16 ++++++++-------- ...hotManager.java => FailingBlockProvider.java} | 12 ++++++------ .../example/filter/DangerousMaterialsFilter.java | 6 +++--- 10 files changed, 37 insertions(+), 37 deletions(-) rename pathetic-api/src/main/java/de/metaphoriker/pathetic/api/snapshot/{SnapshotManager.java => BlockProvider.java} (87%) rename pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot/{FailingSnapshotManager.java => FailingBlockProvider.java} (94%) diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/PathValidationContext.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/PathValidationContext.java index 8f40b0f3..4b9206ed 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/PathValidationContext.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/PathValidationContext.java @@ -1,7 +1,7 @@ package de.metaphoriker.pathetic.api.pathing.filter; import lombok.Value; -import de.metaphoriker.pathetic.api.snapshot.SnapshotManager; +import de.metaphoriker.pathetic.api.snapshot.BlockProvider; import de.metaphoriker.pathetic.api.wrapper.PathPosition; /** @@ -40,9 +40,9 @@ public class PathValidationContext { PathPosition absoluteTarget; /** - * The snapshot manager provides access to world data, such as block information, in the context + * The BlockProvider provides access to world data, such as block information, in the context * of the pathfinding process. It is used to retrieve block data from the world at different * positions during path validation. */ - SnapshotManager snapshotManager; + BlockProvider blockProvider; } diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/PassablePathFilter.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/PassablePathFilter.java index c1465520..2fb5ef1b 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/PassablePathFilter.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/PassablePathFilter.java @@ -15,7 +15,7 @@ public class PassablePathFilter implements PathFilter { @Override public boolean filter(@NonNull PathValidationContext pathValidationContext) { return pathValidationContext - .getSnapshotManager() + .getBlockProvider() .getBlock(pathValidationContext.getPosition()) .isPassable(); } diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/SolidGroundPathFilter.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/SolidGroundPathFilter.java index 95ed64b9..b2f5c9da 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/SolidGroundPathFilter.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/SolidGroundPathFilter.java @@ -3,7 +3,7 @@ import lombok.NonNull; import de.metaphoriker.pathetic.api.pathing.filter.PathValidationContext; import de.metaphoriker.pathetic.api.pathing.filter.PathFilter; -import de.metaphoriker.pathetic.api.snapshot.SnapshotManager; +import de.metaphoriker.pathetic.api.snapshot.BlockProvider; import de.metaphoriker.pathetic.api.wrapper.PathBlock; /** @@ -13,13 +13,13 @@ public class SolidGroundPathFilter implements PathFilter { @Override public boolean filter(@NonNull PathValidationContext pathValidationContext) { - SnapshotManager snapshotManager = pathValidationContext.getSnapshotManager(); - PathBlock block = snapshotManager.getBlock(pathValidationContext.getPosition()); - return hasGround(block, snapshotManager); + BlockProvider blockProvider = pathValidationContext.getBlockProvider(); + PathBlock block = blockProvider.getBlock(pathValidationContext.getPosition()); + return hasGround(block, blockProvider); } - protected boolean hasGround(PathBlock block, SnapshotManager snapshotManager) { - PathBlock below = snapshotManager.getBlock(block.getPathPosition().add(0, -1, 0)); + protected boolean hasGround(PathBlock block, BlockProvider blockProvider) { + PathBlock below = blockProvider.getBlock(block.getPathPosition().add(0, -1, 0)); return below.isSolid(); } } diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/WaterPathFilter.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/WaterPathFilter.java index 2c399004..2db92063 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/WaterPathFilter.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/WaterPathFilter.java @@ -4,7 +4,7 @@ import org.bukkit.Material; import de.metaphoriker.pathetic.api.pathing.filter.PathValidationContext; import de.metaphoriker.pathetic.api.pathing.filter.PathFilter; -import de.metaphoriker.pathetic.api.snapshot.SnapshotManager; +import de.metaphoriker.pathetic.api.snapshot.BlockProvider; import de.metaphoriker.pathetic.api.wrapper.PathPosition; /** A PathFilter implementation that determines if a path is through water. */ @@ -12,10 +12,10 @@ public class WaterPathFilter implements PathFilter { @Override public boolean filter(@NonNull PathValidationContext pathValidationContext) { - SnapshotManager snapshotManager = pathValidationContext.getSnapshotManager(); + BlockProvider blockProvider = pathValidationContext.getBlockProvider(); PathPosition pathPosition = pathValidationContext.getPosition(); - return snapshotManager.getBlock(pathPosition).getBlockInformation().getMaterial() + return blockProvider.getBlock(pathPosition).getBlockInformation().getMaterial() == Material.WATER; } } diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/snapshot/SnapshotManager.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/snapshot/BlockProvider.java similarity index 87% rename from pathetic-api/src/main/java/de/metaphoriker/pathetic/api/snapshot/SnapshotManager.java rename to pathetic-api/src/main/java/de/metaphoriker/pathetic/api/snapshot/BlockProvider.java index 34471fd1..ae6e5daf 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/snapshot/SnapshotManager.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/snapshot/BlockProvider.java @@ -4,10 +4,10 @@ import de.metaphoriker.pathetic.api.wrapper.PathPosition; /** - * The SnapshotManager interface defines methods for retrieving block data snapshots at specific + * The BlockProvider interface defines methods for retrieving block data snapshots at specific * positions within a Minecraft world. */ -public interface SnapshotManager { +public interface BlockProvider { /** * Gets the block at the given position diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/bukkit/listeners/ChunkInvalidateListener.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/bukkit/listeners/ChunkInvalidateListener.java index 63e80bb0..f3485ae5 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/bukkit/listeners/ChunkInvalidateListener.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/bukkit/listeners/ChunkInvalidateListener.java @@ -13,7 +13,7 @@ import org.bukkit.event.block.BlockPistonRetractEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.LeavesDecayEvent; -import de.metaphoriker.pathetic.model.snapshot.FailingSnapshotManager; +import de.metaphoriker.pathetic.model.snapshot.FailingBlockProvider; public class ChunkInvalidateListener implements Listener { @@ -69,7 +69,7 @@ public void onDecay(LeavesDecayEvent event) { private void handleEvent(Block... blocks) { for (Block block : blocks) - FailingSnapshotManager.invalidateChunk( + FailingBlockProvider.invalidateChunk( block.getWorld().getUID(), block.getChunk().getX(), block.getChunk().getZ()); } } diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java index 567a435f..e9d136d8 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java @@ -126,7 +126,7 @@ private boolean isHeightDifferencePassable( int yDifference = from.getPosition().getBlockY() - to.getPosition().getBlockY(); Node neighbour3 = createNeighbourNode(from, vector1.add(new PathVector(0, yDifference, 0))); - return snapshotManager.getBlock(neighbour3.getPosition()).isPassable(); + return blockProvider.getBlock(neighbour3.getPosition()).isPassable(); } private Collection fetchValidNeighbours( @@ -207,7 +207,7 @@ private boolean doAllFiltersPass(List filters, Node node) { node.getParent() != null ? node.getParent().getPosition() : null, node.getStart(), node.getTarget(), - snapshotManager); + blockProvider); if (!filter.filter(context)) { return false; @@ -226,7 +226,7 @@ private boolean doAnyFilterStagePass(List filterStages, Node no node.getParent() != null ? node.getParent().getPosition() : null, node.getStart(), node.getTarget(), - snapshotManager))) { + blockProvider))) { return true; } } diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java index 02e237d4..9b1a6f2d 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java @@ -13,13 +13,13 @@ import de.metaphoriker.pathetic.api.pathing.result.Path; import de.metaphoriker.pathetic.api.pathing.result.PathState; import de.metaphoriker.pathetic.api.pathing.result.PathfinderResult; -import de.metaphoriker.pathetic.api.snapshot.SnapshotManager; +import de.metaphoriker.pathetic.api.snapshot.BlockProvider; import de.metaphoriker.pathetic.api.wrapper.Depth; import de.metaphoriker.pathetic.api.wrapper.PathPosition; import de.metaphoriker.pathetic.model.pathing.Node; import de.metaphoriker.pathetic.model.pathing.result.PathImpl; import de.metaphoriker.pathetic.model.pathing.result.PathfinderResultImpl; -import de.metaphoriker.pathetic.model.snapshot.FailingSnapshotManager; +import de.metaphoriker.pathetic.model.snapshot.FailingBlockProvider; import de.metaphoriker.pathetic.util.ErrorLogger; import java.util.ArrayList; import java.util.Collections; @@ -51,9 +51,9 @@ abstract class AbstractPathfinder implements Pathfinder { protected static final Set EMPTY_LINKED_HASHSET = Collections.unmodifiableSet(new LinkedHashSet<>(0)); - private static final SnapshotManager SIMPLE_SNAPSHOT_MANAGER = new FailingSnapshotManager(); - private static final SnapshotManager LOADING_SNAPSHOT_MANAGER = - new FailingSnapshotManager.RequestingSnapshotManager(); + private static final BlockProvider SIMPLE_SNAPSHOT_MANAGER = new FailingBlockProvider(); + private static final BlockProvider LOADING_SNAPSHOT_MANAGER = + new FailingBlockProvider.RequestingBlockProvider(); private static final ExecutorService PATHING_EXECUTOR = Executors.newWorkStealingPool(); @@ -64,16 +64,16 @@ abstract class AbstractPathfinder implements Pathfinder { private final Set pathfinderHooks = new HashSet<>(); protected final PathfinderConfiguration pathfinderConfiguration; - protected final SnapshotManager snapshotManager; + protected final BlockProvider blockProvider; private volatile boolean aborted; protected AbstractPathfinder(PathfinderConfiguration pathfinderConfiguration) { this.pathfinderConfiguration = pathfinderConfiguration; - this.snapshotManager = determineSnapshotManager(pathfinderConfiguration); + this.blockProvider = determineSnapshotManager(pathfinderConfiguration); } - private SnapshotManager determineSnapshotManager( + private BlockProvider determineSnapshotManager( PathfinderConfiguration pathfinderConfiguration) { return pathfinderConfiguration.isLoadingChunks() ? LOADING_SNAPSHOT_MANAGER diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot/FailingSnapshotManager.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot/FailingBlockProvider.java similarity index 94% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot/FailingSnapshotManager.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot/FailingBlockProvider.java index 82da0553..8466e1ae 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot/FailingSnapshotManager.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot/FailingBlockProvider.java @@ -10,7 +10,7 @@ import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.BlockState; -import de.metaphoriker.pathetic.api.snapshot.SnapshotManager; +import de.metaphoriker.pathetic.api.snapshot.BlockProvider; import de.metaphoriker.pathetic.api.wrapper.BlockInformation; import de.metaphoriker.pathetic.api.wrapper.PathBlock; import de.metaphoriker.pathetic.api.wrapper.PathEnvironment; @@ -22,11 +22,11 @@ import de.metaphoriker.pathetic.util.ErrorLogger; /** - * The FailingSnapshotManager class implements the SnapshotManager interface and provides a default + * The FailingBlockProvider class implements the BlockProvider interface and provides a default * implementation for retrieving block data snapshots from a Minecraft world. It utilizes chunk * snapshots to efficiently access block information, even in asynchronous contexts. * - *

FailingSnapshotManager also uses NMS (net.minecraft.server) utilities to bypass the Spigot + *

FailingBlockProvider also uses NMS (net.minecraft.server) utilities to bypass the Spigot * AsyncCatcher and fetch snapshots natively from an asynchronous context. This allows for more * flexible and efficient access to world data. * @@ -35,7 +35,7 @@ * are not loaded in the world. Developers using this manager should handle potential failures * gracefully. */ -public class FailingSnapshotManager implements SnapshotManager { +public class FailingBlockProvider implements BlockProvider { private static final Map SNAPSHOTS_MAP = new ConcurrentHashMap<>(); @@ -150,11 +150,11 @@ public PathBlock getHighestBlockAt(PathPosition position) { } /** - * The RequestingSnapshotManager is an inner class of FailingSnapshotManager, extending it. This + * The RequestingBlockProvider is an inner class of FailingBlockProvider, extending it. This * class provides additional functionality for ensuring that block data snapshots are available, * even if not initially loaded. */ - public static class RequestingSnapshotManager extends FailingSnapshotManager { + public static class RequestingBlockProvider extends FailingBlockProvider { private static ChunkSnapshot retrieveChunkSnapshot( PathEnvironment world, int chunkX, int chunkZ) { diff --git a/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/DangerousMaterialsFilter.java b/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/DangerousMaterialsFilter.java index 8f5c0efe..8a637f7d 100644 --- a/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/DangerousMaterialsFilter.java +++ b/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/DangerousMaterialsFilter.java @@ -4,7 +4,7 @@ import org.bukkit.Material; import de.metaphoriker.pathetic.api.pathing.filter.PathFilter; import de.metaphoriker.pathetic.api.pathing.filter.PathValidationContext; -import de.metaphoriker.pathetic.api.snapshot.SnapshotManager; +import de.metaphoriker.pathetic.api.snapshot.BlockProvider; import de.metaphoriker.pathetic.api.wrapper.PathBlock; import de.metaphoriker.pathetic.api.wrapper.PathPosition; @@ -40,12 +40,12 @@ public DangerousMaterialsFilter(EnumSet dangerousMaterials, int radius @Override public boolean filter(PathValidationContext context) { PathPosition position = context.getPosition(); - SnapshotManager snapshotManager = context.getSnapshotManager(); + BlockProvider blockProvider = context.getBlockProvider(); for (int x = -radius; x <= radius; x++) { for (int y = -radius; y <= radius; y++) { for (int z = -radius; z <= radius; z++) { - PathBlock block = snapshotManager.getBlock(position.add(x, y, z)); + PathBlock block = blockProvider.getBlock(position.add(x, y, z)); if (block != null && dangerousMaterials.contains(block.getBlockInformation().getMaterial())) { return false; // The node is near a dangerous material, so it's excluded. From 40fc3e32a6ac244ba1879ddb5171a2eeda2b586f Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Sun, 15 Dec 2024 09:15:03 +0100 Subject: [PATCH 14/39] chore: major refactorings This change includes: - pathetic-mapper is no more and was replaced with a specific module pathetic-bukkit - pathetic-model is now pathetic-engine - pathetic-engine is now independent of the bukkit api - the required shutdown process was replaced with a shutdown hook - the PathfinderFactory is now part of the pathetic-api and has to be instantiated with the respective PathfinderInitializer --- .../api/pathing/PathfinderFactory.java | 30 ++++++ .../api/pathing/PathfinderInitializer.java | 17 ++++ {pathetic-mapping => pathetic-bukkit}/pom.xml | 58 ++++++++++-- .../pathetic/bukkit}/BStatsHandler.java | 9 +- .../pathetic/bukkit/PatheticBukkit.java | 67 ++++++++++++++ .../factory/BukkitPathfinderFactory.java | 33 +++++++ .../factory/BukkitPathfinderInitializer.java | 14 +++ .../bukkit/hook}/SpigotPathfindingHook.java | 4 +- .../listener}/ChunkInvalidateListener.java | 4 +- .../pathetic/bukkit/mapper}/BukkitMapper.java | 2 +- .../provider}/FailingBlockProvider.java | 32 +++---- .../bukkit/provider}/world/WorldDomain.java | 4 +- .../bukkit}/util/BukkitVersionUtil.java | 7 +- .../pathetic/bukkit/util/ChunkUtil.java | 10 +- .../pathetic/bukkit}/util/WatchdogUtil.java | 3 +- pathetic-engine/pom.xml | 42 --------- .../de/metaphoriker/pathetic/Pathetic.java | 92 ++----------------- .../{model/pathing => engine}/Node.java | 2 +- .../{model/pathing => engine}/Offset.java | 2 +- .../pathfinder/AStarPathfinder.java | 12 ++- .../pathfinder/AbstractPathfinder.java | 26 +----- .../pathing => engine}/result/PathImpl.java | 2 +- .../result/PathfinderResultImpl.java | 2 +- .../pathetic/util/ErrorLogger.java | 3 +- .../src/main/resources/pathetic.properties | 2 +- pathetic-example/pom.xml | 2 +- .../pathetic/example/PatheticPlugin.java | 23 +++-- .../example/command/PatheticCommand.java | 3 +- .../pathetic/mapping/PatheticFacade.java | 29 ------ .../pathetic/mapping/PathfinderFactory.java | 27 ------ pom.xml | 2 +- 31 files changed, 291 insertions(+), 274 deletions(-) create mode 100644 pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/PathfinderFactory.java create mode 100644 pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/PathfinderInitializer.java rename {pathetic-mapping => pathetic-bukkit}/pom.xml (51%) rename {pathetic-engine/src/main/java/de/metaphoriker/pathetic => pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit}/BStatsHandler.java (82%) create mode 100644 pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/PatheticBukkit.java create mode 100644 pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/factory/BukkitPathfinderFactory.java create mode 100644 pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/factory/BukkitPathfinderInitializer.java rename {pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder => pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/hook}/SpigotPathfindingHook.java (82%) rename {pathetic-engine/src/main/java/de/metaphoriker/pathetic/bukkit/listeners => pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/listener}/ChunkInvalidateListener.java (94%) rename {pathetic-mapping/src/main/java/de/metaphoriker/pathetic/mapping/bukkit => pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/mapper}/BukkitMapper.java (98%) rename {pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot => pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider}/FailingBlockProvider.java (93%) rename {pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot => pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider}/world/WorldDomain.java (93%) rename {pathetic-engine/src/main/java/de/metaphoriker/pathetic => pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit}/util/BukkitVersionUtil.java (97%) rename pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ChunkUtils.java => pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/ChunkUtil.java (92%) rename {pathetic-engine/src/main/java/de/metaphoriker/pathetic => pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit}/util/WatchdogUtil.java (90%) rename pathetic-engine/src/main/java/de/metaphoriker/pathetic/{model/pathing => engine}/Node.java (98%) rename pathetic-engine/src/main/java/de/metaphoriker/pathetic/{model/pathing => engine}/Offset.java (97%) rename pathetic-engine/src/main/java/de/metaphoriker/pathetic/{model/pathing => engine}/pathfinder/AStarPathfinder.java (95%) rename pathetic-engine/src/main/java/de/metaphoriker/pathetic/{model/pathing => engine}/pathfinder/AbstractPathfinder.java (91%) rename pathetic-engine/src/main/java/de/metaphoriker/pathetic/{model/pathing => engine}/result/PathImpl.java (98%) rename pathetic-engine/src/main/java/de/metaphoriker/pathetic/{model/pathing => engine}/result/PathfinderResultImpl.java (94%) delete mode 100644 pathetic-mapping/src/main/java/de/metaphoriker/pathetic/mapping/PatheticFacade.java delete mode 100644 pathetic-mapping/src/main/java/de/metaphoriker/pathetic/mapping/PathfinderFactory.java diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/PathfinderFactory.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/PathfinderFactory.java new file mode 100644 index 00000000..8b4cc2fd --- /dev/null +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/PathfinderFactory.java @@ -0,0 +1,30 @@ +package de.metaphoriker.pathetic.api.pathing; + +import de.metaphoriker.pathetic.api.pathing.configuration.PathfinderConfiguration; + +/** + * A factory class for creating {@link Pathfinder} instances. + * + * @param The type of {@link PathfinderInitializer} used to initialize the pathfinder. + */ +public abstract class PathfinderFactory { + + protected final I initializer; + + /** + * Creates a new {@link PathfinderFactory} with the given initializer. + * + * @param initializer The initializer to use for initializing the pathfinder. + */ + public PathfinderFactory(I initializer) { + this.initializer = initializer; + } + + /** + * Creates a new {@link Pathfinder} instance with the given configuration. + * + * @param configuration The configuration for the pathfinder. + * @return A new {@link Pathfinder} instance. + */ + public abstract Pathfinder createPathfinder(PathfinderConfiguration configuration); +} diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/PathfinderInitializer.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/PathfinderInitializer.java new file mode 100644 index 00000000..4094f3bd --- /dev/null +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/PathfinderInitializer.java @@ -0,0 +1,17 @@ +package de.metaphoriker.pathetic.api.pathing; + +import de.metaphoriker.pathetic.api.pathing.configuration.PathfinderConfiguration; + +/** + * An interface for initializing {@link Pathfinder} instances. + */ +public interface PathfinderInitializer { + + /** + * Initializes the given {@link Pathfinder} with the given {@link PathfinderConfiguration}. + * + * @param pathfinder The pathfinder to initialize. + * @param configuration The configuration for the pathfinder. + */ + void initialize(Pathfinder pathfinder, PathfinderConfiguration configuration); +} diff --git a/pathetic-mapping/pom.xml b/pathetic-bukkit/pom.xml similarity index 51% rename from pathetic-mapping/pom.xml rename to pathetic-bukkit/pom.xml index 33bc426f..1eb9c6f7 100644 --- a/pathetic-mapping/pom.xml +++ b/pathetic-bukkit/pom.xml @@ -2,22 +2,37 @@ + 4.0.0 - pathetic-main de.metaphoriker + pathetic-main 3.3.1 - 4.0.0 - pathetic-mapping + pathetic-bukkit 3.3.1 + + + src/main/resources + true + + + org.apache.maven.plugins maven-shade-plugin 3.5.1 + + + + org.bstats + de.metaphoriker.pathetic.shaded.bstats + + + package @@ -27,16 +42,18 @@ + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + - - de.metaphoriker - pathetic-engine - 3.3.1 - compile - org.spigotmc spigot-api @@ -45,6 +62,27 @@ org.projectlombok lombok + + org.slf4j + slf4j-api + + + org.bstats + bstats-bukkit + 3.1.0 + compile + + + de.metaphoriker + pathetic-engine + 3.3.1 + compile + + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + - diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/BStatsHandler.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/BStatsHandler.java similarity index 82% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/BStatsHandler.java rename to pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/BStatsHandler.java index a777f382..1e197810 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/BStatsHandler.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/BStatsHandler.java @@ -1,5 +1,6 @@ -package de.metaphoriker.pathetic; +package de.metaphoriker.pathetic.bukkit; +import de.metaphoriker.pathetic.Pathetic; import lombok.experimental.UtilityClass; import org.bstats.bukkit.Metrics; import org.bstats.charts.SimplePie; @@ -25,14 +26,14 @@ private void init(JavaPlugin javaPlugin) { paths = 0; return totalPaths; })); - metrics.addCustomChart(new SimplePie("pathetic-engine_version", Pathetic::getModelVersion)); + metrics.addCustomChart(new SimplePie("pathetic-engine_version", Pathetic::getEngineVersion)); } private void makeSureBStatsIsInitialized() { - if (!Pathetic.isInitialized()) + if (!PatheticBukkit.isInitialized()) throw new IllegalStateException("Pathetic has not been initialized yet"); - init(Pathetic.getPluginInstance()); + init(PatheticBukkit.getPluginInstance()); } public synchronized void increasePathCount() { diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/PatheticBukkit.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/PatheticBukkit.java new file mode 100644 index 00000000..994404c8 --- /dev/null +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/PatheticBukkit.java @@ -0,0 +1,67 @@ +package de.metaphoriker.pathetic.bukkit; + +import com.google.common.eventbus.Subscribe; +import de.metaphoriker.pathetic.Pathetic; +import de.metaphoriker.pathetic.api.event.EventPublisher; +import de.metaphoriker.pathetic.api.event.PathingStartFindEvent; +import de.metaphoriker.pathetic.bukkit.listener.ChunkInvalidateListener; +import de.metaphoriker.pathetic.bukkit.util.BukkitVersionUtil; +import de.metaphoriker.pathetic.util.ErrorLogger; +import lombok.experimental.UtilityClass; +import lombok.extern.slf4j.Slf4j; +import org.bukkit.Bukkit; +import org.bukkit.plugin.java.JavaPlugin; + +@Slf4j +@UtilityClass +public class PatheticBukkit { + + private static JavaPlugin instance; + + /** + * @throws IllegalStateException If an attempt is made to initialize more than 1 time + */ + public static void initialize(JavaPlugin javaPlugin) { + + if (instance != null) throw ErrorLogger.logFatalError("Can't be initialized twice"); + + instance = javaPlugin; + Bukkit.getPluginManager().registerEvents(new ChunkInvalidateListener(), javaPlugin); + + registerPathingStartListener(); + Pathetic.loadEngineVersion(); + + if (BukkitVersionUtil.getVersion().isUnder(16, 0) + || BukkitVersionUtil.getVersion().isEqual(BukkitVersionUtil.Version.of(16, 0))) { + log.warn( + "Pathetic is currently running in a version older than or equal to 1.16. " + + "Some functionalities might not be accessible, such as accessing the BlockState of blocks."); + } + + log.debug("Pathetic v{} initialized", Pathetic.getEngineVersion()); + } + + public static boolean isInitialized() { + return instance != null; + } + + public static JavaPlugin getPluginInstance() { + return instance; + } + + private static void registerPathingStartListener() { + EventPublisher.registerListener( + new Object() { + @Subscribe + public void onPathingStart(PathingStartFindEvent event) { + pushToBStatsIfActivated(event); + } + + private void pushToBStatsIfActivated(PathingStartFindEvent event) { + if (event.getPathfinderConfiguration().isBStats()) { + BStatsHandler.increasePathCount(); + } + } + }); + } +} diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/factory/BukkitPathfinderFactory.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/factory/BukkitPathfinderFactory.java new file mode 100644 index 00000000..d3bc2dca --- /dev/null +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/factory/BukkitPathfinderFactory.java @@ -0,0 +1,33 @@ +package de.metaphoriker.pathetic.bukkit.factory; + +import de.metaphoriker.pathetic.api.pathing.Pathfinder; +import de.metaphoriker.pathetic.api.pathing.PathfinderFactory; +import de.metaphoriker.pathetic.api.pathing.configuration.PathfinderConfiguration; +import de.metaphoriker.pathetic.api.snapshot.BlockProvider; +import de.metaphoriker.pathetic.bukkit.provider.FailingBlockProvider; +import de.metaphoriker.pathetic.engine.pathfinder.AStarPathfinder; + +public class BukkitPathfinderFactory extends PathfinderFactory { + + /** + * Creates a new {@link PathfinderFactory} with the given initializer. + * + * @param initializer The initializer to use for initializing the pathfinder. + */ + public BukkitPathfinderFactory(BukkitPathfinderInitializer initializer) { + super(initializer); + } + + @Override + public Pathfinder createPathfinder(PathfinderConfiguration configuration) { + Pathfinder pathfinder = new AStarPathfinder(getBlockProvider(configuration), configuration); + initializer.initialize(pathfinder, configuration); + return pathfinder; + } + + private BlockProvider getBlockProvider(PathfinderConfiguration configuration) { + return configuration.isLoadingChunks() + ? new FailingBlockProvider.RequestingBlockProvider() + : new FailingBlockProvider(); + } +} diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/factory/BukkitPathfinderInitializer.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/factory/BukkitPathfinderInitializer.java new file mode 100644 index 00000000..66c4f2f4 --- /dev/null +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/factory/BukkitPathfinderInitializer.java @@ -0,0 +1,14 @@ +package de.metaphoriker.pathetic.bukkit.factory; + +import de.metaphoriker.pathetic.api.pathing.Pathfinder; +import de.metaphoriker.pathetic.api.pathing.PathfinderInitializer; +import de.metaphoriker.pathetic.api.pathing.configuration.PathfinderConfiguration; +import de.metaphoriker.pathetic.bukkit.hook.SpigotPathfindingHook; + +public class BukkitPathfinderInitializer implements PathfinderInitializer { + + @Override + public void initialize(Pathfinder pathfinder, PathfinderConfiguration configuration) { + pathfinder.registerPathfindingHook(new SpigotPathfindingHook()); + } +} diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/SpigotPathfindingHook.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/hook/SpigotPathfindingHook.java similarity index 82% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/SpigotPathfindingHook.java rename to pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/hook/SpigotPathfindingHook.java index 7ef2a07e..b1225389 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/SpigotPathfindingHook.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/hook/SpigotPathfindingHook.java @@ -1,9 +1,9 @@ -package de.metaphoriker.pathetic.model.pathing.pathfinder; +package de.metaphoriker.pathetic.bukkit.hook; import de.metaphoriker.pathetic.api.pathing.hook.PathfinderHook; import de.metaphoriker.pathetic.api.pathing.hook.PathfindingContext; import de.metaphoriker.pathetic.api.wrapper.Depth; -import de.metaphoriker.pathetic.util.WatchdogUtil; +import de.metaphoriker.pathetic.bukkit.util.WatchdogUtil; public class SpigotPathfindingHook implements PathfinderHook { diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/bukkit/listeners/ChunkInvalidateListener.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/listener/ChunkInvalidateListener.java similarity index 94% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/bukkit/listeners/ChunkInvalidateListener.java rename to pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/listener/ChunkInvalidateListener.java index f3485ae5..3e6a09b7 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/bukkit/listeners/ChunkInvalidateListener.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/listener/ChunkInvalidateListener.java @@ -1,5 +1,6 @@ -package de.metaphoriker.pathetic.bukkit.listeners; +package de.metaphoriker.pathetic.bukkit.listener; +import de.metaphoriker.pathetic.bukkit.provider.FailingBlockProvider; import org.bukkit.block.Block; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -13,7 +14,6 @@ import org.bukkit.event.block.BlockPistonRetractEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.LeavesDecayEvent; -import de.metaphoriker.pathetic.model.snapshot.FailingBlockProvider; public class ChunkInvalidateListener implements Listener { diff --git a/pathetic-mapping/src/main/java/de/metaphoriker/pathetic/mapping/bukkit/BukkitMapper.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/mapper/BukkitMapper.java similarity index 98% rename from pathetic-mapping/src/main/java/de/metaphoriker/pathetic/mapping/bukkit/BukkitMapper.java rename to pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/mapper/BukkitMapper.java index ad41c368..6b666ba1 100644 --- a/pathetic-mapping/src/main/java/de/metaphoriker/pathetic/mapping/bukkit/BukkitMapper.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/mapper/BukkitMapper.java @@ -1,4 +1,4 @@ -package de.metaphoriker.pathetic.mapping.bukkit; +package de.metaphoriker.pathetic.bukkit.mapper; import java.util.Arrays; import lombok.NonNull; diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot/FailingBlockProvider.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java similarity index 93% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot/FailingBlockProvider.java rename to pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java index 8466e1ae..c5934aba 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot/FailingBlockProvider.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java @@ -1,5 +1,15 @@ -package de.metaphoriker.pathetic.model.snapshot; +package de.metaphoriker.pathetic.bukkit.provider; +import de.metaphoriker.pathetic.api.snapshot.BlockProvider; +import de.metaphoriker.pathetic.api.wrapper.BlockInformation; +import de.metaphoriker.pathetic.api.wrapper.PathBlock; +import de.metaphoriker.pathetic.api.wrapper.PathEnvironment; +import de.metaphoriker.pathetic.api.wrapper.PathPosition; +import de.metaphoriker.pathetic.bukkit.provider.world.WorldDomain; +import de.metaphoriker.pathetic.bukkit.util.BukkitVersionUtil; +import de.metaphoriker.pathetic.bukkit.util.ChunkUtil; +import de.metaphoriker.pathetic.provider.ChunkDataProviderResolver; +import de.metaphoriker.pathetic.util.ErrorLogger; import java.util.Map; import java.util.Optional; import java.util.UUID; @@ -10,16 +20,6 @@ import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.BlockState; -import de.metaphoriker.pathetic.api.snapshot.BlockProvider; -import de.metaphoriker.pathetic.api.wrapper.BlockInformation; -import de.metaphoriker.pathetic.api.wrapper.PathBlock; -import de.metaphoriker.pathetic.api.wrapper.PathEnvironment; -import de.metaphoriker.pathetic.api.wrapper.PathPosition; -import de.metaphoriker.pathetic.model.snapshot.world.WorldDomain; -import de.metaphoriker.pathetic.provider.ChunkDataProviderResolver; -import de.metaphoriker.pathetic.util.BukkitVersionUtil; -import de.metaphoriker.pathetic.util.ChunkUtils; -import de.metaphoriker.pathetic.util.ErrorLogger; /** * The FailingBlockProvider class implements the BlockProvider interface and provides a default @@ -50,7 +50,7 @@ public class FailingBlockProvider implements BlockProvider { public static void invalidateChunk(UUID worldUUID, int chunkX, int chunkZ) { if (SNAPSHOTS_MAP.containsKey(worldUUID)) { WorldDomain worldDomain = SNAPSHOTS_MAP.get(worldUUID); - long chunkKey = ChunkUtils.getChunkKey(chunkX, chunkZ); + long chunkKey = ChunkUtil.getChunkKey(chunkX, chunkZ); worldDomain.removeSnapshot(chunkKey); } } @@ -66,7 +66,7 @@ private static Optional fetchBlock(PathPosition position) { int z = position.getBlockZ() - chunkZ * 16; Material material = - ChunkUtils.getMaterial(chunkSnapshotOptional.get(), x, position.getBlockY(), z); + ChunkUtil.getMaterial(chunkSnapshotOptional.get(), x, position.getBlockY(), z); BlockState blockState = CHUNK_DATA_PROVIDER_RESOLVER .getChunkDataProvider() @@ -84,7 +84,7 @@ private static Optional getChunkSnapshot(PathPosition position) { if (SNAPSHOTS_MAP.containsKey(position.getPathEnvironment().getUuid())) { WorldDomain worldDomain = SNAPSHOTS_MAP.get(position.getPathEnvironment().getUuid()); - long chunkKey = ChunkUtils.getChunkKey(chunkX, chunkZ); + long chunkKey = ChunkUtil.getChunkKey(chunkX, chunkZ); Optional snapshot = worldDomain.getSnapshot(chunkKey); if (snapshot.isPresent()) return snapshot; @@ -111,7 +111,7 @@ private static ChunkSnapshot processChunkSnapshot( WorldDomain worldDomain = SNAPSHOTS_MAP.computeIfAbsent( position.getPathEnvironment().getUuid(), uuid -> new WorldDomain()); - worldDomain.addSnapshot(ChunkUtils.getChunkKey(chunkX, chunkZ), chunkSnapshot); + worldDomain.addSnapshot(ChunkUtil.getChunkKey(chunkX, chunkZ), chunkSnapshot); return chunkSnapshot; } @@ -191,7 +191,7 @@ private static PathBlock ensureBlock(PathPosition pathPosition) { int x = pathPosition.getBlockX() - chunkX * 16; int z = pathPosition.getBlockZ() - chunkZ * 16; - Material material = ChunkUtils.getMaterial(chunkSnapshot, x, pathPosition.getBlockY(), z); + Material material = ChunkUtil.getMaterial(chunkSnapshot, x, pathPosition.getBlockY(), z); BlockState blockState = CHUNK_DATA_PROVIDER_RESOLVER .getChunkDataProvider() diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot/world/WorldDomain.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/world/WorldDomain.java similarity index 93% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot/world/WorldDomain.java rename to pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/world/WorldDomain.java index 94fd0dfd..29cb2644 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/snapshot/world/WorldDomain.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/world/WorldDomain.java @@ -1,9 +1,9 @@ -package de.metaphoriker.pathetic.model.snapshot.world; +package de.metaphoriker.pathetic.bukkit.provider.world; +import de.metaphoriker.pathetic.util.ExpiringHashMap; import java.util.Map; import java.util.Optional; import org.bukkit.ChunkSnapshot; -import de.metaphoriker.pathetic.util.ExpiringHashMap; public class WorldDomain { diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/BukkitVersionUtil.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/BukkitVersionUtil.java similarity index 97% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/BukkitVersionUtil.java rename to pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/BukkitVersionUtil.java index e5f7a414..23058f3c 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/BukkitVersionUtil.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/BukkitVersionUtil.java @@ -1,12 +1,11 @@ -package de.metaphoriker.pathetic.util; +package de.metaphoriker.pathetic.bukkit.util; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import lombok.Getter; import lombok.experimental.UtilityClass; import org.bukkit.Bukkit; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - @UtilityClass public class BukkitVersionUtil { diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ChunkUtils.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/ChunkUtil.java similarity index 92% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ChunkUtils.java rename to pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/ChunkUtil.java index 29687271..080f10c6 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ChunkUtils.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/ChunkUtil.java @@ -1,15 +1,15 @@ -package de.metaphoriker.pathetic.util; +package de.metaphoriker.pathetic.bukkit.util; +import de.metaphoriker.pathetic.util.ErrorLogger; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import lombok.SneakyThrows; import lombok.experimental.UtilityClass; import org.bukkit.ChunkSnapshot; import org.bukkit.Material; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - @UtilityClass -public class ChunkUtils { +public class ChunkUtil { private static Method materialMethod; private static Method blockTypeMethod; diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/WatchdogUtil.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/WatchdogUtil.java similarity index 90% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/WatchdogUtil.java rename to pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/WatchdogUtil.java index aaa593ef..237ebf2b 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/WatchdogUtil.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/WatchdogUtil.java @@ -1,5 +1,6 @@ -package de.metaphoriker.pathetic.util; +package de.metaphoriker.pathetic.bukkit.util; +import de.metaphoriker.pathetic.util.ErrorLogger; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import lombok.experimental.UtilityClass; diff --git a/pathetic-engine/pom.xml b/pathetic-engine/pom.xml index 7d55717c..7cb9a41d 100644 --- a/pathetic-engine/pom.xml +++ b/pathetic-engine/pom.xml @@ -13,13 +13,6 @@ 3.3.1 - - - src/main/resources - true - - - org.apache.maven.plugins @@ -27,10 +20,6 @@ 3.5.1 - - org.bstats - de.metaphoriker.pathetic.shaded.bstats - org.jheaps de.metaphoriker.pathetic.shaded.jheaps @@ -60,29 +49,10 @@ - - org.apache.maven.plugins - maven-compiler-plugin - - 8 - 8 - - - - - spigot-repo - https://hub.spigotmc.org/nexus/content/repositories/snapshots/ - - - - - org.spigotmc - spigot-api - org.projectlombok lombok @@ -103,18 +73,6 @@ 3.3.1 compile - - de.metaphoriker - pathetic-provider - 3.3.1 - compile - - - org.bstats - bstats-bukkit - 3.1.0 - compile - org.jheaps jheaps diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/Pathetic.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/Pathetic.java index 7649ccd4..6b20f42a 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/Pathetic.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/Pathetic.java @@ -1,102 +1,30 @@ package de.metaphoriker.pathetic; +import de.metaphoriker.pathetic.util.ErrorLogger; +import lombok.Getter; +import lombok.experimental.UtilityClass; + import java.io.IOException; import java.io.InputStream; -import java.util.HashSet; import java.util.Properties; -import java.util.Set; - -import com.google.common.eventbus.Subscribe; -import de.metaphoriker.pathetic.api.event.EventPublisher; -import de.metaphoriker.pathetic.api.event.PathingStartFindEvent; -import lombok.Getter; -import lombok.experimental.UtilityClass; -import lombok.extern.slf4j.Slf4j; -import org.bukkit.Bukkit; -import org.bukkit.plugin.java.JavaPlugin; -import de.metaphoriker.pathetic.bukkit.listeners.ChunkInvalidateListener; -import de.metaphoriker.pathetic.util.BukkitVersionUtil; -import de.metaphoriker.pathetic.util.ErrorLogger; @UtilityClass -@Slf4j public class Pathetic { private static final String PROPERTIES_FILE = "pathetic.properties"; - private static final Set SHUTDOWN_LISTENERS = new HashSet<>(); - - private static JavaPlugin instance; - @Getter private static String modelVersion; - - /** - * @throws IllegalStateException If an attempt is made to initialize more than 1 time - */ - public static void initialize(JavaPlugin javaPlugin) { - - if (instance != null) throw ErrorLogger.logFatalError("Can't be initialized twice"); - - instance = javaPlugin; - Bukkit.getPluginManager().registerEvents(new ChunkInvalidateListener(), javaPlugin); - - registerPathingStartListener(); - loadModelVersion(); - - if (BukkitVersionUtil.getVersion().isUnder(16, 0) - || BukkitVersionUtil.getVersion().isEqual(BukkitVersionUtil.Version.of(16, 0))) { - log.warn( - "Pathetic is currently running in a version older than or equal to 1.16. " - + "Some functionalities might not be accessible, such as accessing the BlockState of blocks."); - } - - log.debug("Pathetic v{} initialized", modelVersion); - } - - public static void shutdown() { - SHUTDOWN_LISTENERS.forEach(Runnable::run); - SHUTDOWN_LISTENERS.clear(); - - instance = null; - log.debug("Pathetic shutdown"); - } - - public static boolean isInitialized() { - return instance != null; - } - - public static JavaPlugin getPluginInstance() { - return instance; - } - - public static void addShutdownListener(Runnable listener) { - SHUTDOWN_LISTENERS.add(listener); - } - - private static void registerPathingStartListener() { - EventPublisher.registerListener( - new Object() { - @Subscribe - public void onPathingStart(PathingStartFindEvent event) { - pushToBStatsIfActivated(event); - } - - private void pushToBStatsIfActivated(PathingStartFindEvent event) { - if (event.getPathfinderConfiguration().isBStats()) { - BStatsHandler.increasePathCount(); - } - } - }); - } + @Getter + private static String engineVersion; - private static void loadModelVersion() { + public static void loadEngineVersion() { try (InputStream inputStream = - Pathetic.class.getClassLoader().getResourceAsStream(PROPERTIES_FILE)) { + Pathetic.class.getClassLoader().getResourceAsStream(PROPERTIES_FILE)) { Properties properties = new Properties(); properties.load(inputStream); - modelVersion = properties.getProperty("model.version"); + engineVersion = properties.getProperty("engine.version"); } catch (IOException e) { - throw ErrorLogger.logFatalError("Error loading model version", e); + throw ErrorLogger.logFatalError("Error loading engine version", e); } } } diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/Node.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/Node.java similarity index 98% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/Node.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/Node.java index f5a296b0..80146d76 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/Node.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/Node.java @@ -1,4 +1,4 @@ -package de.metaphoriker.pathetic.model.pathing; +package de.metaphoriker.pathetic.engine; import lombok.EqualsAndHashCode; import lombok.Getter; diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/Offset.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/Offset.java similarity index 97% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/Offset.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/Offset.java index e16310ea..5153431b 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/Offset.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/Offset.java @@ -1,4 +1,4 @@ -package de.metaphoriker.pathetic.model.pathing; +package de.metaphoriker.pathetic.engine; import java.util.stream.Stream; import lombok.AllArgsConstructor; diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java similarity index 95% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java index e9d136d8..1e3d95c5 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AStarPathfinder.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java @@ -1,14 +1,15 @@ -package de.metaphoriker.pathetic.model.pathing.pathfinder; +package de.metaphoriker.pathetic.engine.pathfinder; import de.metaphoriker.pathetic.api.pathing.configuration.PathfinderConfiguration; import de.metaphoriker.pathetic.api.pathing.filter.PathFilter; import de.metaphoriker.pathetic.api.pathing.filter.PathFilterStage; import de.metaphoriker.pathetic.api.pathing.filter.PathValidationContext; +import de.metaphoriker.pathetic.api.snapshot.BlockProvider; import de.metaphoriker.pathetic.api.wrapper.Depth; import de.metaphoriker.pathetic.api.wrapper.PathPosition; import de.metaphoriker.pathetic.api.wrapper.PathVector; -import de.metaphoriker.pathetic.model.pathing.Node; -import de.metaphoriker.pathetic.model.pathing.Offset; +import de.metaphoriker.pathetic.engine.Node; +import de.metaphoriker.pathetic.engine.Offset; import de.metaphoriker.pathetic.util.ExpiringHashMap; import de.metaphoriker.pathetic.util.GridRegionData; import de.metaphoriker.pathetic.util.Tuple3; @@ -26,8 +27,11 @@ public class AStarPathfinder extends AbstractPathfinder { private final Map, ExpiringHashMap.Entry> gridMap = new ExpiringHashMap<>(); - public AStarPathfinder(PathfinderConfiguration pathfinderConfiguration) { + private final BlockProvider blockProvider; + + public AStarPathfinder(BlockProvider blockProvider, PathfinderConfiguration pathfinderConfiguration) { super(pathfinderConfiguration); + this.blockProvider = blockProvider; } @Override diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AbstractPathfinder.java similarity index 91% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AbstractPathfinder.java index 9b1a6f2d..515d82fc 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/pathfinder/AbstractPathfinder.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AbstractPathfinder.java @@ -1,6 +1,5 @@ -package de.metaphoriker.pathetic.model.pathing.pathfinder; +package de.metaphoriker.pathetic.engine.pathfinder; -import de.metaphoriker.pathetic.Pathetic; import de.metaphoriker.pathetic.api.event.EventPublisher; import de.metaphoriker.pathetic.api.event.PathingFinishedEvent; import de.metaphoriker.pathetic.api.event.PathingStartFindEvent; @@ -13,13 +12,11 @@ import de.metaphoriker.pathetic.api.pathing.result.Path; import de.metaphoriker.pathetic.api.pathing.result.PathState; import de.metaphoriker.pathetic.api.pathing.result.PathfinderResult; -import de.metaphoriker.pathetic.api.snapshot.BlockProvider; import de.metaphoriker.pathetic.api.wrapper.Depth; import de.metaphoriker.pathetic.api.wrapper.PathPosition; -import de.metaphoriker.pathetic.model.pathing.Node; -import de.metaphoriker.pathetic.model.pathing.result.PathImpl; -import de.metaphoriker.pathetic.model.pathing.result.PathfinderResultImpl; -import de.metaphoriker.pathetic.model.snapshot.FailingBlockProvider; +import de.metaphoriker.pathetic.engine.Node; +import de.metaphoriker.pathetic.engine.result.PathImpl; +import de.metaphoriker.pathetic.engine.result.PathfinderResultImpl; import de.metaphoriker.pathetic.util.ErrorLogger; import java.util.ArrayList; import java.util.Collections; @@ -51,33 +48,20 @@ abstract class AbstractPathfinder implements Pathfinder { protected static final Set EMPTY_LINKED_HASHSET = Collections.unmodifiableSet(new LinkedHashSet<>(0)); - private static final BlockProvider SIMPLE_SNAPSHOT_MANAGER = new FailingBlockProvider(); - private static final BlockProvider LOADING_SNAPSHOT_MANAGER = - new FailingBlockProvider.RequestingBlockProvider(); - private static final ExecutorService PATHING_EXECUTOR = Executors.newWorkStealingPool(); static { - Pathetic.addShutdownListener(PATHING_EXECUTOR::shutdown); + Runtime.getRuntime().addShutdownHook(new Thread(PATHING_EXECUTOR::shutdown)); } private final Set pathfinderHooks = new HashSet<>(); protected final PathfinderConfiguration pathfinderConfiguration; - protected final BlockProvider blockProvider; private volatile boolean aborted; protected AbstractPathfinder(PathfinderConfiguration pathfinderConfiguration) { this.pathfinderConfiguration = pathfinderConfiguration; - this.blockProvider = determineSnapshotManager(pathfinderConfiguration); - } - - private BlockProvider determineSnapshotManager( - PathfinderConfiguration pathfinderConfiguration) { - return pathfinderConfiguration.isLoadingChunks() - ? LOADING_SNAPSHOT_MANAGER - : SIMPLE_SNAPSHOT_MANAGER; } @Override diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/result/PathImpl.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/result/PathImpl.java similarity index 98% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/result/PathImpl.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/result/PathImpl.java index 987ded3b..d173da08 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/result/PathImpl.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/result/PathImpl.java @@ -1,4 +1,4 @@ -package de.metaphoriker.pathetic.model.pathing.result; +package de.metaphoriker.pathetic.engine.result; import com.google.common.collect.Iterables; import java.util.ArrayList; diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/result/PathfinderResultImpl.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/result/PathfinderResultImpl.java similarity index 94% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/result/PathfinderResultImpl.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/result/PathfinderResultImpl.java index 647e7005..24d494e9 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/model/pathing/result/PathfinderResultImpl.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/result/PathfinderResultImpl.java @@ -1,4 +1,4 @@ -package de.metaphoriker.pathetic.model.pathing.result; +package de.metaphoriker.pathetic.engine.result; import lombok.AllArgsConstructor; import lombok.NonNull; diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ErrorLogger.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ErrorLogger.java index 9d217875..b4e24847 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ErrorLogger.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ErrorLogger.java @@ -14,8 +14,7 @@ public static IllegalStateException logFatalError(String message, Throwable caus log.error("==============================="); log.error("A fatal error has occurred: {}", message); log.error("Please open an issue on the Pathetic GitHub page with all this information:"); - log.error("Version: {}", Pathetic.getModelVersion()); - log.error("Server Version: {}", Pathetic.getPluginInstance().getServer().getVersion()); + log.error("Version: {}", Pathetic.getEngineVersion()); log.error("Java Version: {}", System.getProperty("java.version")); log.error("OS: {}", System.getProperty("os.name")); log.error("OS Architecture: {}", System.getProperty("os.arch")); diff --git a/pathetic-engine/src/main/resources/pathetic.properties b/pathetic-engine/src/main/resources/pathetic.properties index 4c5349c4..c367fd6b 100644 --- a/pathetic-engine/src/main/resources/pathetic.properties +++ b/pathetic-engine/src/main/resources/pathetic.properties @@ -1 +1 @@ -model.version=${project.version} \ No newline at end of file +engine.version=${project.version} diff --git a/pathetic-example/pom.xml b/pathetic-example/pom.xml index d8e6c94b..df75cf49 100644 --- a/pathetic-example/pom.xml +++ b/pathetic-example/pom.xml @@ -72,7 +72,7 @@ de.metaphoriker - pathetic-mapping + pathetic-bukkit 3.3.1 diff --git a/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/PatheticPlugin.java b/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/PatheticPlugin.java index ba851e54..a97aa131 100644 --- a/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/PatheticPlugin.java +++ b/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/PatheticPlugin.java @@ -1,10 +1,12 @@ package de.metaphoriker.pathetic.example; import de.metaphoriker.pathetic.api.pathing.Pathfinder; +import de.metaphoriker.pathetic.api.pathing.PathfinderFactory; import de.metaphoriker.pathetic.api.pathing.configuration.PathfinderConfiguration; +import de.metaphoriker.pathetic.bukkit.PatheticBukkit; +import de.metaphoriker.pathetic.bukkit.factory.BukkitPathfinderFactory; +import de.metaphoriker.pathetic.bukkit.factory.BukkitPathfinderInitializer; import de.metaphoriker.pathetic.example.command.PatheticCommand; -import de.metaphoriker.pathetic.mapping.PatheticFacade; -import de.metaphoriker.pathetic.mapping.PathfinderFactory; import org.bukkit.plugin.java.JavaPlugin; public final class PatheticPlugin extends JavaPlugin { @@ -13,12 +15,16 @@ public final class PatheticPlugin extends JavaPlugin { @Override public void onEnable() { - // Initialize the PatheticMapper with this plugin instance - PatheticFacade.initialize(this); + // Initialize Pathetic with this plugin instance + PatheticBukkit.initialize(this); + + // Create the respective Pathfinder Factory with the respective initializer + PathfinderFactory factory = + new BukkitPathfinderFactory(new BukkitPathfinderInitializer()); // Create a new Pathfinder instance with a custom configuration Pathfinder reusablePathfinder = - PathfinderFactory.createPathfinder( // Use the factory to create a new pathfinder instance + factory.createPathfinder( // Use the factory to create a new pathfinder instance PathfinderConfiguration.createConfiguration() .withAllowingFallback(true) // Allow fallback strategies if the primary fails .withLoadingChunks(true) // Allow chunks to be loaded during pathfinding @@ -27,11 +33,4 @@ public void onEnable() { // Register the command executor for the "pathetic" command getCommand("pathetic").setExecutor(new PatheticCommand(reusablePathfinder)); } - - // Called when the plugin is disabled - @Override - public void onDisable() { - // Shutdown the PatheticMapper to clear any resources it holds - PatheticFacade.shutdown(); - } } diff --git a/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/command/PatheticCommand.java b/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/command/PatheticCommand.java index 7f458fdd..3bda9d3e 100644 --- a/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/command/PatheticCommand.java +++ b/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/command/PatheticCommand.java @@ -7,6 +7,8 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.CompletionStage; + +import de.metaphoriker.pathetic.bukkit.mapper.BukkitMapper; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.command.Command; @@ -19,7 +21,6 @@ import de.metaphoriker.pathetic.api.wrapper.PathPosition; import de.metaphoriker.pathetic.example.filter.DangerousMaterialsFilter; import de.metaphoriker.pathetic.example.filter.MinimumHeightFilter; -import de.metaphoriker.pathetic.mapping.bukkit.BukkitMapper; public class PatheticCommand implements TabExecutor { diff --git a/pathetic-mapping/src/main/java/de/metaphoriker/pathetic/mapping/PatheticFacade.java b/pathetic-mapping/src/main/java/de/metaphoriker/pathetic/mapping/PatheticFacade.java deleted file mode 100644 index 086e685f..00000000 --- a/pathetic-mapping/src/main/java/de/metaphoriker/pathetic/mapping/PatheticFacade.java +++ /dev/null @@ -1,29 +0,0 @@ -package de.metaphoriker.pathetic.mapping; - -import de.metaphoriker.pathetic.Pathetic; -import lombok.experimental.UtilityClass; -import org.bukkit.plugin.java.JavaPlugin; - -/** PatheticMapper is a utility class that maps the Pathetic API to the Pathetic Implementation. */ -@UtilityClass -public class PatheticFacade { - - /** - * @apiNote If Pathetic is not initialized yet but is used anyways, this will cause many things to - * break. - * @param javaPlugin the JavaPlugin which initializes the lib - * @throws IllegalStateException If an attempt is made to initialize more than once - */ - public void initialize(JavaPlugin javaPlugin) { - Pathetic.initialize(javaPlugin); - } - - /** - * Signals Pathetic to initiate its shutdown process, releasing resources and finalizing - * operations. This method should be called when Pathetic is no longer needed or the plugin is - * being disabled. - */ - public void shutdown() { - Pathetic.shutdown(); - } -} diff --git a/pathetic-mapping/src/main/java/de/metaphoriker/pathetic/mapping/PathfinderFactory.java b/pathetic-mapping/src/main/java/de/metaphoriker/pathetic/mapping/PathfinderFactory.java deleted file mode 100644 index 4e61e0a5..00000000 --- a/pathetic-mapping/src/main/java/de/metaphoriker/pathetic/mapping/PathfinderFactory.java +++ /dev/null @@ -1,27 +0,0 @@ -package de.metaphoriker.pathetic.mapping; - -import de.metaphoriker.pathetic.Pathetic; -import de.metaphoriker.pathetic.api.pathing.Pathfinder; -import de.metaphoriker.pathetic.api.pathing.configuration.PathfinderConfiguration; -import de.metaphoriker.pathetic.model.pathing.pathfinder.AStarPathfinder; -import de.metaphoriker.pathetic.util.ErrorLogger; - -/** A factory class for creating {@link Pathfinder} instances. */ -public final class PathfinderFactory { - - private PathfinderFactory() {} - - /** - * Creates a new {@link Pathfinder} instance. - * - * @param pathfinderConfiguration The configuration for the pathfinder. - * @return A new {@link Pathfinder} instance. - * @throws IllegalStateException If Pathetic is not initialized. - */ - public static Pathfinder createPathfinder(PathfinderConfiguration pathfinderConfiguration) { - if (!Pathetic.isInitialized()) { - throw ErrorLogger.logFatalError("Pathetic is not initialized yet."); - } - return new AStarPathfinder(pathfinderConfiguration); - } -} diff --git a/pom.xml b/pom.xml index de36ef3a..cc191243 100644 --- a/pom.xml +++ b/pom.xml @@ -17,8 +17,8 @@ pathetic-api + pathetic-bukkit pathetic-example - pathetic-mapping pathetic-engine pathetic-provider pathetic-provider/paper From 8507be1e693fd0c9c23f900864177af815a9bad2 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Sun, 15 Dec 2024 11:21:10 +0100 Subject: [PATCH 15/39] refact: BlockProvider has been moved to provider package --- .../pathetic/api/pathing/filter/PathValidationContext.java | 2 +- .../api/pathing/filter/filters/SolidGroundPathFilter.java | 2 +- .../pathetic/api/pathing/filter/filters/WaterPathFilter.java | 2 +- .../pathetic/api/{snapshot => provider}/BlockProvider.java | 2 +- .../pathetic/bukkit/factory/BukkitPathfinderFactory.java | 2 +- .../pathetic/bukkit/provider/FailingBlockProvider.java | 2 +- .../pathetic/engine/pathfinder/AStarPathfinder.java | 2 +- .../pathetic/example/filter/DangerousMaterialsFilter.java | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) rename pathetic-api/src/main/java/de/metaphoriker/pathetic/api/{snapshot => provider}/BlockProvider.java (95%) diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/PathValidationContext.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/PathValidationContext.java index 4b9206ed..9c9a6928 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/PathValidationContext.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/PathValidationContext.java @@ -1,7 +1,7 @@ package de.metaphoriker.pathetic.api.pathing.filter; import lombok.Value; -import de.metaphoriker.pathetic.api.snapshot.BlockProvider; +import de.metaphoriker.pathetic.api.provider.BlockProvider; import de.metaphoriker.pathetic.api.wrapper.PathPosition; /** diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/SolidGroundPathFilter.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/SolidGroundPathFilter.java index b2f5c9da..fda12ee8 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/SolidGroundPathFilter.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/SolidGroundPathFilter.java @@ -3,7 +3,7 @@ import lombok.NonNull; import de.metaphoriker.pathetic.api.pathing.filter.PathValidationContext; import de.metaphoriker.pathetic.api.pathing.filter.PathFilter; -import de.metaphoriker.pathetic.api.snapshot.BlockProvider; +import de.metaphoriker.pathetic.api.provider.BlockProvider; import de.metaphoriker.pathetic.api.wrapper.PathBlock; /** diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/WaterPathFilter.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/WaterPathFilter.java index 2db92063..84ce2deb 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/WaterPathFilter.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/WaterPathFilter.java @@ -4,7 +4,7 @@ import org.bukkit.Material; import de.metaphoriker.pathetic.api.pathing.filter.PathValidationContext; import de.metaphoriker.pathetic.api.pathing.filter.PathFilter; -import de.metaphoriker.pathetic.api.snapshot.BlockProvider; +import de.metaphoriker.pathetic.api.provider.BlockProvider; import de.metaphoriker.pathetic.api.wrapper.PathPosition; /** A PathFilter implementation that determines if a path is through water. */ diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/snapshot/BlockProvider.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/provider/BlockProvider.java similarity index 95% rename from pathetic-api/src/main/java/de/metaphoriker/pathetic/api/snapshot/BlockProvider.java rename to pathetic-api/src/main/java/de/metaphoriker/pathetic/api/provider/BlockProvider.java index ae6e5daf..75bbb744 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/snapshot/BlockProvider.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/provider/BlockProvider.java @@ -1,4 +1,4 @@ -package de.metaphoriker.pathetic.api.snapshot; +package de.metaphoriker.pathetic.api.provider; import de.metaphoriker.pathetic.api.wrapper.PathBlock; import de.metaphoriker.pathetic.api.wrapper.PathPosition; diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/factory/BukkitPathfinderFactory.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/factory/BukkitPathfinderFactory.java index d3bc2dca..65dd204c 100644 --- a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/factory/BukkitPathfinderFactory.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/factory/BukkitPathfinderFactory.java @@ -3,7 +3,7 @@ import de.metaphoriker.pathetic.api.pathing.Pathfinder; import de.metaphoriker.pathetic.api.pathing.PathfinderFactory; import de.metaphoriker.pathetic.api.pathing.configuration.PathfinderConfiguration; -import de.metaphoriker.pathetic.api.snapshot.BlockProvider; +import de.metaphoriker.pathetic.api.provider.BlockProvider; import de.metaphoriker.pathetic.bukkit.provider.FailingBlockProvider; import de.metaphoriker.pathetic.engine.pathfinder.AStarPathfinder; diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java index c5934aba..cdd72c48 100644 --- a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java @@ -1,6 +1,6 @@ package de.metaphoriker.pathetic.bukkit.provider; -import de.metaphoriker.pathetic.api.snapshot.BlockProvider; +import de.metaphoriker.pathetic.api.provider.BlockProvider; import de.metaphoriker.pathetic.api.wrapper.BlockInformation; import de.metaphoriker.pathetic.api.wrapper.PathBlock; import de.metaphoriker.pathetic.api.wrapper.PathEnvironment; diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java index 1e3d95c5..3b4a7779 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java @@ -4,7 +4,7 @@ import de.metaphoriker.pathetic.api.pathing.filter.PathFilter; import de.metaphoriker.pathetic.api.pathing.filter.PathFilterStage; import de.metaphoriker.pathetic.api.pathing.filter.PathValidationContext; -import de.metaphoriker.pathetic.api.snapshot.BlockProvider; +import de.metaphoriker.pathetic.api.provider.BlockProvider; import de.metaphoriker.pathetic.api.wrapper.Depth; import de.metaphoriker.pathetic.api.wrapper.PathPosition; import de.metaphoriker.pathetic.api.wrapper.PathVector; diff --git a/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/DangerousMaterialsFilter.java b/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/DangerousMaterialsFilter.java index 8a637f7d..25ddf27a 100644 --- a/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/DangerousMaterialsFilter.java +++ b/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/DangerousMaterialsFilter.java @@ -4,7 +4,7 @@ import org.bukkit.Material; import de.metaphoriker.pathetic.api.pathing.filter.PathFilter; import de.metaphoriker.pathetic.api.pathing.filter.PathValidationContext; -import de.metaphoriker.pathetic.api.snapshot.BlockProvider; +import de.metaphoriker.pathetic.api.provider.BlockProvider; import de.metaphoriker.pathetic.api.wrapper.PathBlock; import de.metaphoriker.pathetic.api.wrapper.PathPosition; From 586811023a490a2ebda62e7baaba6eb2e845ce91 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Sun, 15 Dec 2024 11:33:16 +0100 Subject: [PATCH 16/39] refact: BukkitPathfinderFactory now no longer takes an initializer - the initializer is set internally --- .../pathetic/bukkit/factory/BukkitPathfinderFactory.java | 4 ++-- .../java/de/metaphoriker/pathetic/example/PatheticPlugin.java | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/factory/BukkitPathfinderFactory.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/factory/BukkitPathfinderFactory.java index 65dd204c..2cbcb478 100644 --- a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/factory/BukkitPathfinderFactory.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/factory/BukkitPathfinderFactory.java @@ -14,8 +14,8 @@ public class BukkitPathfinderFactory extends PathfinderFactory factory = - new BukkitPathfinderFactory(new BukkitPathfinderInitializer()); + PathfinderFactory factory = new BukkitPathfinderFactory(); // Create a new Pathfinder instance with a custom configuration Pathfinder reusablePathfinder = From 54a655795abe6be01185d5d82e71526c398e988a Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Sun, 15 Dec 2024 11:41:02 +0100 Subject: [PATCH 17/39] chore: add TODO comment for later --- .../metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java | 1 + 1 file changed, 1 insertion(+) diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java index 3b4a7779..90540f70 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java @@ -130,6 +130,7 @@ private boolean isHeightDifferencePassable( int yDifference = from.getPosition().getBlockY() - to.getPosition().getBlockY(); Node neighbour3 = createNeighbourNode(from, vector1.add(new PathVector(0, yDifference, 0))); + // TODO: 15.12.2024: do we really need to check if the block is passable, or can we use the filters? return blockProvider.getBlock(neighbour3.getPosition()).isPassable(); } From 43de6fec3b66ca6af37b6a08c75b88fffa411a6e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 04:25:57 +0000 Subject: [PATCH 18/39] build(deps): bump com.google.guava:guava from 33.3.1-jre to 33.4.0-jre Bumps [com.google.guava:guava](https://github.com/google/guava) from 33.3.1-jre to 33.4.0-jre. - [Release notes](https://github.com/google/guava/releases) - [Commits](https://github.com/google/guava/commits) --- updated-dependencies: - dependency-name: com.google.guava:guava dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pathetic-engine/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pathetic-engine/pom.xml b/pathetic-engine/pom.xml index 7cb9a41d..5e7d839f 100644 --- a/pathetic-engine/pom.xml +++ b/pathetic-engine/pom.xml @@ -64,7 +64,7 @@ com.google.guava guava - 33.3.1-jre + 33.4.0-jre provided From 8265e693743982f8f082a8e47135b25f9eabd88a Mon Sep 17 00:00:00 2001 From: Benjamin Sommerfeld <50031457+Metaphoriker@users.noreply.github.com> Date: Tue, 17 Dec 2024 09:14:48 +0100 Subject: [PATCH 19/39] Delete LICENSE --- LICENSE | 674 -------------------------------------------------------- 1 file changed, 674 deletions(-) delete mode 100644 LICENSE diff --git a/LICENSE b/LICENSE deleted file mode 100644 index f288702d..00000000 --- a/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. From 50d34993d77be472a58bad88e25eb96265b1b94b Mon Sep 17 00:00:00 2001 From: Benjamin Sommerfeld <50031457+Metaphoriker@users.noreply.github.com> Date: Tue, 17 Dec 2024 09:16:03 +0100 Subject: [PATCH 20/39] Create LICENSE We are MIT --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..4dc0d668 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Benjamin Sommerfeld + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 6189a6afdd40b288c93f3a21f6421913e1160570 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Tue, 17 Dec 2024 10:42:22 +0100 Subject: [PATCH 21/39] refact: parking the ChunkDataProvider in the provider module, will be refactored later --- pathetic-api/pom.xml | 4 ---- .../api/wrapper/BlockInformation.java | 24 ++----------------- .../pathetic/api/wrapper/PathBlock.java | 18 +++----------- pathetic-provider/paper/pom.xml | 7 ++++++ .../paper/PaperChunkDataProvider.java | 2 +- pathetic-provider/pom.xml | 4 ++++ pathetic-provider/spigot/pom.xml | 7 ++++++ .../SpigotChunkDataProviderResolver.java | 2 +- pathetic-provider/spigot/v1_12/pom.xml | 7 +++++- .../v1_12/v1_12ChunkDataProviderImpl.java | 2 +- pathetic-provider/spigot/v1_15/pom.xml | 7 +++++- .../v1_15/v1_15ChunkDataProviderImpl.java | 2 +- pathetic-provider/spigot/v1_16/pom.xml | 7 +++++- .../v1_16/v1_16ChunkDataProviderImpl.java | 2 +- pathetic-provider/spigot/v1_17/pom.xml | 7 +++++- .../v1_17/v1_17ChunkDataProviderImpl.java | 2 +- pathetic-provider/spigot/v1_18/pom.xml | 6 +++++ .../v1_18/v1_18ChunkDataProviderImpl.java | 3 ++- pathetic-provider/spigot/v1_18_R2/pom.xml | 7 +++++- .../v1_18_R2ChunkDataProviderImpl.java | 3 ++- pathetic-provider/spigot/v1_19_R2/pom.xml | 7 +++++- .../v1_19_R2ChunkDataProviderImpl.java | 3 ++- pathetic-provider/spigot/v1_19_R3/pom.xml | 7 +++++- .../v1_19_R3ChunkDataProviderImpl.java | 3 ++- pathetic-provider/spigot/v1_20_R1/pom.xml | 7 +++++- .../v1_20_R1ChunkDataProviderImpl.java | 3 ++- pathetic-provider/spigot/v1_20_R2/pom.xml | 7 +++++- .../v1_20_R2ChunkDataProviderImpl.java | 2 +- pathetic-provider/spigot/v1_20_R3/pom.xml | 7 +++++- .../v1_20_R3ChunkDataProviderImpl.java | 3 ++- pathetic-provider/spigot/v1_20_R4/pom.xml | 7 +++++- .../v1_20_R4ChunkDataProviderImpl.java | 2 +- pathetic-provider/spigot/v1_21_R1/pom.xml | 6 +++++ .../v1_21_R1ChunkDataProviderImpl.java | 2 +- pathetic-provider/spigot/v1_21_R2/pom.xml | 6 +++++ .../v1_21_R2ChunkDataProviderImpl.java | 3 ++- pathetic-provider/spigot/v1_21_R3/pom.xml | 6 +++++ .../v1_21_R3ChunkDataProviderImpl.java | 1 - pathetic-provider/spigot/v1_8/pom.xml | 7 +++++- .../v1_8/v1_8ChunkDataProviderImpl.java | 2 +- .../pathetic/provider}/ChunkDataProvider.java | 2 +- .../provider/ChunkDataProviderResolver.java | 1 - 42 files changed, 144 insertions(+), 73 deletions(-) rename {pathetic-api/src/main/java/de/metaphoriker/pathetic/api/snapshot => pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider}/ChunkDataProvider.java (94%) diff --git a/pathetic-api/pom.xml b/pathetic-api/pom.xml index 1b7b2e3b..567774b5 100644 --- a/pathetic-api/pom.xml +++ b/pathetic-api/pom.xml @@ -14,10 +14,6 @@ 3.3.1 - - org.spigotmc - spigot-api - org.projectlombok lombok diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/wrapper/BlockInformation.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/wrapper/BlockInformation.java index c5a3eb16..d9e88a19 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/wrapper/BlockInformation.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/wrapper/BlockInformation.java @@ -1,26 +1,6 @@ package de.metaphoriker.pathetic.api.wrapper; -import javax.annotation.Nullable; -import lombok.EqualsAndHashCode; -import lombok.NonNull; -import lombok.ToString; -import lombok.Value; -import org.bukkit.Material; -import org.bukkit.block.BlockState; +public interface BlockInformation { -@Value -@ToString -@EqualsAndHashCode -public class BlockInformation { - - /** The material of the represented block */ - @NonNull Material material; - - /** - * The block state of the represented block -- GETTER -- Gets the block state of the represented - * block - * - * @api.Note This is only available in v. 1.13 or above and therefore nullable - */ - @Nullable BlockState blockState; + boolean isPassable(); } diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/wrapper/PathBlock.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/wrapper/PathBlock.java index ed55f2f4..e9d194f5 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/wrapper/PathBlock.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/wrapper/PathBlock.java @@ -15,25 +15,13 @@ public final class PathBlock { private final PathPosition pathPosition; private final BlockInformation blockInformation; - /** - * @return Whether the block is air - */ - public boolean isAir() { - return blockInformation.getMaterial().isAir(); - } - /** * @return Whether the block is possible to walk through + * @deprecated Use {@link BlockInformation#isPassable()} instead */ + @Deprecated public boolean isPassable() { - return !isSolid(); - } - - /** - * @return Whether the block is solid - */ - public boolean isSolid() { - return blockInformation.getMaterial().isSolid(); + return blockInformation.isPassable(); } /** diff --git a/pathetic-provider/paper/pom.xml b/pathetic-provider/paper/pom.xml index 68c3274c..33d9923f 100644 --- a/pathetic-provider/paper/pom.xml +++ b/pathetic-provider/paper/pom.xml @@ -33,5 +33,12 @@ 3.3.1 provided + + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + diff --git a/pathetic-provider/paper/src/main/java/de/metaphoriker/pathetic/provider/paper/PaperChunkDataProvider.java b/pathetic-provider/paper/src/main/java/de/metaphoriker/pathetic/provider/paper/PaperChunkDataProvider.java index dff6f4cf..eb38a71d 100644 --- a/pathetic-provider/paper/src/main/java/de/metaphoriker/pathetic/provider/paper/PaperChunkDataProvider.java +++ b/pathetic-provider/paper/src/main/java/de/metaphoriker/pathetic/provider/paper/PaperChunkDataProvider.java @@ -1,10 +1,10 @@ package de.metaphoriker.pathetic.provider.paper; +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import org.bukkit.Bukkit; import org.bukkit.ChunkSnapshot; import org.bukkit.World; import org.bukkit.block.BlockState; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; public class PaperChunkDataProvider implements ChunkDataProvider { diff --git a/pathetic-provider/pom.xml b/pathetic-provider/pom.xml index 672eabee..afee8fb9 100644 --- a/pathetic-provider/pom.xml +++ b/pathetic-provider/pom.xml @@ -15,6 +15,10 @@ 3.3.1 + + org.spigotmc + spigot-api + org.slf4j slf4j-api diff --git a/pathetic-provider/spigot/pom.xml b/pathetic-provider/spigot/pom.xml index aee0b992..5f3a1225 100644 --- a/pathetic-provider/spigot/pom.xml +++ b/pathetic-provider/spigot/pom.xml @@ -29,6 +29,13 @@ pathetic-api + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + + de.metaphoriker v1_21_R3 diff --git a/pathetic-provider/spigot/src/main/java/de/metaphoriker/pathetic/provider/spigot/SpigotChunkDataProviderResolver.java b/pathetic-provider/spigot/src/main/java/de/metaphoriker/pathetic/provider/spigot/SpigotChunkDataProviderResolver.java index 9f2f95a9..c4e439f9 100644 --- a/pathetic-provider/spigot/src/main/java/de/metaphoriker/pathetic/provider/spigot/SpigotChunkDataProviderResolver.java +++ b/pathetic-provider/spigot/src/main/java/de/metaphoriker/pathetic/provider/spigot/SpigotChunkDataProviderResolver.java @@ -1,6 +1,6 @@ package de.metaphoriker.pathetic.provider.spigot; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import de.metaphoriker.pathetic.provider.v1_12.v1_12ChunkDataProviderImpl; import de.metaphoriker.pathetic.provider.v1_15.v1_15ChunkDataProviderImpl; import de.metaphoriker.pathetic.provider.v1_16.v1_16ChunkDataProviderImpl; diff --git a/pathetic-provider/spigot/v1_12/pom.xml b/pathetic-provider/spigot/v1_12/pom.xml index 362301d8..44968103 100644 --- a/pathetic-provider/spigot/v1_12/pom.xml +++ b/pathetic-provider/spigot/v1_12/pom.xml @@ -26,7 +26,12 @@ 1.12.2-R0.1-SNAPSHOT provided - + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + de.metaphoriker pathetic-api diff --git a/pathetic-provider/spigot/v1_12/src/main/java/de/metaphoriker/pathetic/provider/v1_12/v1_12ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_12/src/main/java/de/metaphoriker/pathetic/provider/v1_12/v1_12ChunkDataProviderImpl.java index f83c57c7..0f2614ec 100644 --- a/pathetic-provider/spigot/v1_12/src/main/java/de/metaphoriker/pathetic/provider/v1_12/v1_12ChunkDataProviderImpl.java +++ b/pathetic-provider/spigot/v1_12/src/main/java/de/metaphoriker/pathetic/provider/v1_12/v1_12ChunkDataProviderImpl.java @@ -1,12 +1,12 @@ package de.metaphoriker.pathetic.provider.v1_12; +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import net.minecraft.server.v1_12_R1.Chunk; import net.minecraft.server.v1_12_R1.WorldServer; import org.bukkit.ChunkSnapshot; import org.bukkit.World; import org.bukkit.block.BlockState; import org.bukkit.craftbukkit.v1_12_R1.CraftWorld; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; public class v1_12ChunkDataProviderImpl implements ChunkDataProvider { diff --git a/pathetic-provider/spigot/v1_15/pom.xml b/pathetic-provider/spigot/v1_15/pom.xml index dfcec3ec..d70c0b32 100644 --- a/pathetic-provider/spigot/v1_15/pom.xml +++ b/pathetic-provider/spigot/v1_15/pom.xml @@ -26,7 +26,12 @@ 1.15.2-R0.1-SNAPSHOT provided - + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + de.metaphoriker pathetic-api diff --git a/pathetic-provider/spigot/v1_15/src/main/java/de/metaphoriker/pathetic/provider/v1_15/v1_15ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_15/src/main/java/de/metaphoriker/pathetic/provider/v1_15/v1_15ChunkDataProviderImpl.java index 00c67c86..5c6d2b4b 100644 --- a/pathetic-provider/spigot/v1_15/src/main/java/de/metaphoriker/pathetic/provider/v1_15/v1_15ChunkDataProviderImpl.java +++ b/pathetic-provider/spigot/v1_15/src/main/java/de/metaphoriker/pathetic/provider/v1_15/v1_15ChunkDataProviderImpl.java @@ -1,5 +1,6 @@ package de.metaphoriker.pathetic.provider.v1_15; +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import net.minecraft.server.v1_15_R1.ChunkStatus; import net.minecraft.server.v1_15_R1.WorldServer; import org.bukkit.ChunkSnapshot; @@ -7,7 +8,6 @@ import org.bukkit.block.BlockState; import org.bukkit.craftbukkit.v1_15_R1.CraftChunk; import org.bukkit.craftbukkit.v1_15_R1.CraftWorld; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; public class v1_15ChunkDataProviderImpl implements ChunkDataProvider { diff --git a/pathetic-provider/spigot/v1_16/pom.xml b/pathetic-provider/spigot/v1_16/pom.xml index 64918dbd..6cf0e562 100644 --- a/pathetic-provider/spigot/v1_16/pom.xml +++ b/pathetic-provider/spigot/v1_16/pom.xml @@ -26,7 +26,12 @@ 1.16.5-R0.1-SNAPSHOT provided - + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + de.metaphoriker pathetic-api diff --git a/pathetic-provider/spigot/v1_16/src/main/java/de/metaphoriker/pathetic/provider/v1_16/v1_16ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_16/src/main/java/de/metaphoriker/pathetic/provider/v1_16/v1_16ChunkDataProviderImpl.java index 75bcd045..aed42357 100644 --- a/pathetic-provider/spigot/v1_16/src/main/java/de/metaphoriker/pathetic/provider/v1_16/v1_16ChunkDataProviderImpl.java +++ b/pathetic-provider/spigot/v1_16/src/main/java/de/metaphoriker/pathetic/provider/v1_16/v1_16ChunkDataProviderImpl.java @@ -1,5 +1,6 @@ package de.metaphoriker.pathetic.provider.v1_16; +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import net.minecraft.server.v1_16_R3.ChunkStatus; import net.minecraft.server.v1_16_R3.WorldServer; import org.bukkit.ChunkSnapshot; @@ -7,7 +8,6 @@ import org.bukkit.block.BlockState; import org.bukkit.craftbukkit.v1_16_R3.CraftChunk; import org.bukkit.craftbukkit.v1_16_R3.CraftWorld; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; public class v1_16ChunkDataProviderImpl implements ChunkDataProvider { diff --git a/pathetic-provider/spigot/v1_17/pom.xml b/pathetic-provider/spigot/v1_17/pom.xml index 4ff6f31e..18fc2b02 100644 --- a/pathetic-provider/spigot/v1_17/pom.xml +++ b/pathetic-provider/spigot/v1_17/pom.xml @@ -26,7 +26,12 @@ 1.17.1-R0.1-SNAPSHOT provided - + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + de.metaphoriker pathetic-api diff --git a/pathetic-provider/spigot/v1_17/src/main/java/de/metaphoriker/pathetic/provider/v1_17/v1_17ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_17/src/main/java/de/metaphoriker/pathetic/provider/v1_17/v1_17ChunkDataProviderImpl.java index bc53b140..65f367f3 100644 --- a/pathetic-provider/spigot/v1_17/src/main/java/de/metaphoriker/pathetic/provider/v1_17/v1_17ChunkDataProviderImpl.java +++ b/pathetic-provider/spigot/v1_17/src/main/java/de/metaphoriker/pathetic/provider/v1_17/v1_17ChunkDataProviderImpl.java @@ -1,5 +1,6 @@ package de.metaphoriker.pathetic.provider.v1_17; +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import net.minecraft.server.level.WorldServer; import net.minecraft.world.level.block.state.IBlockData; import net.minecraft.world.level.chunk.ChunkStatus; @@ -11,7 +12,6 @@ import org.bukkit.craftbukkit.v1_17_R1.CraftWorld; import org.bukkit.craftbukkit.v1_17_R1.block.CraftBlockStates; import org.bukkit.craftbukkit.v1_17_R1.block.data.CraftBlockData; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; public class v1_17ChunkDataProviderImpl implements ChunkDataProvider { diff --git a/pathetic-provider/spigot/v1_18/pom.xml b/pathetic-provider/spigot/v1_18/pom.xml index 76ecddc2..cf2e8417 100644 --- a/pathetic-provider/spigot/v1_18/pom.xml +++ b/pathetic-provider/spigot/v1_18/pom.xml @@ -26,6 +26,12 @@ 1.18.1-R0.1-SNAPSHOT provided + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + de.metaphoriker pathetic-api diff --git a/pathetic-provider/spigot/v1_18/src/main/java/de/metaphoriker/pathetic/provider/v1_18/v1_18ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_18/src/main/java/de/metaphoriker/pathetic/provider/v1_18/v1_18ChunkDataProviderImpl.java index ca44e37e..bbbb9044 100644 --- a/pathetic-provider/spigot/v1_18/src/main/java/de/metaphoriker/pathetic/provider/v1_18/v1_18ChunkDataProviderImpl.java +++ b/pathetic-provider/spigot/v1_18/src/main/java/de/metaphoriker/pathetic/provider/v1_18/v1_18ChunkDataProviderImpl.java @@ -1,6 +1,8 @@ package de.metaphoriker.pathetic.provider.v1_18; import java.lang.reflect.Field; + +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import net.minecraft.server.level.WorldServer; import net.minecraft.world.level.block.state.IBlockData; import net.minecraft.world.level.chunk.ChunkStatus; @@ -13,7 +15,6 @@ import org.bukkit.craftbukkit.v1_18_R1.CraftWorld; import org.bukkit.craftbukkit.v1_18_R1.block.CraftBlockStates; import org.bukkit.craftbukkit.v1_18_R1.block.data.CraftBlockData; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; public class v1_18ChunkDataProviderImpl implements ChunkDataProvider { diff --git a/pathetic-provider/spigot/v1_18_R2/pom.xml b/pathetic-provider/spigot/v1_18_R2/pom.xml index 16ae1a13..4f71f31c 100644 --- a/pathetic-provider/spigot/v1_18_R2/pom.xml +++ b/pathetic-provider/spigot/v1_18_R2/pom.xml @@ -26,7 +26,12 @@ 1.18.2-R0.1-SNAPSHOT provided - + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + de.metaphoriker pathetic-api diff --git a/pathetic-provider/spigot/v1_18_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_18_R2/v1_18_R2ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_18_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_18_R2/v1_18_R2ChunkDataProviderImpl.java index 7b4c6391..cae4eb89 100644 --- a/pathetic-provider/spigot/v1_18_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_18_R2/v1_18_R2ChunkDataProviderImpl.java +++ b/pathetic-provider/spigot/v1_18_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_18_R2/v1_18_R2ChunkDataProviderImpl.java @@ -1,6 +1,8 @@ package de.metaphoriker.pathetic.provider.v1_18_R2; import java.lang.reflect.Field; + +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import net.minecraft.server.level.WorldServer; import net.minecraft.world.level.block.state.IBlockData; import net.minecraft.world.level.chunk.ChunkStatus; @@ -13,7 +15,6 @@ import org.bukkit.craftbukkit.v1_18_R2.CraftWorld; import org.bukkit.craftbukkit.v1_18_R2.block.CraftBlockStates; import org.bukkit.craftbukkit.v1_18_R2.block.data.CraftBlockData; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; public class v1_18_R2ChunkDataProviderImpl implements ChunkDataProvider { diff --git a/pathetic-provider/spigot/v1_19_R2/pom.xml b/pathetic-provider/spigot/v1_19_R2/pom.xml index 9b1d8e80..35d8ed6e 100644 --- a/pathetic-provider/spigot/v1_19_R2/pom.xml +++ b/pathetic-provider/spigot/v1_19_R2/pom.xml @@ -26,7 +26,12 @@ 1.19.3-R0.1-SNAPSHOT provided - + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + de.metaphoriker pathetic-api diff --git a/pathetic-provider/spigot/v1_19_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R2/v1_19_R2ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_19_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R2/v1_19_R2ChunkDataProviderImpl.java index ec38b740..f7ecb659 100644 --- a/pathetic-provider/spigot/v1_19_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R2/v1_19_R2ChunkDataProviderImpl.java +++ b/pathetic-provider/spigot/v1_19_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R2/v1_19_R2ChunkDataProviderImpl.java @@ -1,6 +1,8 @@ package de.metaphoriker.pathetic.provider.v1_19_R2; import java.lang.reflect.Field; + +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import net.minecraft.server.level.WorldServer; import net.minecraft.world.level.block.state.IBlockData; import net.minecraft.world.level.chunk.ChunkStatus; @@ -13,7 +15,6 @@ import org.bukkit.craftbukkit.v1_19_R2.CraftWorld; import org.bukkit.craftbukkit.v1_19_R2.block.CraftBlockStates; import org.bukkit.craftbukkit.v1_19_R2.block.data.CraftBlockData; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; public class v1_19_R2ChunkDataProviderImpl implements ChunkDataProvider { diff --git a/pathetic-provider/spigot/v1_19_R3/pom.xml b/pathetic-provider/spigot/v1_19_R3/pom.xml index 9a7b2a5b..968409b3 100644 --- a/pathetic-provider/spigot/v1_19_R3/pom.xml +++ b/pathetic-provider/spigot/v1_19_R3/pom.xml @@ -26,7 +26,12 @@ 1.19.4-R0.1-SNAPSHOT provided - + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + de.metaphoriker pathetic-api diff --git a/pathetic-provider/spigot/v1_19_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R3/v1_19_R3ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_19_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R3/v1_19_R3ChunkDataProviderImpl.java index d3e1222b..54729b83 100644 --- a/pathetic-provider/spigot/v1_19_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R3/v1_19_R3ChunkDataProviderImpl.java +++ b/pathetic-provider/spigot/v1_19_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R3/v1_19_R3ChunkDataProviderImpl.java @@ -1,6 +1,8 @@ package de.metaphoriker.pathetic.provider.v1_19_R3; import java.lang.reflect.Field; + +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import net.minecraft.server.level.WorldServer; import net.minecraft.world.level.block.state.IBlockData; import net.minecraft.world.level.chunk.ChunkStatus; @@ -13,7 +15,6 @@ import org.bukkit.craftbukkit.v1_19_R3.CraftWorld; import org.bukkit.craftbukkit.v1_19_R3.block.CraftBlockStates; import org.bukkit.craftbukkit.v1_19_R3.block.data.CraftBlockData; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; public class v1_19_R3ChunkDataProviderImpl implements ChunkDataProvider { diff --git a/pathetic-provider/spigot/v1_20_R1/pom.xml b/pathetic-provider/spigot/v1_20_R1/pom.xml index 984a5655..b48ed9a5 100644 --- a/pathetic-provider/spigot/v1_20_R1/pom.xml +++ b/pathetic-provider/spigot/v1_20_R1/pom.xml @@ -26,7 +26,12 @@ 1.20.1-R0.1-SNAPSHOT provided - + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + de.metaphoriker pathetic-api diff --git a/pathetic-provider/spigot/v1_20_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R1/v1_20_R1ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_20_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R1/v1_20_R1ChunkDataProviderImpl.java index e4faba53..7056d546 100644 --- a/pathetic-provider/spigot/v1_20_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R1/v1_20_R1ChunkDataProviderImpl.java +++ b/pathetic-provider/spigot/v1_20_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R1/v1_20_R1ChunkDataProviderImpl.java @@ -1,6 +1,8 @@ package de.metaphoriker.pathetic.provider.v1_20_R1; import java.lang.reflect.Field; + +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import net.minecraft.server.level.WorldServer; import net.minecraft.world.level.block.state.IBlockData; import net.minecraft.world.level.chunk.ChunkStatus; @@ -10,7 +12,6 @@ import org.bukkit.block.BlockState; import org.bukkit.craftbukkit.v1_20_R1.CraftChunk; import org.bukkit.craftbukkit.v1_20_R1.CraftWorld; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; public class v1_20_R1ChunkDataProviderImpl implements ChunkDataProvider { diff --git a/pathetic-provider/spigot/v1_20_R2/pom.xml b/pathetic-provider/spigot/v1_20_R2/pom.xml index f07e290a..bae4bda2 100644 --- a/pathetic-provider/spigot/v1_20_R2/pom.xml +++ b/pathetic-provider/spigot/v1_20_R2/pom.xml @@ -26,7 +26,12 @@ 1.20.2-R0.1-SNAPSHOT provided - + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + de.metaphoriker pathetic-api diff --git a/pathetic-provider/spigot/v1_20_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R2/v1_20_R2ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_20_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R2/v1_20_R2ChunkDataProviderImpl.java index 9621e46e..18fc61cd 100644 --- a/pathetic-provider/spigot/v1_20_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R2/v1_20_R2ChunkDataProviderImpl.java +++ b/pathetic-provider/spigot/v1_20_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R2/v1_20_R2ChunkDataProviderImpl.java @@ -1,5 +1,6 @@ package de.metaphoriker.pathetic.provider.v1_20_R2; +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import net.minecraft.server.level.WorldServer; import net.minecraft.world.level.block.state.IBlockData; import net.minecraft.world.level.chunk.ChunkStatus; @@ -9,7 +10,6 @@ import org.bukkit.block.BlockState; import org.bukkit.craftbukkit.v1_20_R2.CraftChunk; import org.bukkit.craftbukkit.v1_20_R2.CraftWorld; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; import java.lang.reflect.Field; diff --git a/pathetic-provider/spigot/v1_20_R3/pom.xml b/pathetic-provider/spigot/v1_20_R3/pom.xml index 528b05ba..a522123d 100644 --- a/pathetic-provider/spigot/v1_20_R3/pom.xml +++ b/pathetic-provider/spigot/v1_20_R3/pom.xml @@ -26,7 +26,12 @@ 1.20.4-R0.1-SNAPSHOT provided - + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + de.metaphoriker pathetic-api diff --git a/pathetic-provider/spigot/v1_20_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R3/v1_20_R3ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_20_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R3/v1_20_R3ChunkDataProviderImpl.java index 73b68cda..ff047b91 100644 --- a/pathetic-provider/spigot/v1_20_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R3/v1_20_R3ChunkDataProviderImpl.java +++ b/pathetic-provider/spigot/v1_20_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R3/v1_20_R3ChunkDataProviderImpl.java @@ -1,6 +1,8 @@ package de.metaphoriker.pathetic.provider.v1_20_R3; import java.lang.reflect.Field; + +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import net.minecraft.server.level.WorldServer; import net.minecraft.world.level.block.state.IBlockData; import net.minecraft.world.level.chunk.ChunkStatus; @@ -10,7 +12,6 @@ import org.bukkit.block.BlockState; import org.bukkit.craftbukkit.v1_20_R3.CraftChunk; import org.bukkit.craftbukkit.v1_20_R3.CraftWorld; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; public final class v1_20_R3ChunkDataProviderImpl implements ChunkDataProvider { diff --git a/pathetic-provider/spigot/v1_20_R4/pom.xml b/pathetic-provider/spigot/v1_20_R4/pom.xml index 7b45ca9e..37deb873 100644 --- a/pathetic-provider/spigot/v1_20_R4/pom.xml +++ b/pathetic-provider/spigot/v1_20_R4/pom.xml @@ -26,7 +26,12 @@ 1.20.5-R0.1-SNAPSHOT provided - + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + de.metaphoriker pathetic-api diff --git a/pathetic-provider/spigot/v1_20_R4/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R4/v1_20_R4ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_20_R4/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R4/v1_20_R4ChunkDataProviderImpl.java index e312f863..f3ece1ef 100644 --- a/pathetic-provider/spigot/v1_20_R4/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R4/v1_20_R4ChunkDataProviderImpl.java +++ b/pathetic-provider/spigot/v1_20_R4/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R4/v1_20_R4ChunkDataProviderImpl.java @@ -1,5 +1,6 @@ package de.metaphoriker.pathetic.provider.v1_20_R4; +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import net.minecraft.server.level.WorldServer; import net.minecraft.world.level.block.state.IBlockData; import net.minecraft.world.level.chunk.DataPaletteBlock; @@ -9,7 +10,6 @@ import org.bukkit.block.BlockState; import org.bukkit.craftbukkit.v1_20_R4.CraftChunk; import org.bukkit.craftbukkit.v1_20_R4.CraftWorld; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; import java.lang.reflect.Field; diff --git a/pathetic-provider/spigot/v1_21_R1/pom.xml b/pathetic-provider/spigot/v1_21_R1/pom.xml index dcb986d9..1cf04b43 100644 --- a/pathetic-provider/spigot/v1_21_R1/pom.xml +++ b/pathetic-provider/spigot/v1_21_R1/pom.xml @@ -26,6 +26,12 @@ 1.21.1-R0.1-SNAPSHOT provided + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + de.metaphoriker pathetic-api diff --git a/pathetic-provider/spigot/v1_21_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R1/v1_21_R1ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_21_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R1/v1_21_R1ChunkDataProviderImpl.java index 2d690361..679a1b20 100644 --- a/pathetic-provider/spigot/v1_21_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R1/v1_21_R1ChunkDataProviderImpl.java +++ b/pathetic-provider/spigot/v1_21_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R1/v1_21_R1ChunkDataProviderImpl.java @@ -1,5 +1,6 @@ package de.metaphoriker.pathetic.provider.v1_21_R1; +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import net.minecraft.server.level.WorldServer; import net.minecraft.world.level.block.state.IBlockData; import net.minecraft.world.level.chunk.DataPaletteBlock; @@ -9,7 +10,6 @@ import org.bukkit.block.BlockState; import org.bukkit.craftbukkit.v1_21_R1.CraftChunk; import org.bukkit.craftbukkit.v1_21_R1.CraftWorld; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; import java.lang.reflect.Field; diff --git a/pathetic-provider/spigot/v1_21_R2/pom.xml b/pathetic-provider/spigot/v1_21_R2/pom.xml index 490dc65e..8bc4f3a3 100644 --- a/pathetic-provider/spigot/v1_21_R2/pom.xml +++ b/pathetic-provider/spigot/v1_21_R2/pom.xml @@ -26,6 +26,12 @@ 1.21.3-R0.1-SNAPSHOT provided + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + de.metaphoriker pathetic-api diff --git a/pathetic-provider/spigot/v1_21_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R2/v1_21_R2ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_21_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R2/v1_21_R2ChunkDataProviderImpl.java index 89f8c0dd..f0817da8 100644 --- a/pathetic-provider/spigot/v1_21_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R2/v1_21_R2ChunkDataProviderImpl.java +++ b/pathetic-provider/spigot/v1_21_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R2/v1_21_R2ChunkDataProviderImpl.java @@ -1,6 +1,8 @@ package de.metaphoriker.pathetic.provider.v1_21_R2; import java.lang.reflect.Field; + +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import net.minecraft.server.level.WorldServer; import net.minecraft.world.level.block.state.IBlockData; import net.minecraft.world.level.chunk.DataPaletteBlock; @@ -10,7 +12,6 @@ import org.bukkit.block.BlockState; import org.bukkit.craftbukkit.v1_21_R2.CraftChunk; import org.bukkit.craftbukkit.v1_21_R2.CraftWorld; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; public class v1_21_R2ChunkDataProviderImpl implements ChunkDataProvider { diff --git a/pathetic-provider/spigot/v1_21_R3/pom.xml b/pathetic-provider/spigot/v1_21_R3/pom.xml index 924b63e7..4b0c4a9c 100644 --- a/pathetic-provider/spigot/v1_21_R3/pom.xml +++ b/pathetic-provider/spigot/v1_21_R3/pom.xml @@ -26,6 +26,12 @@ 1.21.4-R0.1-SNAPSHOT provided + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + de.metaphoriker pathetic-api diff --git a/pathetic-provider/spigot/v1_21_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R3ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_21_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R3ChunkDataProviderImpl.java index 4dc55472..90e68fa1 100644 --- a/pathetic-provider/spigot/v1_21_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R3ChunkDataProviderImpl.java +++ b/pathetic-provider/spigot/v1_21_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R3ChunkDataProviderImpl.java @@ -1,6 +1,5 @@ package de.metaphoriker.pathetic.provider; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; import net.minecraft.server.level.WorldServer; import net.minecraft.world.level.block.state.IBlockData; import net.minecraft.world.level.chunk.DataPaletteBlock; diff --git a/pathetic-provider/spigot/v1_8/pom.xml b/pathetic-provider/spigot/v1_8/pom.xml index 48c87e16..38ccd115 100644 --- a/pathetic-provider/spigot/v1_8/pom.xml +++ b/pathetic-provider/spigot/v1_8/pom.xml @@ -26,7 +26,12 @@ 1.8.8-R0.1-SNAPSHOT provided - + + de.metaphoriker + pathetic-provider + 3.3.1 + compile + de.metaphoriker pathetic-api diff --git a/pathetic-provider/spigot/v1_8/src/main/java/de/metaphoriker/pathetic/provider/v1_8/v1_8ChunkDataProviderImpl.java b/pathetic-provider/spigot/v1_8/src/main/java/de/metaphoriker/pathetic/provider/v1_8/v1_8ChunkDataProviderImpl.java index e18c8731..e68376e4 100644 --- a/pathetic-provider/spigot/v1_8/src/main/java/de/metaphoriker/pathetic/provider/v1_8/v1_8ChunkDataProviderImpl.java +++ b/pathetic-provider/spigot/v1_8/src/main/java/de/metaphoriker/pathetic/provider/v1_8/v1_8ChunkDataProviderImpl.java @@ -1,12 +1,12 @@ package de.metaphoriker.pathetic.provider.v1_8; +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import net.minecraft.server.v1_8_R3.Chunk; import net.minecraft.server.v1_8_R3.WorldServer; import org.bukkit.ChunkSnapshot; import org.bukkit.World; import org.bukkit.block.BlockState; import org.bukkit.craftbukkit.v1_8_R3.CraftWorld; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; public class v1_8ChunkDataProviderImpl implements ChunkDataProvider { diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/snapshot/ChunkDataProvider.java b/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProvider.java similarity index 94% rename from pathetic-api/src/main/java/de/metaphoriker/pathetic/api/snapshot/ChunkDataProvider.java rename to pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProvider.java index 0e772838..62d458aa 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/snapshot/ChunkDataProvider.java +++ b/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProvider.java @@ -1,4 +1,4 @@ -package de.metaphoriker.pathetic.api.snapshot; +package de.metaphoriker.pathetic.provider; import org.bukkit.ChunkSnapshot; import org.bukkit.World; diff --git a/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java b/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java index 629a5493..f5480a44 100644 --- a/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java +++ b/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java @@ -1,6 +1,5 @@ package de.metaphoriker.pathetic.provider; -import de.metaphoriker.pathetic.api.snapshot.ChunkDataProvider; import de.metaphoriker.pathetic.provider.paper.PaperChunkDataProvider; import de.metaphoriker.pathetic.provider.spigot.SpigotChunkDataProviderResolver; import lombok.Getter; From a03f172ce6dec40d1d81b06d5fb4e00bb4f6f76e Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Tue, 17 Dec 2024 11:10:27 +0100 Subject: [PATCH 22/39] feat: remove bukkit-specific path filters from api --- .../filter/filters/SolidGroundPathFilter.java | 25 ------------------- .../filter/filters/WaterPathFilter.java | 21 ---------------- 2 files changed, 46 deletions(-) delete mode 100644 pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/SolidGroundPathFilter.java delete mode 100644 pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/WaterPathFilter.java diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/SolidGroundPathFilter.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/SolidGroundPathFilter.java deleted file mode 100644 index fda12ee8..00000000 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/SolidGroundPathFilter.java +++ /dev/null @@ -1,25 +0,0 @@ -package de.metaphoriker.pathetic.api.pathing.filter.filters; - -import lombok.NonNull; -import de.metaphoriker.pathetic.api.pathing.filter.PathValidationContext; -import de.metaphoriker.pathetic.api.pathing.filter.PathFilter; -import de.metaphoriker.pathetic.api.provider.BlockProvider; -import de.metaphoriker.pathetic.api.wrapper.PathBlock; - -/** - * A PathFilter implementation that determines if a path is on solid ground. - */ -public class SolidGroundPathFilter implements PathFilter { - - @Override - public boolean filter(@NonNull PathValidationContext pathValidationContext) { - BlockProvider blockProvider = pathValidationContext.getBlockProvider(); - PathBlock block = blockProvider.getBlock(pathValidationContext.getPosition()); - return hasGround(block, blockProvider); - } - - protected boolean hasGround(PathBlock block, BlockProvider blockProvider) { - PathBlock below = blockProvider.getBlock(block.getPathPosition().add(0, -1, 0)); - return below.isSolid(); - } -} diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/WaterPathFilter.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/WaterPathFilter.java deleted file mode 100644 index 84ce2deb..00000000 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/WaterPathFilter.java +++ /dev/null @@ -1,21 +0,0 @@ -package de.metaphoriker.pathetic.api.pathing.filter.filters; - -import lombok.NonNull; -import org.bukkit.Material; -import de.metaphoriker.pathetic.api.pathing.filter.PathValidationContext; -import de.metaphoriker.pathetic.api.pathing.filter.PathFilter; -import de.metaphoriker.pathetic.api.provider.BlockProvider; -import de.metaphoriker.pathetic.api.wrapper.PathPosition; - -/** A PathFilter implementation that determines if a path is through water. */ -public class WaterPathFilter implements PathFilter { - - @Override - public boolean filter(@NonNull PathValidationContext pathValidationContext) { - BlockProvider blockProvider = pathValidationContext.getBlockProvider(); - PathPosition pathPosition = pathValidationContext.getPosition(); - - return blockProvider.getBlock(pathPosition).getBlockInformation().getMaterial() - == Material.WATER; - } -} From ab837845bae4b6c0c4a69fc77f8013102c69755c Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Tue, 17 Dec 2024 11:19:48 +0100 Subject: [PATCH 23/39] refact: removed javax annotations --- .../de/metaphoriker/pathetic/api/pathing/Pathfinder.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/Pathfinder.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/Pathfinder.java index 897de784..96c314f5 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/Pathfinder.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/Pathfinder.java @@ -2,7 +2,6 @@ import java.util.List; import java.util.concurrent.CompletionStage; -import javax.annotation.Nullable; import de.metaphoriker.pathetic.api.pathing.hook.PathfinderHook; import de.metaphoriker.pathetic.api.pathing.result.PathState; @@ -28,7 +27,7 @@ public interface Pathfinder { CompletionStage findPath( @NonNull PathPosition start, @NonNull PathPosition target, - @Nullable List<@NonNull PathFilter> filters); + List<@NonNull PathFilter> filters); /** * Tries to find a Path between the two {@link PathPosition}'s provided with the given @@ -53,8 +52,8 @@ CompletionStage findPath( CompletionStage findPath( @NonNull PathPosition start, @NonNull PathPosition target, - @Nullable List sharedFilters, - @Nullable List<@NonNull PathFilterStage> filterStages); + List<@NonNull PathFilter> sharedFilters, + List<@NonNull PathFilterStage> filterStages); /** * Aborts the running pathfinding process. From 214883d7ddf495cf6ba3cf309e44fe859d367350 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Tue, 17 Dec 2024 11:28:15 +0100 Subject: [PATCH 24/39] chore: README changes --- README.md | 43 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 68882cde..22310cd4 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@

Pathetic - A Pathfinding library for Minecraft

-

A high-performance, backwards-compatible, and asynchronous easy-to-use pathfinding library written in Java. -
Pathetic leverages the A* algorithm with customizable heuristics for real-time pathfinding in Spigot/Paper environments.

+

A high-performance, backwards-compatible, and asynchronous easy-to-use pathfinding library written in Java for 3D environments. +
Pathetic leverages the A* algorithm with customizable heuristics for real-time pathfinding.

Key Features

@@ -23,7 +23,7 @@

Installation

-To integrate pathetic into your project, follow the following steps: +To integrate pathetic into your bukkit project, follow the following steps:
*(We advise you to relocate pathetic)* @@ -40,7 +40,7 @@ To integrate pathetic into your project, follow the following steps: com.github.Metaphoriker.pathetic - pathetic-mapping + pathetic-bukkit VERSION ``` @@ -55,13 +55,44 @@ allprojects { } dependencies { - implementation 'com.github.Metaphoriker.pathetic:pathetic-mapping:VERSION' + implementation 'com.github.Metaphoriker.pathetic:pathetic-bukkit:VERSION' } ``` +

Manual Pathetic

+If you want to leverage pathetic for your own implementation, you can use the following dependency: + +

Maven

+```xml + + + jitpack.io + https://jitpack.io + + + + + de.metaphoriker + pathetic-engine + VERSION + +``` + +

Gradle

+```groovy +allprojects { + repositories { + maven { url 'https://jitpack.io' } + } +} + +dependencies { + implementation 'de.metaphoriker:pathetic-engine:VERSION' +} +```

Example Usage

-

See the pathetic-example module for a detailed example usage.

+

See the pathetic-example module for a detailed bukkit example.

Documentation

From 900cd4dac2df97939a2b08b201a744bf6989c961 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Tue, 17 Dec 2024 11:34:01 +0100 Subject: [PATCH 25/39] feat: the event system and bStats have been removed The event system was obsolete, since the user has the start and end of the pathfinding in its own hand, and everything else can be done by the new hook. BStats has been removed, since pathetic takes a new path, which can include non-minecraft projects. --- .../pathetic/api/event/EventPublisher.java | 41 ------------------ .../pathetic/api/event/PathingEvent.java | 4 -- .../api/event/PathingFinishedEvent.java | 17 -------- .../api/event/PathingStartFindEvent.java | 23 ---------- .../pathetic/api/event/package-info.java | 43 ------------------- .../PathfinderConfiguration.java | 10 ----- .../pathetic/bukkit/BStatsHandler.java | 43 ------------------- .../pathetic/bukkit/PatheticBukkit.java | 20 --------- 8 files changed, 201 deletions(-) delete mode 100644 pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/EventPublisher.java delete mode 100644 pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/PathingEvent.java delete mode 100644 pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/PathingFinishedEvent.java delete mode 100644 pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/PathingStartFindEvent.java delete mode 100644 pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/package-info.java delete mode 100644 pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/BStatsHandler.java diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/EventPublisher.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/EventPublisher.java deleted file mode 100644 index 08e366af..00000000 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/EventPublisher.java +++ /dev/null @@ -1,41 +0,0 @@ -package de.metaphoriker.pathetic.api.event; - -import com.google.common.eventbus.EventBus; -import lombok.experimental.UtilityClass; - -/** - * Utility class for publishing and managing events using the Google Guava EventBus. This class - * provides methods to raise events and register/unregister event listeners. - */ -@UtilityClass -public class EventPublisher { - - private static final EventBus eventBus = new EventBus(); - - /** - * Raises an event by posting it to the EventBus. - * - * @param pathingEvent the event to be raised - */ - public static void raiseEvent(PathingEvent pathingEvent) { - eventBus.post(pathingEvent); - } - - /** - * Registers an event listener with the EventBus. - * - * @param listener the listener to be registered - */ - public static void registerListener(Object listener) { - eventBus.register(listener); - } - - /** - * Unregisters an event listener from the EventBus. - * - * @param listener the listener to be unregistered - */ - public static void unregisterListener(Object listener) { - eventBus.unregister(listener); - } -} diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/PathingEvent.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/PathingEvent.java deleted file mode 100644 index 562765d8..00000000 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/PathingEvent.java +++ /dev/null @@ -1,4 +0,0 @@ -package de.metaphoriker.pathetic.api.event; - -/** Represents all pathing events */ -public interface PathingEvent {} diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/PathingFinishedEvent.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/PathingFinishedEvent.java deleted file mode 100644 index 6d306abc..00000000 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/PathingFinishedEvent.java +++ /dev/null @@ -1,17 +0,0 @@ -package de.metaphoriker.pathetic.api.event; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NonNull; -import de.metaphoriker.pathetic.api.pathing.result.PathfinderResult; - -/** - * An event called when a pathfinder finishes pathing. Therefor, the result does not matter. Means - * that the event is called even if the pathing fails. - */ -@Getter -@AllArgsConstructor -public class PathingFinishedEvent implements PathingEvent { - - @NonNull private final PathfinderResult pathfinderResult; -} diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/PathingStartFindEvent.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/PathingStartFindEvent.java deleted file mode 100644 index 2347fb41..00000000 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/PathingStartFindEvent.java +++ /dev/null @@ -1,23 +0,0 @@ -package de.metaphoriker.pathetic.api.event; - -import java.util.List; - -import de.metaphoriker.pathetic.api.pathing.configuration.PathfinderConfiguration; -import lombok.Getter; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; -import de.metaphoriker.pathetic.api.pathing.filter.PathFilter; -import de.metaphoriker.pathetic.api.pathing.filter.PathFilterStage; -import de.metaphoriker.pathetic.api.wrapper.PathPosition; - -/** An event called when a Pathfinder starts pathing. */ -@Getter -@RequiredArgsConstructor -public class PathingStartFindEvent implements PathingEvent { - - @NonNull private final PathPosition start; - @NonNull private final PathPosition target; - @NonNull private final List filters; - @NonNull private final List filterStages; - @NonNull private final PathfinderConfiguration pathfinderConfiguration; -} diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/package-info.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/package-info.java deleted file mode 100644 index f6fe6e1e..00000000 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/event/package-info.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * This package contains classes related to the event system of pathetic. - * - *

The event system is built around the Guava EventBus. It provides a way to define, raise, and - * handle custom events within the application. The main class in this package is the - * EventPublisher, which provides static methods to raise events and register/unregister listeners. - * - *

To create a new event, you would extend the PathingEvent class. To handle an event, you would - * create a method in your listener class that is annotated with @Subscribe and takes a single - * argument of your event type. - * - *

For example: - * - *

{@code
- * // Define a new event
- *  public class CustomEvent extends PathingEvent {
- *    private final String message;
- *
- *    public CustomEvent(String message) {
- *      this.message = message;
- *    }
- *
- *    public String getMessage() {
- *      return message;
- *    }
- *  }
- *
- *  // Define a listener for the new event
- *  public class CustomEventListener {
- *
- *   {@literal @}Subscribe
- *   public void onCustomEvent(CustomEvent event) {
- *     System.out.println("Received custom event with message: " + event.getMessage());
- *    }
- *  }
- *
- * // Register the listener and raise the event
- * EventPublisher.registerListener(new CustomEventListener());
- * EventPublisher.raiseEvent(new CustomEvent("Hello, world!"));
- *
- * }
- */ -package de.metaphoriker.pathetic.api.event; diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/configuration/PathfinderConfiguration.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/configuration/PathfinderConfiguration.java index 53644de8..8a7e01bd 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/configuration/PathfinderConfiguration.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/configuration/PathfinderConfiguration.java @@ -61,16 +61,6 @@ public class PathfinderConfiguration { */ @Builder.Default HeuristicWeights heuristicWeights = HeuristicWeights.NATURAL_PATH_WEIGHTS; - /** - * Determines whether the pathfinding algorithm should collect statistics about the pathfinding - * process. This can be useful for debugging and performance tuning. - * - *

Help us improve the API by providing feedback with the collected statistics! - * - * @default true - */ - @Builder.Default boolean bStats = true; - /** * @return A new {@link PathfinderConfiguration} with default parameters but async. */ diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/BStatsHandler.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/BStatsHandler.java deleted file mode 100644 index 1e197810..00000000 --- a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/BStatsHandler.java +++ /dev/null @@ -1,43 +0,0 @@ -package de.metaphoriker.pathetic.bukkit; - -import de.metaphoriker.pathetic.Pathetic; -import lombok.experimental.UtilityClass; -import org.bstats.bukkit.Metrics; -import org.bstats.charts.SimplePie; -import org.bstats.charts.SingleLineChart; -import org.bukkit.plugin.java.JavaPlugin; - -@UtilityClass -public class BStatsHandler { - - private Metrics metrics; - - private int paths; - - private void init(JavaPlugin javaPlugin) { - if (metrics != null) return; - - metrics = new Metrics(javaPlugin, 20529); - metrics.addCustomChart( - new SingleLineChart( - "total_paths", - () -> { - int totalPaths = paths; - paths = 0; - return totalPaths; - })); - metrics.addCustomChart(new SimplePie("pathetic-engine_version", Pathetic::getEngineVersion)); - } - - private void makeSureBStatsIsInitialized() { - if (!PatheticBukkit.isInitialized()) - throw new IllegalStateException("Pathetic has not been initialized yet"); - - init(PatheticBukkit.getPluginInstance()); - } - - public synchronized void increasePathCount() { - makeSureBStatsIsInitialized(); - paths++; - } -} diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/PatheticBukkit.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/PatheticBukkit.java index 994404c8..bd6370b8 100644 --- a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/PatheticBukkit.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/PatheticBukkit.java @@ -1,9 +1,6 @@ package de.metaphoriker.pathetic.bukkit; -import com.google.common.eventbus.Subscribe; import de.metaphoriker.pathetic.Pathetic; -import de.metaphoriker.pathetic.api.event.EventPublisher; -import de.metaphoriker.pathetic.api.event.PathingStartFindEvent; import de.metaphoriker.pathetic.bukkit.listener.ChunkInvalidateListener; import de.metaphoriker.pathetic.bukkit.util.BukkitVersionUtil; import de.metaphoriker.pathetic.util.ErrorLogger; @@ -28,7 +25,6 @@ public static void initialize(JavaPlugin javaPlugin) { instance = javaPlugin; Bukkit.getPluginManager().registerEvents(new ChunkInvalidateListener(), javaPlugin); - registerPathingStartListener(); Pathetic.loadEngineVersion(); if (BukkitVersionUtil.getVersion().isUnder(16, 0) @@ -48,20 +44,4 @@ public static boolean isInitialized() { public static JavaPlugin getPluginInstance() { return instance; } - - private static void registerPathingStartListener() { - EventPublisher.registerListener( - new Object() { - @Subscribe - public void onPathingStart(PathingStartFindEvent event) { - pushToBStatsIfActivated(event); - } - - private void pushToBStatsIfActivated(PathingStartFindEvent event) { - if (event.getPathfinderConfiguration().isBStats()) { - BStatsHandler.increasePathCount(); - } - } - }); - } } From af89988c516428abc591bfd865a466396653ac1f Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Tue, 17 Dec 2024 11:38:41 +0100 Subject: [PATCH 26/39] refact: make sure that there are now event-leftovers and correctly using isPassable now --- .../filter/filters/PassablePathFilter.java | 1 + .../engine/pathfinder/AStarPathfinder.java | 2 +- .../engine/pathfinder/AbstractPathfinder.java | 60 ++++--------------- 3 files changed, 14 insertions(+), 49 deletions(-) diff --git a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/PassablePathFilter.java b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/PassablePathFilter.java index 2fb5ef1b..024a0333 100644 --- a/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/PassablePathFilter.java +++ b/pathetic-api/src/main/java/de/metaphoriker/pathetic/api/pathing/filter/filters/PassablePathFilter.java @@ -17,6 +17,7 @@ public boolean filter(@NonNull PathValidationContext pathValidationContext) { return pathValidationContext .getBlockProvider() .getBlock(pathValidationContext.getPosition()) + .getBlockInformation() .isPassable(); } } diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java index 90540f70..cfd2fd53 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java @@ -131,7 +131,7 @@ private boolean isHeightDifferencePassable( Node neighbour3 = createNeighbourNode(from, vector1.add(new PathVector(0, yDifference, 0))); // TODO: 15.12.2024: do we really need to check if the block is passable, or can we use the filters? - return blockProvider.getBlock(neighbour3.getPosition()).isPassable(); + return blockProvider.getBlock(neighbour3.getPosition()).getBlockInformation().isPassable(); } private Collection fetchValidNeighbours( diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AbstractPathfinder.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AbstractPathfinder.java index 515d82fc..75940f63 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AbstractPathfinder.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AbstractPathfinder.java @@ -1,8 +1,5 @@ package de.metaphoriker.pathetic.engine.pathfinder; -import de.metaphoriker.pathetic.api.event.EventPublisher; -import de.metaphoriker.pathetic.api.event.PathingFinishedEvent; -import de.metaphoriker.pathetic.api.event.PathingStartFindEvent; import de.metaphoriker.pathetic.api.pathing.Pathfinder; import de.metaphoriker.pathetic.api.pathing.configuration.PathfinderConfiguration; import de.metaphoriker.pathetic.api.pathing.filter.PathFilter; @@ -81,13 +78,9 @@ protected AbstractPathfinder(PathfinderConfiguration pathfinderConfiguration) { if (sharedFilters == null) sharedFilters = Collections.emptyList(); if (filterStages == null) filterStages = Collections.emptyList(); - raiseStartEvent(start, target, sharedFilters, filterStages); - if (shouldSkipPathing(start, target)) { - return CompletableFuture.completedFuture( - finishPathing( - new PathfinderResultImpl( - PathState.INITIALLY_FAILED, new PathImpl(start, target, EMPTY_LINKED_HASHSET)))); + return CompletableFuture.completedFuture(new PathfinderResultImpl( + PathState.INITIALLY_FAILED, new PathImpl(start, target, EMPTY_LINKED_HASHSET))); } return initiatePathing(start, target, sharedFilters, filterStages); @@ -125,7 +118,6 @@ private CompletionStage initiatePathing( ? CompletableFuture.supplyAsync( () -> executePathingAndCleanupFilters(start, target, filters, filterStages), PATHING_EXECUTOR) - .thenApply(this::finishPathing) .exceptionally(throwable -> handleException(start, target, throwable)) : initiateSyncPathing(start, target, filters, filterStages); } @@ -155,11 +147,11 @@ private PathfinderResult executePathing( fallbackNode = currentNode; if (hasReachedLengthLimit(currentNode)) { - return finishPathing(PathState.LENGTH_LIMITED, currentNode); + return new PathfinderResultImpl(PathState.LENGTH_LIMITED, fetchRetracedPath(currentNode)); } if (currentNode.isTarget()) { - return finishPathing(PathState.FOUND, currentNode); + return new PathfinderResultImpl(PathState.FOUND, fetchRetracedPath(currentNode)); } tick( @@ -176,7 +168,7 @@ private PathfinderResult executePathing( private PathfinderResult abortedPathing(Node fallbackNode) { aborted = false; - return finishPathing(PathState.ABORTED, fallbackNode); + return new PathfinderResultImpl(PathState.ABORTED, fetchRetracedPath(fallbackNode)); } private boolean isAborted() { @@ -210,29 +202,8 @@ private PathfinderResult executePathingAndCleanupFilters( private PathfinderResult handleException( PathPosition start, PathPosition target, Throwable throwable) { ErrorLogger.logFatalError("Failed to find path async", throwable); - return finishPathing( - new PathfinderResultImpl( - PathState.FAILED, new PathImpl(start, target, EMPTY_LINKED_HASHSET))); - } - - protected PathfinderResult finishPathing(PathfinderResult pathfinderResult) { - raiseFinishedEvent(pathfinderResult); - return pathfinderResult; - } - - private void raiseFinishedEvent(PathfinderResult pathfinderResult) { - PathingFinishedEvent finishedEvent = new PathingFinishedEvent(pathfinderResult); - EventPublisher.raiseEvent(finishedEvent); - } - - private void raiseStartEvent( - PathPosition start, - PathPosition target, - List filters, - List filterStages) { - PathingStartFindEvent startEvent = - new PathingStartFindEvent(start, target, filters, filterStages, pathfinderConfiguration); - EventPublisher.raiseEvent(startEvent); + return new PathfinderResultImpl( + PathState.FAILED, new PathImpl(start, target, EMPTY_LINKED_HASHSET)); } private Node createStartNode(PathPosition start, PathPosition target) { @@ -249,10 +220,6 @@ private boolean hasReachedLengthLimit(Node currentNode) { && currentNode.getDepth() > pathfinderConfiguration.getMaxLength(); } - private PathfinderResult finishPathing(PathState pathState, Node currentNode) { - return finishPathing(new PathfinderResultImpl(pathState, fetchRetracedPath(currentNode))); - } - /** If the pathfinder has failed to find a path, it will try to still give a result. */ private PathfinderResult backupPathfindingOrFailure( Depth depth, PathPosition start, PathPosition target, Node fallbackNode) { @@ -265,25 +232,22 @@ private PathfinderResult backupPathfindingOrFailure( Optional fallbackResult = fallback(fallbackNode); return fallbackResult.orElseGet( () -> - finishPathing( - new PathfinderResultImpl( - PathState.FAILED, new PathImpl(start, target, EMPTY_LINKED_HASHSET)))); + new PathfinderResultImpl( + PathState.FAILED, new PathImpl(start, target, EMPTY_LINKED_HASHSET))); } private Optional maxIterationsReached(Depth depth, Node fallbackNode) { if (depth.getDepth() > pathfinderConfiguration.getMaxIterations()) return Optional.of( - finishPathing( - new PathfinderResultImpl( - PathState.MAX_ITERATIONS_REACHED, fetchRetracedPath(fallbackNode)))); + new PathfinderResultImpl( + PathState.MAX_ITERATIONS_REACHED, fetchRetracedPath(fallbackNode))); return Optional.empty(); } private Optional fallback(Node fallbackNode) { if (pathfinderConfiguration.isAllowingFallback()) return Optional.of( - finishPathing( - new PathfinderResultImpl(PathState.FALLBACK, fetchRetracedPath(fallbackNode)))); + new PathfinderResultImpl(PathState.FALLBACK, fetchRetracedPath(fallbackNode))); return Optional.empty(); } From 94d930aed83ad5a9daaa49dd9402c67c1bf1dca4 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Tue, 17 Dec 2024 11:42:12 +0100 Subject: [PATCH 27/39] refact: remove bStats dependency --- pathetic-bukkit/pom.xml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/pathetic-bukkit/pom.xml b/pathetic-bukkit/pom.xml index 1eb9c6f7..f1900b48 100644 --- a/pathetic-bukkit/pom.xml +++ b/pathetic-bukkit/pom.xml @@ -25,14 +25,6 @@ org.apache.maven.plugins maven-shade-plugin 3.5.1 - - - - org.bstats - de.metaphoriker.pathetic.shaded.bstats - - - package @@ -66,12 +58,6 @@ org.slf4j slf4j-api - - org.bstats - bstats-bukkit - 3.1.0 - compile - de.metaphoriker pathetic-engine From dae6b6864549aeb67da5e3691136ece658723f6e Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Tue, 17 Dec 2024 12:05:51 +0100 Subject: [PATCH 28/39] refact: broken up the dependencies for a better overview for now --- pathetic-api/pom.xml | 2 ++ pathetic-bukkit/pom.xml | 6 ++++++ pathetic-engine/pom.xml | 18 +++++++++++++++++- pathetic-example/pom.xml | 2 ++ pathetic-provider/pom.xml | 7 +++++++ pathetic-provider/spigot/pom.xml | 4 ++++ pom.xml | 18 ------------------ 7 files changed, 38 insertions(+), 19 deletions(-) diff --git a/pathetic-api/pom.xml b/pathetic-api/pom.xml index 567774b5..3a6fcaff 100644 --- a/pathetic-api/pom.xml +++ b/pathetic-api/pom.xml @@ -17,6 +17,8 @@ org.projectlombok lombok + 1.18.36 + provided diff --git a/pathetic-bukkit/pom.xml b/pathetic-bukkit/pom.xml index f1900b48..f599e035 100644 --- a/pathetic-bukkit/pom.xml +++ b/pathetic-bukkit/pom.xml @@ -49,14 +49,20 @@ org.spigotmc spigot-api + 1.21.4-R0.1-SNAPSHOT + provided org.projectlombok lombok + 1.18.36 + provided org.slf4j slf4j-api + 2.0.16 + provided de.metaphoriker diff --git a/pathetic-engine/pom.xml b/pathetic-engine/pom.xml index 5e7d839f..3a46df17 100644 --- a/pathetic-engine/pom.xml +++ b/pathetic-engine/pom.xml @@ -24,6 +24,18 @@ org.jheaps de.metaphoriker.pathetic.shaded.jheaps + + org.projectlombok + de.metaphoriker.pathetic.shaded.lombok + + + org.slf4j + de.metaphoriker.pathetic.shaded.slf4j + + + com.google.common + de.metaphoriker.pathetic.shaded.guava + @@ -56,16 +68,20 @@ org.projectlombok lombok + 1.18.36 + compile org.slf4j slf4j-api + 2.0.16 + compile com.google.guava guava 33.4.0-jre - provided + compile de.metaphoriker diff --git a/pathetic-example/pom.xml b/pathetic-example/pom.xml index df75cf49..cf8c1804 100644 --- a/pathetic-example/pom.xml +++ b/pathetic-example/pom.xml @@ -69,6 +69,8 @@ org.spigotmc spigot-api + 1.21.4-R0.1-SNAPSHOT + provided de.metaphoriker diff --git a/pathetic-provider/pom.xml b/pathetic-provider/pom.xml index afee8fb9..4c401ecb 100644 --- a/pathetic-provider/pom.xml +++ b/pathetic-provider/pom.xml @@ -18,15 +18,22 @@ org.spigotmc spigot-api + 1.21.4-R0.1-SNAPSHOT + provided + org.slf4j slf4j-api + 2.0.16 + provided org.projectlombok lombok + 1.18.36 + provided diff --git a/pathetic-provider/spigot/pom.xml b/pathetic-provider/spigot/pom.xml index 5f3a1225..787570d3 100644 --- a/pathetic-provider/spigot/pom.xml +++ b/pathetic-provider/spigot/pom.xml @@ -17,11 +17,15 @@ org.slf4j slf4j-api + 2.0.16 + provided org.projectlombok lombok + 1.18.36 + provided diff --git a/pom.xml b/pom.xml index cc191243..97b64ae5 100644 --- a/pom.xml +++ b/pom.xml @@ -64,24 +64,6 @@ - - org.spigotmc - spigot-api - 1.21.4-R0.1-SNAPSHOT - provided - - - org.projectlombok - lombok - 1.18.36 - provided - - - org.slf4j - slf4j-api - 2.0.16 - provided - de.metaphoriker pathetic-api From 4b6c9bea22ab79f46f61319d0de0768dbfaf09d2 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Tue, 17 Dec 2024 12:10:48 +0100 Subject: [PATCH 29/39] feat: added BukkitBlockInformation as a BlockInformation implementation just for bukkit, as the name says --- .../provider/BukkitBlockInformation.java | 20 +++++++++++++++++++ .../bukkit/provider/FailingBlockProvider.java | 15 +++++++------- .../filter/DangerousMaterialsFilter.java | 13 ++++++------ 3 files changed, 34 insertions(+), 14 deletions(-) create mode 100644 pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/BukkitBlockInformation.java diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/BukkitBlockInformation.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/BukkitBlockInformation.java new file mode 100644 index 00000000..29b221cb --- /dev/null +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/BukkitBlockInformation.java @@ -0,0 +1,20 @@ +package de.metaphoriker.pathetic.bukkit.provider; + +import de.metaphoriker.pathetic.api.wrapper.BlockInformation; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import org.bukkit.Material; +import org.bukkit.block.BlockState; + +@Getter +@RequiredArgsConstructor +public class BukkitBlockInformation implements BlockInformation { + + private final Material material; + private final BlockState blockState; + + @Override + public boolean isPassable() { + return !material.isSolid(); + } +} diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java index cdd72c48..5d96b4f8 100644 --- a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java @@ -1,7 +1,6 @@ package de.metaphoriker.pathetic.bukkit.provider; import de.metaphoriker.pathetic.api.provider.BlockProvider; -import de.metaphoriker.pathetic.api.wrapper.BlockInformation; import de.metaphoriker.pathetic.api.wrapper.PathBlock; import de.metaphoriker.pathetic.api.wrapper.PathEnvironment; import de.metaphoriker.pathetic.api.wrapper.PathPosition; @@ -71,7 +70,7 @@ private static Optional fetchBlock(PathPosition position) { CHUNK_DATA_PROVIDER_RESOLVER .getChunkDataProvider() .getBlockState(chunkSnapshotOptional.get(), x, position.getBlockY(), z); - return Optional.of(new PathBlock(position, new BlockInformation(material, blockState))); + return Optional.of(new PathBlock(position, new BukkitBlockInformation(material, blockState))); } return Optional.empty(); @@ -142,7 +141,7 @@ public PathBlock getHighestBlockAt(PathPosition position) { .getBlockState(chunkSnapshot, chunkX, highestY, chunkZ); Material material = chunkSnapshot.getBlockType(chunkX, highestY, chunkZ); - return new PathBlock(highestBlockPosition, new BlockInformation(material, blockState)); + return new PathBlock(highestBlockPosition, new BukkitBlockInformation(material, blockState)); } // if no valid chunk snapshot was found @@ -150,9 +149,9 @@ public PathBlock getHighestBlockAt(PathPosition position) { } /** - * The RequestingBlockProvider is an inner class of FailingBlockProvider, extending it. This - * class provides additional functionality for ensuring that block data snapshots are available, - * even if not initially loaded. + * The RequestingBlockProvider is an inner class of FailingBlockProvider, extending it. This class + * provides additional functionality for ensuring that block data snapshots are available, even if + * not initially loaded. */ public static class RequestingBlockProvider extends FailingBlockProvider { @@ -196,7 +195,7 @@ private static PathBlock ensureBlock(PathPosition pathPosition) { CHUNK_DATA_PROVIDER_RESOLVER .getChunkDataProvider() .getBlockState(chunkSnapshot, x, pathPosition.getBlockY(), z); - return new PathBlock(pathPosition, new BlockInformation(material, blockState)); + return new PathBlock(pathPosition, new BukkitBlockInformation(material, blockState)); } @Override @@ -231,7 +230,7 @@ private PathBlock ensureHighestBlock(PathPosition pathPosition) { .getBlockState(chunkSnapshot, chunkX, highestY, chunkZ); Material material = chunkSnapshot.getBlockType(chunkX, highestY, chunkZ); - return new PathBlock(highestBlockPosition, new BlockInformation(material, blockState)); + return new PathBlock(highestBlockPosition, new BukkitBlockInformation(material, blockState)); } } } diff --git a/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/DangerousMaterialsFilter.java b/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/DangerousMaterialsFilter.java index 25ddf27a..bd348232 100644 --- a/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/DangerousMaterialsFilter.java +++ b/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/DangerousMaterialsFilter.java @@ -1,15 +1,16 @@ package de.metaphoriker.pathetic.example.filter; -import java.util.EnumSet; -import org.bukkit.Material; import de.metaphoriker.pathetic.api.pathing.filter.PathFilter; import de.metaphoriker.pathetic.api.pathing.filter.PathValidationContext; import de.metaphoriker.pathetic.api.provider.BlockProvider; import de.metaphoriker.pathetic.api.wrapper.PathBlock; import de.metaphoriker.pathetic.api.wrapper.PathPosition; +import de.metaphoriker.pathetic.bukkit.provider.BukkitBlockInformation; +import java.util.EnumSet; +import org.bukkit.Material; /** - * A PathFilter that excludes nodes which are located on or near dangerous materials like lava. + * A PathFilter that excludes nodes which are located on or near dangerous materials like lava. * * @api.Note Due to the radius check, this filter can be computationally expensive. */ @@ -41,13 +42,13 @@ public DangerousMaterialsFilter(EnumSet dangerousMaterials, int radius public boolean filter(PathValidationContext context) { PathPosition position = context.getPosition(); BlockProvider blockProvider = context.getBlockProvider(); - for (int x = -radius; x <= radius; x++) { for (int y = -radius; y <= radius; y++) { for (int z = -radius; z <= radius; z++) { PathBlock block = blockProvider.getBlock(position.add(x, y, z)); - if (block != null - && dangerousMaterials.contains(block.getBlockInformation().getMaterial())) { + BukkitBlockInformation bukkitBlockInformation = + (BukkitBlockInformation) block.getBlockInformation(); + if (dangerousMaterials.contains(bukkitBlockInformation.getMaterial())) { return false; // The node is near a dangerous material, so it's excluded. } } From 9cfb92652a858393960fe2be8c0ba9f6addf2891 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Tue, 17 Dec 2024 12:27:28 +0100 Subject: [PATCH 30/39] feat: added BukkitBlockInformation as a BlockInformation implementation just for bukkit, as the name says --- .../de/metaphoriker/pathetic/bukkit/mapper/BukkitMapper.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/mapper/BukkitMapper.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/mapper/BukkitMapper.java index 6b666ba1..d5a9c475 100644 --- a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/mapper/BukkitMapper.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/mapper/BukkitMapper.java @@ -1,6 +1,8 @@ package de.metaphoriker.pathetic.bukkit.mapper; import java.util.Arrays; + +import de.metaphoriker.pathetic.bukkit.provider.BukkitBlockInformation; import lombok.NonNull; import lombok.experimental.UtilityClass; import org.bukkit.Bukkit; @@ -8,7 +10,6 @@ import org.bukkit.World; import org.bukkit.block.Block; import org.bukkit.util.Vector; -import de.metaphoriker.pathetic.api.wrapper.BlockInformation; import de.metaphoriker.pathetic.api.wrapper.PathBlock; import de.metaphoriker.pathetic.api.wrapper.PathEnvironment; import de.metaphoriker.pathetic.api.wrapper.PathPosition; @@ -66,7 +67,7 @@ public Block toBlock(@NonNull PathBlock pathBlock) { public PathBlock toPathBlock(@NonNull Block block) { return new PathBlock( new PathPosition(toPathWorld(block.getWorld()), block.getX(), block.getY(), block.getZ()), - new BlockInformation(block.getType(), block.getState())); + new BukkitBlockInformation(block.getType(), block.getState())); } public World toWorld(@NonNull PathEnvironment pathEnvironment) { From b5cd9a7b3ea650e0a73bd45daa140502613c738c Mon Sep 17 00:00:00 2001 From: Benjamin Sommerfeld <50031457+Metaphoriker@users.noreply.github.com> Date: Tue, 17 Dec 2024 17:24:05 +0100 Subject: [PATCH 31/39] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 22310cd4..de33e15b 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,7 @@ If you want to leverage pathetic for your own implementation, you can use the fo ```

Gradle

+ ```groovy allprojects { repositories { @@ -90,6 +91,7 @@ dependencies { implementation 'de.metaphoriker:pathetic-engine:VERSION' } ``` +

Example Usage

See the pathetic-example module for a detailed bukkit example.

From 904db057615f3608a72da12c55bf5cfda215adb8 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Tue, 17 Dec 2024 17:25:09 +0100 Subject: [PATCH 32/39] chore: update README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index de33e15b..834ffad8 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,7 @@ dependencies { If you want to leverage pathetic for your own implementation, you can use the following dependency:

Maven

+ ```xml From 83136cc9e53551222fafcb900d402dc78a7850b3 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Thu, 19 Dec 2024 07:42:13 +0100 Subject: [PATCH 33/39] chore: example and provider module is now in its respective parent module --- .../pathetic-example}/README.md | 0 .../pathetic-example}/pom.xml | 0 .../pathetic/example/PatheticPlugin.java | 0 .../example/command/PatheticCommand.java | 0 .../filter/DangerousMaterialsFilter.java | 0 .../example/filter/MinimumHeightFilter.java | 0 .../src/main/resources/plugin.yml | 0 .../pathetic-provider}/paper/pom.xml | 2 +- .../paper/PaperChunkDataProvider.java | 0 .../pathetic-provider}/pom.xml | 0 .../pathetic-provider}/spigot/pom.xml | 2 +- .../SpigotChunkDataProviderResolver.java | 0 .../pathetic-provider}/spigot/v1_12/pom.xml | 2 +- .../v1_12/v1_12ChunkDataProviderImpl.java | 0 .../pathetic-provider}/spigot/v1_15/pom.xml | 2 +- .../v1_15/v1_15ChunkDataProviderImpl.java | 0 .../pathetic-provider}/spigot/v1_16/pom.xml | 2 +- .../v1_16/v1_16ChunkDataProviderImpl.java | 0 .../pathetic-provider}/spigot/v1_17/pom.xml | 2 +- .../v1_17/v1_17ChunkDataProviderImpl.java | 0 .../pathetic-provider}/spigot/v1_18/pom.xml | 2 +- .../v1_18/v1_18ChunkDataProviderImpl.java | 0 .../spigot/v1_18_R2/pom.xml | 2 +- .../v1_18_R2ChunkDataProviderImpl.java | 0 .../spigot/v1_19_R2/pom.xml | 2 +- .../v1_19_R2ChunkDataProviderImpl.java | 0 .../spigot/v1_19_R3/pom.xml | 2 +- .../v1_19_R3ChunkDataProviderImpl.java | 0 .../spigot/v1_20_R1/pom.xml | 2 +- .../v1_20_R1ChunkDataProviderImpl.java | 0 .../spigot/v1_20_R2/pom.xml | 2 +- .../v1_20_R2ChunkDataProviderImpl.java | 0 .../spigot/v1_20_R3/pom.xml | 2 +- .../v1_20_R3ChunkDataProviderImpl.java | 0 .../spigot/v1_20_R4/pom.xml | 2 +- .../v1_20_R4ChunkDataProviderImpl.java | 0 .../spigot/v1_21_R1/pom.xml | 2 +- .../v1_21_R1ChunkDataProviderImpl.java | 0 .../spigot/v1_21_R2/pom.xml | 2 +- .../v1_21_R2ChunkDataProviderImpl.java | 0 .../spigot/v1_21_R3/pom.xml | 2 +- .../v1_21_R3ChunkDataProviderImpl.java | 0 .../pathetic-provider}/spigot/v1_8/pom.xml | 2 +- .../v1_8/v1_8ChunkDataProviderImpl.java | 0 .../pathetic/provider/ChunkDataProvider.java | 0 .../provider/ChunkDataProviderResolver.java | 0 pom.xml | 40 +++++++++---------- 47 files changed, 38 insertions(+), 38 deletions(-) rename {pathetic-example => pathetic-bukkit/pathetic-example}/README.md (100%) rename {pathetic-example => pathetic-bukkit/pathetic-example}/pom.xml (100%) rename {pathetic-example => pathetic-bukkit/pathetic-example}/src/main/java/de/metaphoriker/pathetic/example/PatheticPlugin.java (100%) rename {pathetic-example => pathetic-bukkit/pathetic-example}/src/main/java/de/metaphoriker/pathetic/example/command/PatheticCommand.java (100%) rename {pathetic-example => pathetic-bukkit/pathetic-example}/src/main/java/de/metaphoriker/pathetic/example/filter/DangerousMaterialsFilter.java (100%) rename {pathetic-example => pathetic-bukkit/pathetic-example}/src/main/java/de/metaphoriker/pathetic/example/filter/MinimumHeightFilter.java (100%) rename {pathetic-example => pathetic-bukkit/pathetic-example}/src/main/resources/plugin.yml (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/paper/pom.xml (96%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/paper/src/main/java/de/metaphoriker/pathetic/provider/paper/PaperChunkDataProvider.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/pom.xml (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/pom.xml (98%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/src/main/java/de/metaphoriker/pathetic/provider/spigot/SpigotChunkDataProviderResolver.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_12/pom.xml (95%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_12/src/main/java/de/metaphoriker/pathetic/provider/v1_12/v1_12ChunkDataProviderImpl.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_15/pom.xml (95%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_15/src/main/java/de/metaphoriker/pathetic/provider/v1_15/v1_15ChunkDataProviderImpl.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_16/pom.xml (95%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_16/src/main/java/de/metaphoriker/pathetic/provider/v1_16/v1_16ChunkDataProviderImpl.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_17/pom.xml (95%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_17/src/main/java/de/metaphoriker/pathetic/provider/v1_17/v1_17ChunkDataProviderImpl.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_18/pom.xml (95%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_18/src/main/java/de/metaphoriker/pathetic/provider/v1_18/v1_18ChunkDataProviderImpl.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_18_R2/pom.xml (95%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_18_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_18_R2/v1_18_R2ChunkDataProviderImpl.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_19_R2/pom.xml (95%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_19_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R2/v1_19_R2ChunkDataProviderImpl.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_19_R3/pom.xml (95%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_19_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R3/v1_19_R3ChunkDataProviderImpl.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_20_R1/pom.xml (95%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_20_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R1/v1_20_R1ChunkDataProviderImpl.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_20_R2/pom.xml (95%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_20_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R2/v1_20_R2ChunkDataProviderImpl.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_20_R3/pom.xml (95%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_20_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R3/v1_20_R3ChunkDataProviderImpl.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_20_R4/pom.xml (95%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_20_R4/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R4/v1_20_R4ChunkDataProviderImpl.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_21_R1/pom.xml (95%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_21_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R1/v1_21_R1ChunkDataProviderImpl.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_21_R2/pom.xml (95%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_21_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R2/v1_21_R2ChunkDataProviderImpl.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_21_R3/pom.xml (95%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_21_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R3ChunkDataProviderImpl.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_8/pom.xml (95%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/spigot/v1_8/src/main/java/de/metaphoriker/pathetic/provider/v1_8/v1_8ChunkDataProviderImpl.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProvider.java (100%) rename {pathetic-provider => pathetic-bukkit/pathetic-provider}/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java (100%) diff --git a/pathetic-example/README.md b/pathetic-bukkit/pathetic-example/README.md similarity index 100% rename from pathetic-example/README.md rename to pathetic-bukkit/pathetic-example/README.md diff --git a/pathetic-example/pom.xml b/pathetic-bukkit/pathetic-example/pom.xml similarity index 100% rename from pathetic-example/pom.xml rename to pathetic-bukkit/pathetic-example/pom.xml diff --git a/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/PatheticPlugin.java b/pathetic-bukkit/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/PatheticPlugin.java similarity index 100% rename from pathetic-example/src/main/java/de/metaphoriker/pathetic/example/PatheticPlugin.java rename to pathetic-bukkit/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/PatheticPlugin.java diff --git a/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/command/PatheticCommand.java b/pathetic-bukkit/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/command/PatheticCommand.java similarity index 100% rename from pathetic-example/src/main/java/de/metaphoriker/pathetic/example/command/PatheticCommand.java rename to pathetic-bukkit/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/command/PatheticCommand.java diff --git a/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/DangerousMaterialsFilter.java b/pathetic-bukkit/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/DangerousMaterialsFilter.java similarity index 100% rename from pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/DangerousMaterialsFilter.java rename to pathetic-bukkit/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/DangerousMaterialsFilter.java diff --git a/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/MinimumHeightFilter.java b/pathetic-bukkit/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/MinimumHeightFilter.java similarity index 100% rename from pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/MinimumHeightFilter.java rename to pathetic-bukkit/pathetic-example/src/main/java/de/metaphoriker/pathetic/example/filter/MinimumHeightFilter.java diff --git a/pathetic-example/src/main/resources/plugin.yml b/pathetic-bukkit/pathetic-example/src/main/resources/plugin.yml similarity index 100% rename from pathetic-example/src/main/resources/plugin.yml rename to pathetic-bukkit/pathetic-example/src/main/resources/plugin.yml diff --git a/pathetic-provider/paper/pom.xml b/pathetic-bukkit/pathetic-provider/paper/pom.xml similarity index 96% rename from pathetic-provider/paper/pom.xml rename to pathetic-bukkit/pathetic-provider/paper/pom.xml index 33d9923f..3706f5f3 100644 --- a/pathetic-provider/paper/pom.xml +++ b/pathetic-bukkit/pathetic-provider/paper/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../pom.xml + ../../../pom.xml paper diff --git a/pathetic-provider/paper/src/main/java/de/metaphoriker/pathetic/provider/paper/PaperChunkDataProvider.java b/pathetic-bukkit/pathetic-provider/paper/src/main/java/de/metaphoriker/pathetic/provider/paper/PaperChunkDataProvider.java similarity index 100% rename from pathetic-provider/paper/src/main/java/de/metaphoriker/pathetic/provider/paper/PaperChunkDataProvider.java rename to pathetic-bukkit/pathetic-provider/paper/src/main/java/de/metaphoriker/pathetic/provider/paper/PaperChunkDataProvider.java diff --git a/pathetic-provider/pom.xml b/pathetic-bukkit/pathetic-provider/pom.xml similarity index 100% rename from pathetic-provider/pom.xml rename to pathetic-bukkit/pathetic-provider/pom.xml diff --git a/pathetic-provider/spigot/pom.xml b/pathetic-bukkit/pathetic-provider/spigot/pom.xml similarity index 98% rename from pathetic-provider/spigot/pom.xml rename to pathetic-bukkit/pathetic-provider/spigot/pom.xml index 787570d3..750fd040 100644 --- a/pathetic-provider/spigot/pom.xml +++ b/pathetic-bukkit/pathetic-provider/spigot/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../pom.xml + ../../../pom.xml spigot diff --git a/pathetic-provider/spigot/src/main/java/de/metaphoriker/pathetic/provider/spigot/SpigotChunkDataProviderResolver.java b/pathetic-bukkit/pathetic-provider/spigot/src/main/java/de/metaphoriker/pathetic/provider/spigot/SpigotChunkDataProviderResolver.java similarity index 100% rename from pathetic-provider/spigot/src/main/java/de/metaphoriker/pathetic/provider/spigot/SpigotChunkDataProviderResolver.java rename to pathetic-bukkit/pathetic-provider/spigot/src/main/java/de/metaphoriker/pathetic/provider/spigot/SpigotChunkDataProviderResolver.java diff --git a/pathetic-provider/spigot/v1_12/pom.xml b/pathetic-bukkit/pathetic-provider/spigot/v1_12/pom.xml similarity index 95% rename from pathetic-provider/spigot/v1_12/pom.xml rename to pathetic-bukkit/pathetic-provider/spigot/v1_12/pom.xml index 44968103..2acc9a06 100644 --- a/pathetic-provider/spigot/v1_12/pom.xml +++ b/pathetic-bukkit/pathetic-provider/spigot/v1_12/pom.xml @@ -6,7 +6,7 @@ pathetic-main de.metaphoriker 3.3.1 - ../../../pom.xml + ../../../../pom.xml 4.0.0 diff --git a/pathetic-provider/spigot/v1_12/src/main/java/de/metaphoriker/pathetic/provider/v1_12/v1_12ChunkDataProviderImpl.java b/pathetic-bukkit/pathetic-provider/spigot/v1_12/src/main/java/de/metaphoriker/pathetic/provider/v1_12/v1_12ChunkDataProviderImpl.java similarity index 100% rename from pathetic-provider/spigot/v1_12/src/main/java/de/metaphoriker/pathetic/provider/v1_12/v1_12ChunkDataProviderImpl.java rename to pathetic-bukkit/pathetic-provider/spigot/v1_12/src/main/java/de/metaphoriker/pathetic/provider/v1_12/v1_12ChunkDataProviderImpl.java diff --git a/pathetic-provider/spigot/v1_15/pom.xml b/pathetic-bukkit/pathetic-provider/spigot/v1_15/pom.xml similarity index 95% rename from pathetic-provider/spigot/v1_15/pom.xml rename to pathetic-bukkit/pathetic-provider/spigot/v1_15/pom.xml index d70c0b32..e4a4558a 100644 --- a/pathetic-provider/spigot/v1_15/pom.xml +++ b/pathetic-bukkit/pathetic-provider/spigot/v1_15/pom.xml @@ -6,7 +6,7 @@ pathetic-main de.metaphoriker 3.3.1 - ../../../pom.xml + ../../../../pom.xml 4.0.0 diff --git a/pathetic-provider/spigot/v1_15/src/main/java/de/metaphoriker/pathetic/provider/v1_15/v1_15ChunkDataProviderImpl.java b/pathetic-bukkit/pathetic-provider/spigot/v1_15/src/main/java/de/metaphoriker/pathetic/provider/v1_15/v1_15ChunkDataProviderImpl.java similarity index 100% rename from pathetic-provider/spigot/v1_15/src/main/java/de/metaphoriker/pathetic/provider/v1_15/v1_15ChunkDataProviderImpl.java rename to pathetic-bukkit/pathetic-provider/spigot/v1_15/src/main/java/de/metaphoriker/pathetic/provider/v1_15/v1_15ChunkDataProviderImpl.java diff --git a/pathetic-provider/spigot/v1_16/pom.xml b/pathetic-bukkit/pathetic-provider/spigot/v1_16/pom.xml similarity index 95% rename from pathetic-provider/spigot/v1_16/pom.xml rename to pathetic-bukkit/pathetic-provider/spigot/v1_16/pom.xml index 6cf0e562..0e0a18a8 100644 --- a/pathetic-provider/spigot/v1_16/pom.xml +++ b/pathetic-bukkit/pathetic-provider/spigot/v1_16/pom.xml @@ -6,7 +6,7 @@ pathetic-main de.metaphoriker 3.3.1 - ../../../pom.xml + ../../../../pom.xml 4.0.0 diff --git a/pathetic-provider/spigot/v1_16/src/main/java/de/metaphoriker/pathetic/provider/v1_16/v1_16ChunkDataProviderImpl.java b/pathetic-bukkit/pathetic-provider/spigot/v1_16/src/main/java/de/metaphoriker/pathetic/provider/v1_16/v1_16ChunkDataProviderImpl.java similarity index 100% rename from pathetic-provider/spigot/v1_16/src/main/java/de/metaphoriker/pathetic/provider/v1_16/v1_16ChunkDataProviderImpl.java rename to pathetic-bukkit/pathetic-provider/spigot/v1_16/src/main/java/de/metaphoriker/pathetic/provider/v1_16/v1_16ChunkDataProviderImpl.java diff --git a/pathetic-provider/spigot/v1_17/pom.xml b/pathetic-bukkit/pathetic-provider/spigot/v1_17/pom.xml similarity index 95% rename from pathetic-provider/spigot/v1_17/pom.xml rename to pathetic-bukkit/pathetic-provider/spigot/v1_17/pom.xml index 18fc2b02..abf587a3 100644 --- a/pathetic-provider/spigot/v1_17/pom.xml +++ b/pathetic-bukkit/pathetic-provider/spigot/v1_17/pom.xml @@ -6,7 +6,7 @@ pathetic-main de.metaphoriker 3.3.1 - ../../../pom.xml + ../../../../pom.xml 4.0.0 diff --git a/pathetic-provider/spigot/v1_17/src/main/java/de/metaphoriker/pathetic/provider/v1_17/v1_17ChunkDataProviderImpl.java b/pathetic-bukkit/pathetic-provider/spigot/v1_17/src/main/java/de/metaphoriker/pathetic/provider/v1_17/v1_17ChunkDataProviderImpl.java similarity index 100% rename from pathetic-provider/spigot/v1_17/src/main/java/de/metaphoriker/pathetic/provider/v1_17/v1_17ChunkDataProviderImpl.java rename to pathetic-bukkit/pathetic-provider/spigot/v1_17/src/main/java/de/metaphoriker/pathetic/provider/v1_17/v1_17ChunkDataProviderImpl.java diff --git a/pathetic-provider/spigot/v1_18/pom.xml b/pathetic-bukkit/pathetic-provider/spigot/v1_18/pom.xml similarity index 95% rename from pathetic-provider/spigot/v1_18/pom.xml rename to pathetic-bukkit/pathetic-provider/spigot/v1_18/pom.xml index cf2e8417..927e32f5 100644 --- a/pathetic-provider/spigot/v1_18/pom.xml +++ b/pathetic-bukkit/pathetic-provider/spigot/v1_18/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../../pom.xml + ../../../../pom.xml v1_18 diff --git a/pathetic-provider/spigot/v1_18/src/main/java/de/metaphoriker/pathetic/provider/v1_18/v1_18ChunkDataProviderImpl.java b/pathetic-bukkit/pathetic-provider/spigot/v1_18/src/main/java/de/metaphoriker/pathetic/provider/v1_18/v1_18ChunkDataProviderImpl.java similarity index 100% rename from pathetic-provider/spigot/v1_18/src/main/java/de/metaphoriker/pathetic/provider/v1_18/v1_18ChunkDataProviderImpl.java rename to pathetic-bukkit/pathetic-provider/spigot/v1_18/src/main/java/de/metaphoriker/pathetic/provider/v1_18/v1_18ChunkDataProviderImpl.java diff --git a/pathetic-provider/spigot/v1_18_R2/pom.xml b/pathetic-bukkit/pathetic-provider/spigot/v1_18_R2/pom.xml similarity index 95% rename from pathetic-provider/spigot/v1_18_R2/pom.xml rename to pathetic-bukkit/pathetic-provider/spigot/v1_18_R2/pom.xml index 4f71f31c..d9b62349 100644 --- a/pathetic-provider/spigot/v1_18_R2/pom.xml +++ b/pathetic-bukkit/pathetic-provider/spigot/v1_18_R2/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../../pom.xml + ../../../../pom.xml v1_18_R2 diff --git a/pathetic-provider/spigot/v1_18_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_18_R2/v1_18_R2ChunkDataProviderImpl.java b/pathetic-bukkit/pathetic-provider/spigot/v1_18_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_18_R2/v1_18_R2ChunkDataProviderImpl.java similarity index 100% rename from pathetic-provider/spigot/v1_18_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_18_R2/v1_18_R2ChunkDataProviderImpl.java rename to pathetic-bukkit/pathetic-provider/spigot/v1_18_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_18_R2/v1_18_R2ChunkDataProviderImpl.java diff --git a/pathetic-provider/spigot/v1_19_R2/pom.xml b/pathetic-bukkit/pathetic-provider/spigot/v1_19_R2/pom.xml similarity index 95% rename from pathetic-provider/spigot/v1_19_R2/pom.xml rename to pathetic-bukkit/pathetic-provider/spigot/v1_19_R2/pom.xml index 35d8ed6e..50a760e8 100644 --- a/pathetic-provider/spigot/v1_19_R2/pom.xml +++ b/pathetic-bukkit/pathetic-provider/spigot/v1_19_R2/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../../pom.xml + ../../../../pom.xml v1_19_R2 diff --git a/pathetic-provider/spigot/v1_19_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R2/v1_19_R2ChunkDataProviderImpl.java b/pathetic-bukkit/pathetic-provider/spigot/v1_19_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R2/v1_19_R2ChunkDataProviderImpl.java similarity index 100% rename from pathetic-provider/spigot/v1_19_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R2/v1_19_R2ChunkDataProviderImpl.java rename to pathetic-bukkit/pathetic-provider/spigot/v1_19_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R2/v1_19_R2ChunkDataProviderImpl.java diff --git a/pathetic-provider/spigot/v1_19_R3/pom.xml b/pathetic-bukkit/pathetic-provider/spigot/v1_19_R3/pom.xml similarity index 95% rename from pathetic-provider/spigot/v1_19_R3/pom.xml rename to pathetic-bukkit/pathetic-provider/spigot/v1_19_R3/pom.xml index 968409b3..e3676d6a 100644 --- a/pathetic-provider/spigot/v1_19_R3/pom.xml +++ b/pathetic-bukkit/pathetic-provider/spigot/v1_19_R3/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../../pom.xml + ../../../../pom.xml v1_19_R3 diff --git a/pathetic-provider/spigot/v1_19_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R3/v1_19_R3ChunkDataProviderImpl.java b/pathetic-bukkit/pathetic-provider/spigot/v1_19_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R3/v1_19_R3ChunkDataProviderImpl.java similarity index 100% rename from pathetic-provider/spigot/v1_19_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R3/v1_19_R3ChunkDataProviderImpl.java rename to pathetic-bukkit/pathetic-provider/spigot/v1_19_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_19_R3/v1_19_R3ChunkDataProviderImpl.java diff --git a/pathetic-provider/spigot/v1_20_R1/pom.xml b/pathetic-bukkit/pathetic-provider/spigot/v1_20_R1/pom.xml similarity index 95% rename from pathetic-provider/spigot/v1_20_R1/pom.xml rename to pathetic-bukkit/pathetic-provider/spigot/v1_20_R1/pom.xml index b48ed9a5..21215e60 100644 --- a/pathetic-provider/spigot/v1_20_R1/pom.xml +++ b/pathetic-bukkit/pathetic-provider/spigot/v1_20_R1/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../../pom.xml + ../../../../pom.xml v1_20_R1 diff --git a/pathetic-provider/spigot/v1_20_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R1/v1_20_R1ChunkDataProviderImpl.java b/pathetic-bukkit/pathetic-provider/spigot/v1_20_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R1/v1_20_R1ChunkDataProviderImpl.java similarity index 100% rename from pathetic-provider/spigot/v1_20_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R1/v1_20_R1ChunkDataProviderImpl.java rename to pathetic-bukkit/pathetic-provider/spigot/v1_20_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R1/v1_20_R1ChunkDataProviderImpl.java diff --git a/pathetic-provider/spigot/v1_20_R2/pom.xml b/pathetic-bukkit/pathetic-provider/spigot/v1_20_R2/pom.xml similarity index 95% rename from pathetic-provider/spigot/v1_20_R2/pom.xml rename to pathetic-bukkit/pathetic-provider/spigot/v1_20_R2/pom.xml index bae4bda2..02b39f29 100644 --- a/pathetic-provider/spigot/v1_20_R2/pom.xml +++ b/pathetic-bukkit/pathetic-provider/spigot/v1_20_R2/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../../pom.xml + ../../../../pom.xml v1_20_R2 diff --git a/pathetic-provider/spigot/v1_20_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R2/v1_20_R2ChunkDataProviderImpl.java b/pathetic-bukkit/pathetic-provider/spigot/v1_20_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R2/v1_20_R2ChunkDataProviderImpl.java similarity index 100% rename from pathetic-provider/spigot/v1_20_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R2/v1_20_R2ChunkDataProviderImpl.java rename to pathetic-bukkit/pathetic-provider/spigot/v1_20_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R2/v1_20_R2ChunkDataProviderImpl.java diff --git a/pathetic-provider/spigot/v1_20_R3/pom.xml b/pathetic-bukkit/pathetic-provider/spigot/v1_20_R3/pom.xml similarity index 95% rename from pathetic-provider/spigot/v1_20_R3/pom.xml rename to pathetic-bukkit/pathetic-provider/spigot/v1_20_R3/pom.xml index a522123d..aaab4707 100644 --- a/pathetic-provider/spigot/v1_20_R3/pom.xml +++ b/pathetic-bukkit/pathetic-provider/spigot/v1_20_R3/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../../pom.xml + ../../../../pom.xml v1_20_R3 diff --git a/pathetic-provider/spigot/v1_20_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R3/v1_20_R3ChunkDataProviderImpl.java b/pathetic-bukkit/pathetic-provider/spigot/v1_20_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R3/v1_20_R3ChunkDataProviderImpl.java similarity index 100% rename from pathetic-provider/spigot/v1_20_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R3/v1_20_R3ChunkDataProviderImpl.java rename to pathetic-bukkit/pathetic-provider/spigot/v1_20_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R3/v1_20_R3ChunkDataProviderImpl.java diff --git a/pathetic-provider/spigot/v1_20_R4/pom.xml b/pathetic-bukkit/pathetic-provider/spigot/v1_20_R4/pom.xml similarity index 95% rename from pathetic-provider/spigot/v1_20_R4/pom.xml rename to pathetic-bukkit/pathetic-provider/spigot/v1_20_R4/pom.xml index 37deb873..c4041e32 100644 --- a/pathetic-provider/spigot/v1_20_R4/pom.xml +++ b/pathetic-bukkit/pathetic-provider/spigot/v1_20_R4/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../../pom.xml + ../../../../pom.xml v1_20_R4 diff --git a/pathetic-provider/spigot/v1_20_R4/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R4/v1_20_R4ChunkDataProviderImpl.java b/pathetic-bukkit/pathetic-provider/spigot/v1_20_R4/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R4/v1_20_R4ChunkDataProviderImpl.java similarity index 100% rename from pathetic-provider/spigot/v1_20_R4/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R4/v1_20_R4ChunkDataProviderImpl.java rename to pathetic-bukkit/pathetic-provider/spigot/v1_20_R4/src/main/java/de/metaphoriker/pathetic/provider/v1_20_R4/v1_20_R4ChunkDataProviderImpl.java diff --git a/pathetic-provider/spigot/v1_21_R1/pom.xml b/pathetic-bukkit/pathetic-provider/spigot/v1_21_R1/pom.xml similarity index 95% rename from pathetic-provider/spigot/v1_21_R1/pom.xml rename to pathetic-bukkit/pathetic-provider/spigot/v1_21_R1/pom.xml index 1cf04b43..4e37c78b 100644 --- a/pathetic-provider/spigot/v1_21_R1/pom.xml +++ b/pathetic-bukkit/pathetic-provider/spigot/v1_21_R1/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../../pom.xml + ../../../../pom.xml v1_21_R1 diff --git a/pathetic-provider/spigot/v1_21_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R1/v1_21_R1ChunkDataProviderImpl.java b/pathetic-bukkit/pathetic-provider/spigot/v1_21_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R1/v1_21_R1ChunkDataProviderImpl.java similarity index 100% rename from pathetic-provider/spigot/v1_21_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R1/v1_21_R1ChunkDataProviderImpl.java rename to pathetic-bukkit/pathetic-provider/spigot/v1_21_R1/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R1/v1_21_R1ChunkDataProviderImpl.java diff --git a/pathetic-provider/spigot/v1_21_R2/pom.xml b/pathetic-bukkit/pathetic-provider/spigot/v1_21_R2/pom.xml similarity index 95% rename from pathetic-provider/spigot/v1_21_R2/pom.xml rename to pathetic-bukkit/pathetic-provider/spigot/v1_21_R2/pom.xml index 8bc4f3a3..c3ff65dd 100644 --- a/pathetic-provider/spigot/v1_21_R2/pom.xml +++ b/pathetic-bukkit/pathetic-provider/spigot/v1_21_R2/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../../pom.xml + ../../../../pom.xml v1_21_R2 diff --git a/pathetic-provider/spigot/v1_21_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R2/v1_21_R2ChunkDataProviderImpl.java b/pathetic-bukkit/pathetic-provider/spigot/v1_21_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R2/v1_21_R2ChunkDataProviderImpl.java similarity index 100% rename from pathetic-provider/spigot/v1_21_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R2/v1_21_R2ChunkDataProviderImpl.java rename to pathetic-bukkit/pathetic-provider/spigot/v1_21_R2/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R2/v1_21_R2ChunkDataProviderImpl.java diff --git a/pathetic-provider/spigot/v1_21_R3/pom.xml b/pathetic-bukkit/pathetic-provider/spigot/v1_21_R3/pom.xml similarity index 95% rename from pathetic-provider/spigot/v1_21_R3/pom.xml rename to pathetic-bukkit/pathetic-provider/spigot/v1_21_R3/pom.xml index 4b0c4a9c..235fe3ea 100644 --- a/pathetic-provider/spigot/v1_21_R3/pom.xml +++ b/pathetic-bukkit/pathetic-provider/spigot/v1_21_R3/pom.xml @@ -7,7 +7,7 @@ de.metaphoriker pathetic-main 3.3.1 - ../../../pom.xml + ../../../../pom.xml v1_21_R3 diff --git a/pathetic-provider/spigot/v1_21_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R3ChunkDataProviderImpl.java b/pathetic-bukkit/pathetic-provider/spigot/v1_21_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R3ChunkDataProviderImpl.java similarity index 100% rename from pathetic-provider/spigot/v1_21_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R3ChunkDataProviderImpl.java rename to pathetic-bukkit/pathetic-provider/spigot/v1_21_R3/src/main/java/de/metaphoriker/pathetic/provider/v1_21_R3ChunkDataProviderImpl.java diff --git a/pathetic-provider/spigot/v1_8/pom.xml b/pathetic-bukkit/pathetic-provider/spigot/v1_8/pom.xml similarity index 95% rename from pathetic-provider/spigot/v1_8/pom.xml rename to pathetic-bukkit/pathetic-provider/spigot/v1_8/pom.xml index 38ccd115..513a2772 100644 --- a/pathetic-provider/spigot/v1_8/pom.xml +++ b/pathetic-bukkit/pathetic-provider/spigot/v1_8/pom.xml @@ -6,7 +6,7 @@ pathetic-main de.metaphoriker 3.3.1 - ../../../pom.xml + ../../../../pom.xml 4.0.0 diff --git a/pathetic-provider/spigot/v1_8/src/main/java/de/metaphoriker/pathetic/provider/v1_8/v1_8ChunkDataProviderImpl.java b/pathetic-bukkit/pathetic-provider/spigot/v1_8/src/main/java/de/metaphoriker/pathetic/provider/v1_8/v1_8ChunkDataProviderImpl.java similarity index 100% rename from pathetic-provider/spigot/v1_8/src/main/java/de/metaphoriker/pathetic/provider/v1_8/v1_8ChunkDataProviderImpl.java rename to pathetic-bukkit/pathetic-provider/spigot/v1_8/src/main/java/de/metaphoriker/pathetic/provider/v1_8/v1_8ChunkDataProviderImpl.java diff --git a/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProvider.java b/pathetic-bukkit/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProvider.java similarity index 100% rename from pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProvider.java rename to pathetic-bukkit/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProvider.java diff --git a/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java b/pathetic-bukkit/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java similarity index 100% rename from pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java rename to pathetic-bukkit/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java diff --git a/pom.xml b/pom.xml index 97b64ae5..77a05f30 100644 --- a/pom.xml +++ b/pom.xml @@ -18,27 +18,27 @@ pathetic-api pathetic-bukkit - pathetic-example + pathetic-bukkit/pathetic-example pathetic-engine - pathetic-provider - pathetic-provider/paper - pathetic-provider/spigot - pathetic-provider/spigot/v1_8 - pathetic-provider/spigot/v1_12 - pathetic-provider/spigot/v1_15 - pathetic-provider/spigot/v1_16 - pathetic-provider/spigot/v1_17 - pathetic-provider/spigot/v1_18 - pathetic-provider/spigot/v1_18_R2 - pathetic-provider/spigot/v1_19_R2 - pathetic-provider/spigot/v1_19_R3 - pathetic-provider/spigot/v1_20_R1 - pathetic-provider/spigot/v1_20_R2 - pathetic-provider/spigot/v1_20_R3 - pathetic-provider/spigot/v1_20_R4 - pathetic-provider/spigot/v1_21_R1 - pathetic-provider/spigot/v1_21_R2 - pathetic-provider/spigot/v1_21_R3 + pathetic-bukkit/pathetic-provider + pathetic-bukkit/pathetic-provider/paper + pathetic-bukkit/pathetic-provider/spigot + pathetic-bukkit/pathetic-provider/spigot/v1_8 + pathetic-bukkit/pathetic-provider/spigot/v1_12 + pathetic-bukkit/pathetic-provider/spigot/v1_15 + pathetic-bukkit/pathetic-provider/spigot/v1_16 + pathetic-bukkit/pathetic-provider/spigot/v1_17 + pathetic-bukkit/pathetic-provider/spigot/v1_18 + pathetic-bukkit/pathetic-provider/spigot/v1_18_R2 + pathetic-bukkit/pathetic-provider/spigot/v1_19_R2 + pathetic-bukkit/pathetic-provider/spigot/v1_19_R3 + pathetic-bukkit/pathetic-provider/spigot/v1_20_R1 + pathetic-bukkit/pathetic-provider/spigot/v1_20_R2 + pathetic-bukkit/pathetic-provider/spigot/v1_20_R3 + pathetic-bukkit/pathetic-provider/spigot/v1_20_R4 + pathetic-bukkit/pathetic-provider/spigot/v1_21_R1 + pathetic-bukkit/pathetic-provider/spigot/v1_21_R2 + pathetic-bukkit/pathetic-provider/spigot/v1_21_R3 From b7e9582e712380f1e47a78c2cdcc854c5f30ccfc Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Thu, 19 Dec 2024 08:55:11 +0100 Subject: [PATCH 34/39] chore: important changes to the structure --- pathetic-bukkit/pathetic-provider/pom.xml | 28 ----------- .../pathetic-provider/resolver/pom.xml | 50 +++++++++++++++++++ .../resolver}/ChunkDataProviderResolver.java | 3 +- pathetic-bukkit/pom.xml | 19 +++++++ .../bukkit/provider/FailingBlockProvider.java | 2 +- pom.xml | 1 + 6 files changed, 73 insertions(+), 30 deletions(-) create mode 100644 pathetic-bukkit/pathetic-provider/resolver/pom.xml rename pathetic-bukkit/pathetic-provider/{src/main/java/de/metaphoriker/pathetic/provider => resolver/src/main/java/de/metaphoriker/pathetic/resolver}/ChunkDataProviderResolver.java (90%) diff --git a/pathetic-bukkit/pathetic-provider/pom.xml b/pathetic-bukkit/pathetic-provider/pom.xml index 4c401ecb..63ef37a4 100644 --- a/pathetic-bukkit/pathetic-provider/pom.xml +++ b/pathetic-bukkit/pathetic-provider/pom.xml @@ -22,38 +22,10 @@ provided - - org.slf4j - slf4j-api - 2.0.16 - provided - - - - org.projectlombok - lombok - 1.18.36 - provided - - de.metaphoriker pathetic-api - - - de.metaphoriker - paper - 3.3.1 - compile - - - - de.metaphoriker - spigot - 3.3.1 - compile - diff --git a/pathetic-bukkit/pathetic-provider/resolver/pom.xml b/pathetic-bukkit/pathetic-provider/resolver/pom.xml new file mode 100644 index 00000000..4070b5bc --- /dev/null +++ b/pathetic-bukkit/pathetic-provider/resolver/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + de.metaphoriker + pathetic-main + 3.3.1 + ../../../pom.xml + + + resolver + + + + org.slf4j + slf4j-api + 2.0.16 + provided + + + + org.projectlombok + lombok + 1.18.36 + provided + + + + de.metaphoriker + pathetic-api + + + + de.metaphoriker + paper + 3.3.1 + compile + + + + de.metaphoriker + spigot + 3.3.1 + compile + + + + diff --git a/pathetic-bukkit/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java b/pathetic-bukkit/pathetic-provider/resolver/src/main/java/de/metaphoriker/pathetic/resolver/ChunkDataProviderResolver.java similarity index 90% rename from pathetic-bukkit/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java rename to pathetic-bukkit/pathetic-provider/resolver/src/main/java/de/metaphoriker/pathetic/resolver/ChunkDataProviderResolver.java index f5480a44..22b043d9 100644 --- a/pathetic-bukkit/pathetic-provider/src/main/java/de/metaphoriker/pathetic/provider/ChunkDataProviderResolver.java +++ b/pathetic-bukkit/pathetic-provider/resolver/src/main/java/de/metaphoriker/pathetic/resolver/ChunkDataProviderResolver.java @@ -1,5 +1,6 @@ -package de.metaphoriker.pathetic.provider; +package de.metaphoriker.pathetic.resolver; +import de.metaphoriker.pathetic.provider.ChunkDataProvider; import de.metaphoriker.pathetic.provider.paper.PaperChunkDataProvider; import de.metaphoriker.pathetic.provider.spigot.SpigotChunkDataProviderResolver; import lombok.Getter; diff --git a/pathetic-bukkit/pom.xml b/pathetic-bukkit/pom.xml index f599e035..c64fdf8e 100644 --- a/pathetic-bukkit/pom.xml +++ b/pathetic-bukkit/pom.xml @@ -68,6 +68,25 @@ de.metaphoriker pathetic-engine 3.3.1 + + + org.projectlombok + lombok + + + org.slf4j + slf4j-api + + + com.google.guava + guava + + + + + de.metaphoriker + resolver + 3.3.1 compile diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java index 5d96b4f8..64bd3807 100644 --- a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java @@ -7,7 +7,7 @@ import de.metaphoriker.pathetic.bukkit.provider.world.WorldDomain; import de.metaphoriker.pathetic.bukkit.util.BukkitVersionUtil; import de.metaphoriker.pathetic.bukkit.util.ChunkUtil; -import de.metaphoriker.pathetic.provider.ChunkDataProviderResolver; +import de.metaphoriker.pathetic.resolver.ChunkDataProviderResolver; import de.metaphoriker.pathetic.util.ErrorLogger; import java.util.Map; import java.util.Optional; diff --git a/pom.xml b/pom.xml index 77a05f30..1f4c365e 100644 --- a/pom.xml +++ b/pom.xml @@ -39,6 +39,7 @@ pathetic-bukkit/pathetic-provider/spigot/v1_21_R1 pathetic-bukkit/pathetic-provider/spigot/v1_21_R2 pathetic-bukkit/pathetic-provider/spigot/v1_21_R3 + pathetic-bukkit/pathetic-provider/resolver From eda9d477fa3d7df81ec379a09d294a7298a7b7ed Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Thu, 19 Dec 2024 09:54:38 +0100 Subject: [PATCH 35/39] refact: only including stuff which is actually needed by guava --- pathetic-engine/pom.xml | 54 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/pathetic-engine/pom.xml b/pathetic-engine/pom.xml index 3a46df17..dcb0b3f6 100644 --- a/pathetic-engine/pom.xml +++ b/pathetic-engine/pom.xml @@ -50,6 +50,60 @@ org/jheaps/AddressableHeap$Handle.class + + com.google.guava:guava + + com/google/common/hash/BloomFilter.class + com/google/common/hash/BloomFilterStrategies.class + com/google/common/hash/BloomFilter$Strategy.class + com/google/common/hash/BloomFilterStrategies$1.class + com/google/common/hash/BloomFilterStrategies$2.class + com/google/common/hash/BloomFilterStrategies$LockFreeBitArray.class + com/google/common/hash/Funnel.class + com/google/common/hash/PrimitiveSink.class + + com/google/common/collect/Iterables.class + com/google/common/collect/Iterators.class + com/google/common/collect/ImmutableList.class + com/google/common/collect/RegularImmutableList.class + com/google/common/collect/SingletonImmutableList.class + com/google/common/collect/UnmodifiableIterator.class + com/google/common/collect/AbstractIndexedListIterator.class + + com/google/common/base/Predicate.class + com/google/common/base/Supplier.class + com/google/common/base/Objects.class + + com/google/common/base/Preconditions.class + com/google/common/math/LongMath.class + com/google/common/math/LongMath$1.class + com/google/common/primitives/Ints.class + com/google/common/primitives/UnsignedBytes.class + com/google/common/primitives/IntsMethodsForWeb.class + com/google/common/primitives/Longs.class + com/google/common/hash/Hashing.class + com/google/common/hash/Murmur3_32HashFunction.class + com/google/common/hash/Murmur3_128HashFunction.class + com/google/common/hash/AbstractCompositeHashFunction.class + com/google/common/hash/Striped64.class + com/google/common/hash/LongAddable.class + com/google/common/hash/LongAddables.class + com/google/common/hash/LongAddables$PureJavaLongAddable.class + com/google/common/hash/LongAddables$2.class + com/google/common/hash/LongAdder.class + com/google/common/hash/HashFunction.class + com/google/common/hash/Hasher.class + com/google/common/hash/HashCode.class + com/google/common/hash/HashCode$BytesHashCode.class + com/google/common/hash/HashCode$IntHashCode.class + com/google/common/hash/HashCode$LongHashCode.class + com/google/common/hash/AbstractHasher.class + com/google/common/hash/AbstractHashFunction.class + com/google/common/hash/AbstractStreamingHasher.class + com/google/common/hash/Murmur3_128HashFunction$Murmur3_128Hasher.class + com/google/common/hash/Java8Compatibility.class + +
From 35ebe6b1630bebd9fefebc9d613f097d6f1dee30 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Thu, 19 Dec 2024 10:12:38 +0100 Subject: [PATCH 36/39] chore: example and provider poms now have relativePaths --- pathetic-bukkit/pathetic-example/pom.xml | 1 + pathetic-bukkit/pathetic-provider/pom.xml | 1 + 2 files changed, 2 insertions(+) diff --git a/pathetic-bukkit/pathetic-example/pom.xml b/pathetic-bukkit/pathetic-example/pom.xml index cf8c1804..26d3c9f6 100644 --- a/pathetic-bukkit/pathetic-example/pom.xml +++ b/pathetic-bukkit/pathetic-example/pom.xml @@ -8,6 +8,7 @@ pathetic-main de.metaphoriker 3.3.1 + ../../pom.xml pathetic-example diff --git a/pathetic-bukkit/pathetic-provider/pom.xml b/pathetic-bukkit/pathetic-provider/pom.xml index 63ef37a4..4a24bfdb 100644 --- a/pathetic-bukkit/pathetic-provider/pom.xml +++ b/pathetic-bukkit/pathetic-provider/pom.xml @@ -7,6 +7,7 @@ pathetic-main de.metaphoriker 3.3.1 + ../../pom.xml 4.0.0 From 1ea9f15408c9ac457fdaecb2e56eafd4199c6280 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Thu, 19 Dec 2024 10:27:17 +0100 Subject: [PATCH 37/39] feat: PatheticTest is now pathetic-example --- pathetic-bukkit/pathetic-example/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pathetic-bukkit/pathetic-example/pom.xml b/pathetic-bukkit/pathetic-example/pom.xml index 26d3c9f6..af4b29a9 100644 --- a/pathetic-bukkit/pathetic-example/pom.xml +++ b/pathetic-bukkit/pathetic-example/pom.xml @@ -15,7 +15,7 @@ 3.3.1 jar - PatheticTest + pathetic-example 21 From 4fdaa5d4ad4a6d2bbffad39b57cb67beb35dd17b Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Thu, 19 Dec 2024 10:34:34 +0100 Subject: [PATCH 38/39] feat: remove build from bukkit module --- pathetic-bukkit/pom.xml | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/pathetic-bukkit/pom.xml b/pathetic-bukkit/pom.xml index c64fdf8e..ac589f7a 100644 --- a/pathetic-bukkit/pom.xml +++ b/pathetic-bukkit/pom.xml @@ -12,39 +12,6 @@ pathetic-bukkit 3.3.1 - - - - src/main/resources - true - - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.5.1 - - - package - - shade - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 8 - 8 - - - - - org.spigotmc From 76270675123d54d818264778ec0750f4e0379a98 Mon Sep 17 00:00:00 2001 From: Metaphoriker Date: Thu, 19 Dec 2024 10:38:11 +0100 Subject: [PATCH 39/39] refact: move classes into engine package --- .../de/metaphoriker/pathetic/bukkit/PatheticBukkit.java | 4 ++-- .../metaphoriker/pathetic/bukkit/mapper/BukkitMapper.java | 2 +- .../pathetic/bukkit/provider/FailingBlockProvider.java | 2 +- .../pathetic/bukkit/provider/world/WorldDomain.java | 2 +- .../de/metaphoriker/pathetic/bukkit/util/ChunkUtil.java | 2 +- .../de/metaphoriker/pathetic/bukkit/util/WatchdogUtil.java | 2 +- .../src/main/java/de/metaphoriker/pathetic/engine/Node.java | 2 +- .../de/metaphoriker/pathetic/{ => engine}/Pathetic.java | 4 ++-- .../pathetic/engine/pathfinder/AStarPathfinder.java | 6 +++--- .../pathetic/engine/pathfinder/AbstractPathfinder.java | 2 +- .../de/metaphoriker/pathetic/engine/result/PathImpl.java | 2 +- .../pathetic/{ => engine}/util/ComputingCache.java | 2 +- .../pathetic/{ => engine}/util/ErrorLogger.java | 4 ++-- .../pathetic/{ => engine}/util/ExpiringHashMap.java | 2 +- .../pathetic/{ => engine}/util/GridRegionData.java | 2 +- .../de/metaphoriker/pathetic/{ => engine}/util/Tuple3.java | 2 +- 16 files changed, 21 insertions(+), 21 deletions(-) rename pathetic-engine/src/main/java/de/metaphoriker/pathetic/{ => engine}/Pathetic.java (88%) rename pathetic-engine/src/main/java/de/metaphoriker/pathetic/{ => engine}/util/ComputingCache.java (87%) rename pathetic-engine/src/main/java/de/metaphoriker/pathetic/{ => engine}/util/ErrorLogger.java (91%) rename pathetic-engine/src/main/java/de/metaphoriker/pathetic/{ => engine}/util/ExpiringHashMap.java (97%) rename pathetic-engine/src/main/java/de/metaphoriker/pathetic/{ => engine}/util/GridRegionData.java (97%) rename pathetic-engine/src/main/java/de/metaphoriker/pathetic/{ => engine}/util/Tuple3.java (92%) diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/PatheticBukkit.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/PatheticBukkit.java index bd6370b8..342d5bc9 100644 --- a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/PatheticBukkit.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/PatheticBukkit.java @@ -1,9 +1,9 @@ package de.metaphoriker.pathetic.bukkit; -import de.metaphoriker.pathetic.Pathetic; +import de.metaphoriker.pathetic.engine.Pathetic; import de.metaphoriker.pathetic.bukkit.listener.ChunkInvalidateListener; import de.metaphoriker.pathetic.bukkit.util.BukkitVersionUtil; -import de.metaphoriker.pathetic.util.ErrorLogger; +import de.metaphoriker.pathetic.engine.util.ErrorLogger; import lombok.experimental.UtilityClass; import lombok.extern.slf4j.Slf4j; import org.bukkit.Bukkit; diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/mapper/BukkitMapper.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/mapper/BukkitMapper.java index d5a9c475..43f85306 100644 --- a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/mapper/BukkitMapper.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/mapper/BukkitMapper.java @@ -14,7 +14,7 @@ import de.metaphoriker.pathetic.api.wrapper.PathEnvironment; import de.metaphoriker.pathetic.api.wrapper.PathPosition; import de.metaphoriker.pathetic.api.wrapper.PathVector; -import de.metaphoriker.pathetic.util.ErrorLogger; +import de.metaphoriker.pathetic.engine.util.ErrorLogger; @UtilityClass public class BukkitMapper { diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java index 64bd3807..042a9069 100644 --- a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/FailingBlockProvider.java @@ -8,7 +8,7 @@ import de.metaphoriker.pathetic.bukkit.util.BukkitVersionUtil; import de.metaphoriker.pathetic.bukkit.util.ChunkUtil; import de.metaphoriker.pathetic.resolver.ChunkDataProviderResolver; -import de.metaphoriker.pathetic.util.ErrorLogger; +import de.metaphoriker.pathetic.engine.util.ErrorLogger; import java.util.Map; import java.util.Optional; import java.util.UUID; diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/world/WorldDomain.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/world/WorldDomain.java index 29cb2644..28f37c84 100644 --- a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/world/WorldDomain.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/provider/world/WorldDomain.java @@ -1,6 +1,6 @@ package de.metaphoriker.pathetic.bukkit.provider.world; -import de.metaphoriker.pathetic.util.ExpiringHashMap; +import de.metaphoriker.pathetic.engine.util.ExpiringHashMap; import java.util.Map; import java.util.Optional; import org.bukkit.ChunkSnapshot; diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/ChunkUtil.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/ChunkUtil.java index 080f10c6..b9a1fd9c 100644 --- a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/ChunkUtil.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/ChunkUtil.java @@ -1,6 +1,6 @@ package de.metaphoriker.pathetic.bukkit.util; -import de.metaphoriker.pathetic.util.ErrorLogger; +import de.metaphoriker.pathetic.engine.util.ErrorLogger; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import lombok.SneakyThrows; diff --git a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/WatchdogUtil.java b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/WatchdogUtil.java index 237ebf2b..4c258dc6 100644 --- a/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/WatchdogUtil.java +++ b/pathetic-bukkit/src/main/java/de/metaphoriker/pathetic/bukkit/util/WatchdogUtil.java @@ -1,6 +1,6 @@ package de.metaphoriker.pathetic.bukkit.util; -import de.metaphoriker.pathetic.util.ErrorLogger; +import de.metaphoriker.pathetic.engine.util.ErrorLogger; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import lombok.experimental.UtilityClass; diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/Node.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/Node.java index 80146d76..e9cf3bb3 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/Node.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/Node.java @@ -8,7 +8,7 @@ import de.metaphoriker.pathetic.api.pathing.configuration.HeuristicWeights; import de.metaphoriker.pathetic.api.wrapper.PathPosition; import de.metaphoriker.pathetic.api.wrapper.PathVector; -import de.metaphoriker.pathetic.util.ComputingCache; +import de.metaphoriker.pathetic.engine.util.ComputingCache; @Getter @EqualsAndHashCode(onlyExplicitlyIncluded = true) diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/Pathetic.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/Pathetic.java similarity index 88% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/Pathetic.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/Pathetic.java index 6b20f42a..3dc6d3a4 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/Pathetic.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/Pathetic.java @@ -1,6 +1,6 @@ -package de.metaphoriker.pathetic; +package de.metaphoriker.pathetic.engine; -import de.metaphoriker.pathetic.util.ErrorLogger; +import de.metaphoriker.pathetic.engine.util.ErrorLogger; import lombok.Getter; import lombok.experimental.UtilityClass; diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java index cfd2fd53..d50d8891 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AStarPathfinder.java @@ -10,9 +10,9 @@ import de.metaphoriker.pathetic.api.wrapper.PathVector; import de.metaphoriker.pathetic.engine.Node; import de.metaphoriker.pathetic.engine.Offset; -import de.metaphoriker.pathetic.util.ExpiringHashMap; -import de.metaphoriker.pathetic.util.GridRegionData; -import de.metaphoriker.pathetic.util.Tuple3; +import de.metaphoriker.pathetic.engine.util.ExpiringHashMap; +import de.metaphoriker.pathetic.engine.util.GridRegionData; +import de.metaphoriker.pathetic.engine.util.Tuple3; import java.util.*; import org.jheaps.tree.FibonacciHeap; diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AbstractPathfinder.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AbstractPathfinder.java index 75940f63..09464dc4 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AbstractPathfinder.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/pathfinder/AbstractPathfinder.java @@ -14,7 +14,7 @@ import de.metaphoriker.pathetic.engine.Node; import de.metaphoriker.pathetic.engine.result.PathImpl; import de.metaphoriker.pathetic.engine.result.PathfinderResultImpl; -import de.metaphoriker.pathetic.util.ErrorLogger; +import de.metaphoriker.pathetic.engine.util.ErrorLogger; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/result/PathImpl.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/result/PathImpl.java index d173da08..a403bccd 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/result/PathImpl.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/result/PathImpl.java @@ -17,7 +17,7 @@ import de.metaphoriker.pathetic.api.pathing.result.Path; import de.metaphoriker.pathetic.api.util.ParameterizedSupplier; import de.metaphoriker.pathetic.api.wrapper.PathPosition; -import de.metaphoriker.pathetic.util.ErrorLogger; +import de.metaphoriker.pathetic.engine.util.ErrorLogger; @Value public class PathImpl implements Path { diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ComputingCache.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/util/ComputingCache.java similarity index 87% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ComputingCache.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/util/ComputingCache.java index 59b4c618..af7c4c5c 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ComputingCache.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/util/ComputingCache.java @@ -1,4 +1,4 @@ -package de.metaphoriker.pathetic.util; +package de.metaphoriker.pathetic.engine.util; import java.util.function.Supplier; diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ErrorLogger.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/util/ErrorLogger.java similarity index 91% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ErrorLogger.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/util/ErrorLogger.java index b4e24847..14e65ff7 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ErrorLogger.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/util/ErrorLogger.java @@ -1,7 +1,7 @@ -package de.metaphoriker.pathetic.util; +package de.metaphoriker.pathetic.engine.util; import lombok.extern.slf4j.Slf4j; -import de.metaphoriker.pathetic.Pathetic; +import de.metaphoriker.pathetic.engine.Pathetic; @Slf4j public class ErrorLogger { diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ExpiringHashMap.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/util/ExpiringHashMap.java similarity index 97% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ExpiringHashMap.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/util/ExpiringHashMap.java index 69f62c3b..488dd9fc 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/ExpiringHashMap.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/util/ExpiringHashMap.java @@ -1,4 +1,4 @@ -package de.metaphoriker.pathetic.util; +package de.metaphoriker.pathetic.engine.util; import java.util.concurrent.ConcurrentHashMap; import lombok.Getter; diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/GridRegionData.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/util/GridRegionData.java similarity index 97% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/GridRegionData.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/util/GridRegionData.java index 2627d61a..1f5496f4 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/GridRegionData.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/util/GridRegionData.java @@ -1,4 +1,4 @@ -package de.metaphoriker.pathetic.util; +package de.metaphoriker.pathetic.engine.util; import com.google.common.hash.BloomFilter; import com.google.common.hash.Funnel; diff --git a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/Tuple3.java b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/util/Tuple3.java similarity index 92% rename from pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/Tuple3.java rename to pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/util/Tuple3.java index c1ceb0e1..711f6f87 100644 --- a/pathetic-engine/src/main/java/de/metaphoriker/pathetic/util/Tuple3.java +++ b/pathetic-engine/src/main/java/de/metaphoriker/pathetic/engine/util/Tuple3.java @@ -1,4 +1,4 @@ -package de.metaphoriker.pathetic.util; +package de.metaphoriker.pathetic.engine.util; import java.util.Objects;