PATTERN_TEST = PATTERN.asMatchPredicate();
13 | private static final char SEPARATOR = ':';
14 | private final String namespace;
15 | private final String key;
16 |
17 | public NamespacedKey(String namespace, String key) {
18 | this.namespace = namespace;
19 | this.key = key;
20 | }
21 |
22 | public static NamespacedKey fromString(String value) {
23 | if (!PATTERN_TEST.test(value)) {
24 | throw new IllegalArgumentException("NamespacedKey must match pattern '" + PATTERN.pattern() + "'. Input: '" + value + "'.");
25 | }
26 | String[] splits = value.split(":");
27 | return new NamespacedKey(splits[0], splits[1]);
28 | }
29 |
30 | @Override
31 | public String toString() {
32 | return namespace + SEPARATOR + key;
33 | }
34 |
35 | @Override
36 | public boolean equals(Object o) {
37 | if (this == o) {
38 | return true;
39 | }
40 | if (o == null || getClass() != o.getClass()) {
41 | return false;
42 | }
43 | NamespacedKey that = (NamespacedKey) o;
44 | return Objects.equals(namespace, that.namespace) && Objects.equals(key, that.key);
45 | }
46 |
47 | @Override
48 | public int hashCode() {
49 | return toString().hashCode();
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/misc/Pagination.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.misc;
2 |
3 | import lombok.Getter;
4 |
5 | @Getter
6 | public final class Pagination extends Range {
7 |
8 | private final int page;
9 | private final int size;
10 |
11 | public static Pagination page(int page, int size) {
12 | return new Pagination(page, size);
13 | }
14 |
15 | Pagination(int page, int size) {
16 | super(page * size, size);
17 | this.page = page;
18 | this.size = size;
19 | }
20 |
21 | public int getPageCount(int elements) {
22 | return (int) Math.ceil(elements / (float) size);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/misc/PathPlayer.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.misc;
2 |
3 | import de.cubbossa.disposables.Disposable;
4 | import java.util.UUID;
5 | import net.kyori.adventure.text.Component;
6 | import net.kyori.adventure.text.ComponentLike;
7 |
8 | public interface PathPlayer extends Disposable {
9 |
10 | static
PathPlayer
wrap(P player) {
11 | return (PathPlayer
) PathPlayerProvider.
get().wrap(player);
12 | }
13 |
14 | static
PathPlayer
wrap(UUID uuid) {
15 | return (PathPlayer
) PathPlayerProvider.
get().wrap(uuid);
16 | }
17 |
18 | static
PathPlayer
consoleSender() {
19 | return (PathPlayer
) PathPlayerProvider.
get().consoleSender();
20 | }
21 |
22 | UUID getUniqueId();
23 |
24 | Class
getPlayerClass();
25 |
26 | String getName();
27 |
28 | Component getDisplayName();
29 |
30 | Location getLocation();
31 |
32 | boolean hasPermission(String permission);
33 |
34 | P unwrap();
35 |
36 | void sendMessage(ComponentLike message);
37 | }
38 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/misc/PathPlayerProvider.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.misc;
2 |
3 | import java.util.UUID;
4 |
5 | public abstract class PathPlayerProvider
{
6 |
7 | private static PathPlayerProvider> instance;
8 |
9 | public static
PathPlayerProvider
get() {
10 | return (PathPlayerProvider
) instance;
11 | }
12 |
13 | public static void set(PathPlayerProvider> provider) {
14 | instance = provider;
15 | }
16 |
17 | public abstract PathPlayer extends P> wrap(P player);
18 |
19 | public abstract PathPlayer extends P> wrap(UUID uuid);
20 |
21 | public abstract PathPlayer extends P> consoleSender();
22 | }
23 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/misc/PermissionHolder.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.misc;
2 |
3 | import org.jetbrains.annotations.Nullable;
4 |
5 | /**
6 | * Represents an object that stores a permission node.
7 | * The permission node is used to provide and prevent access to features of the plugin.
8 | */
9 | public interface PermissionHolder {
10 |
11 | /**
12 | * @return null, if no permission is set. Null will by default be interpreted as "access".
13 | */
14 | @Nullable
15 | String getPermission();
16 |
17 | /**
18 | * @param permission The permission node to restrict this object or null, if unrestricted access.
19 | */
20 | void setPermission(@Nullable String permission);
21 | }
22 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/misc/Range.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.misc;
2 |
3 | import lombok.AccessLevel;
4 | import lombok.Getter;
5 | import lombok.RequiredArgsConstructor;
6 |
7 | @Getter
8 | @RequiredArgsConstructor(access = AccessLevel.PACKAGE)
9 | public class Range {
10 |
11 | private final int offset;
12 | private final int limit;
13 |
14 | public static Range range(int offset, int limit) {
15 | return new Range(offset, limit);
16 | }
17 |
18 | public int getStart() {
19 | return offset;
20 | }
21 |
22 | public int getEndExclusive() {
23 | return offset + limit;
24 | }
25 |
26 | @Override
27 | public String toString() {
28 | return "Pagination{" +
29 | "offset=" + offset +
30 | ", limit=" + limit +
31 | '}';
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/misc/Task.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.misc;
2 |
3 | public interface Task {
4 | }
5 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/misc/World.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.misc;
2 |
3 | import java.util.UUID;
4 |
5 | public interface World {
6 |
7 | UUID getUniqueId();
8 |
9 | String getName();
10 | }
11 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/navigation/Navigation.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.navigation;
2 |
3 | import de.cubbossa.disposables.Disposable;
4 | import de.cubbossa.pathfinder.misc.Location;
5 | import de.cubbossa.pathfinder.misc.PathPlayer;
6 | import de.cubbossa.pathfinder.visualizer.VisualizerPath;
7 | import java.util.List;
8 |
9 | public interface Navigation extends Disposable {
10 |
11 | PathPlayer viewer();
12 |
13 | VisualizerPath renderer();
14 |
15 | NavigationLocation startLocation();
16 |
17 | NavigationLocation endLocation();
18 |
19 | List pathControlPoints();
20 |
21 | void complete();
22 |
23 | void cancel();
24 |
25 | Navigation persist();
26 |
27 | Navigation cancelWhenTargetInRange();
28 |
29 | Navigation cancelWhenTargetInRange(double range);
30 |
31 | void onEnd(Runnable runnable);
32 |
33 | void onComplete(Runnable runnable);
34 |
35 | void onCancel(Runnable runnable);
36 | }
37 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/navigation/NavigationConstraint.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.navigation;
2 |
3 | import de.cubbossa.pathfinder.node.Node;
4 | import java.util.Collection;
5 | import java.util.UUID;
6 |
7 | /**
8 | * Navigation filters allow to filter the required targets of the navigation.
9 | * This might be used to filter nodes that have certain {@link de.cubbossa.pathfinder.group.Modifier}s applied.
10 | * If the result is empty, navigation will be cancelled.
11 | */
12 | public interface NavigationConstraint {
13 |
14 | /**
15 | * Filters the requested target locations, for some might not be supposed to navigate to in certain contexts.
16 | * @param playerId The UUID of the player that requested the navigation.
17 | * @param scope The target nodes the player requests to navigate to.
18 | * @return The filtered scope that has been provided.
19 | */
20 | Collection filterTargetNodes(UUID playerId, Collection scope);
21 | }
22 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/navigation/NavigationLocation.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.navigation;
2 |
3 | import de.cubbossa.pathfinder.node.Node;
4 |
5 | public interface NavigationLocation {
6 |
7 | static NavigationLocation fixedGraphNode(Node node) {
8 | return new NavigationLocationImpl(node, true, false);
9 | }
10 |
11 | static NavigationLocation fixedExternalNode(Node node) {
12 | return new NavigationLocationImpl(node, true, true);
13 | }
14 |
15 | static NavigationLocation movingGraphNode(Node node) {
16 | return new NavigationLocationImpl(node, false, false);
17 | }
18 |
19 | static NavigationLocation movingExternalNode(Node node) {
20 | return new NavigationLocationImpl(node, false, true);
21 | }
22 |
23 | Node getNode();
24 |
25 | void setNode(Node node);
26 |
27 | boolean isFixedPosition();
28 |
29 | boolean isExternal();
30 | }
31 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/navigation/NavigationLocationImpl.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.navigation;
2 |
3 | import com.google.common.base.Preconditions;
4 | import de.cubbossa.pathfinder.graph.GraphEntrySolver;
5 | import de.cubbossa.pathfinder.node.Node;
6 | import lombok.Getter;
7 |
8 | public class NavigationLocationImpl implements NavigationLocation {
9 |
10 | @Getter
11 | private Node node;
12 | private final boolean fixed;
13 | private final boolean external;
14 |
15 | NavigationLocationImpl(Node node, boolean fixed, boolean external) {
16 | Preconditions.checkNotNull(node);
17 |
18 | this.node = node;
19 | this.fixed = fixed;
20 | this.external = external;
21 | }
22 |
23 | @Override
24 | public void setNode(Node node) {
25 | this.node = node;
26 | }
27 |
28 | @Override
29 | public boolean isFixedPosition() {
30 | return fixed;
31 | }
32 |
33 | @Override
34 | public boolean isExternal() {
35 | return external;
36 | }
37 |
38 | @Override
39 | public String toString() {
40 | return "NavigationLocation{node=" + node.toString() + "}";
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/navigation/NavigationModuleProvider.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.navigation;
2 |
3 | public class NavigationModuleProvider {
4 |
5 | private static NavigationModule> module;
6 |
7 | public static NavigationModule get() {
8 | if (module == null) {
9 | throw new IllegalStateException("Accessing NavigationModule before initialization.");
10 | }
11 | return (NavigationModule) module;
12 | }
13 |
14 | public static void set(NavigationModule> instance) {
15 | module = instance;
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/navigation/Navigator.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.navigation;
2 |
3 | import de.cubbossa.disposables.Disposable;
4 | import de.cubbossa.pathfinder.graph.NoPathFoundException;
5 | import de.cubbossa.pathfinder.misc.PathPlayer;
6 | import de.cubbossa.pathfinder.node.Node;
7 | import de.cubbossa.pathfinder.visualizer.PathView;
8 | import de.cubbossa.pathfinder.visualizer.PathVisualizer;
9 | import de.cubbossa.pathfinder.visualizer.VisualizerPath;
10 | import java.util.List;
11 |
12 | public interface Navigator extends Disposable {
13 |
14 | List createPath(Route route) throws NoPathFoundException;
15 |
16 | VisualizerPath createRenderer(
17 | PathPlayer viewer, Route route
18 | ) throws NoPathFoundException;
19 |
20 | > VisualizerPath createRenderer(
21 | PathPlayer viewer, Route route, PathVisualizer renderer
22 | ) throws NoPathFoundException;
23 | }
24 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/navigation/UpdatingPath.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.navigation;
2 |
3 | import de.cubbossa.pathfinder.graph.NoPathFoundException;
4 | import de.cubbossa.pathfinder.node.Node;
5 | import java.util.List;
6 |
7 | public interface UpdatingPath {
8 |
9 | List getNodes() throws NoPathFoundException;
10 | }
11 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/node/Edge.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.node;
2 |
3 | import java.util.UUID;
4 | import java.util.concurrent.CompletableFuture;
5 |
6 | /**
7 | * An edge that connects one node to another.
8 | * Edges are always directed, to create an undirected edge, create two edges instead.
9 | */
10 | public interface Edge {
11 |
12 | /**
13 | * @return The uuid of the start node of this edge
14 | */
15 | UUID getStart();
16 |
17 | /**
18 | * @return The uuid of the end node of this edge
19 | */
20 | UUID getEnd();
21 |
22 | /**
23 | * @return The relative cost of this edge additionally to the actual edge length. The edge length is NOT
24 | * part of weight.
25 | */
26 | float getWeight();
27 |
28 | /**
29 | * @return The start node of this edge as CompletableFuture.
30 | */
31 | CompletableFuture resolveStart();
32 |
33 | /**
34 | * @return The end node of this edge as CompletableFuture.
35 | */
36 | CompletableFuture resolveEnd();
37 | }
38 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/node/GroupedNode.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.node;
2 |
3 | import de.cubbossa.pathfinder.group.NodeGroup;
4 | import java.util.Collection;
5 |
6 | public interface GroupedNode extends Node {
7 |
8 | Node node();
9 |
10 | Collection groups();
11 |
12 | GroupedNode merge(GroupedNode other);
13 | }
14 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/node/NodeSelectionProvider.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.node;
2 |
3 | public abstract class NodeSelectionProvider {
4 |
5 | protected static NodeSelectionProvider provider;
6 |
7 | protected abstract NodeSelection of(String selection);
8 |
9 | protected abstract NodeSelection of(String selection, Iterable scope);
10 |
11 | protected abstract NodeSelection of(Iterable scope);
12 |
13 | protected abstract NodeSelection ofSender(String selection, Object sender);
14 |
15 | protected abstract NodeSelection ofSender(String selection, Iterable scope, Object sender);
16 | }
17 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/node/NodeTypeRegistry.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.node;
2 |
3 | import de.cubbossa.disposables.Disposable;
4 | import de.cubbossa.pathfinder.misc.NamespacedKey;
5 | import java.util.Collection;
6 |
7 | public interface NodeTypeRegistry extends Disposable {
8 | NodeType getType(NamespacedKey key);
9 |
10 | Collection getTypeKeys();
11 |
12 | Collection> getTypes();
13 |
14 | void register(NodeType type);
15 |
16 | void unregister(NodeType type);
17 |
18 | void unregister(NamespacedKey key);
19 | }
20 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/storage/CacheLayer.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.storage;
2 |
3 | import de.cubbossa.pathfinder.storage.cache.DiscoverInfoCache;
4 | import de.cubbossa.pathfinder.storage.cache.GroupCache;
5 | import de.cubbossa.pathfinder.storage.cache.NodeCache;
6 | import de.cubbossa.pathfinder.storage.cache.NodeTypeCache;
7 | import de.cubbossa.pathfinder.storage.cache.StorageCache;
8 | import de.cubbossa.pathfinder.storage.cache.VisualizerCache;
9 | import de.cubbossa.pathfinder.storage.cache.VisualizerTypeCache;
10 |
11 | public interface CacheLayer extends Iterable> {
12 |
13 | NodeTypeCache getNodeTypeCache();
14 |
15 | NodeCache getNodeCache();
16 |
17 | GroupCache getGroupCache();
18 |
19 | VisualizerTypeCache getVisualizerTypeCache();
20 |
21 | VisualizerCache getVisualizerCache();
22 |
23 | DiscoverInfoCache getDiscoverInfoCache();
24 | }
25 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/storage/DatabaseType.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.storage;
2 |
3 | public enum DatabaseType {
4 |
5 | IN_MEMORY,
6 | REMOTE_SQL,
7 | SQLITE,
8 | YML
9 | }
10 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/storage/DiscoverInfo.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.storage;
2 |
3 | import de.cubbossa.pathfinder.misc.NamespacedKey;
4 | import java.time.LocalDateTime;
5 | import java.util.UUID;
6 |
7 | public record DiscoverInfo(
8 | UUID playerId,
9 | NamespacedKey discoverable,
10 | LocalDateTime foundDate
11 | ) {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/storage/NodeStorageImplementation.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.storage;
2 |
3 | import de.cubbossa.pathfinder.node.Node;
4 | import java.util.Collection;
5 | import java.util.Optional;
6 | import java.util.UUID;
7 |
8 | public interface NodeStorageImplementation {
9 |
10 | Optional loadNode(UUID uuid);
11 |
12 | Collection loadNodes(Collection ids);
13 |
14 | Collection loadAllNodes();
15 |
16 | void saveNode(N node);
17 |
18 | void deleteNodes(Collection node);
19 | }
20 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/storage/VisualizerStorageImplementation.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.storage;
2 |
3 | import de.cubbossa.pathfinder.misc.NamespacedKey;
4 | import de.cubbossa.pathfinder.visualizer.PathVisualizer;
5 | import java.util.Map;
6 | import java.util.Optional;
7 |
8 | public interface VisualizerStorageImplementation> {
9 |
10 | Map loadVisualizers();
11 |
12 | Optional loadVisualizer(NamespacedKey key);
13 |
14 | void saveVisualizer(VisualizerT visualizer);
15 |
16 | void deleteVisualizer(VisualizerT visualizer);
17 | }
18 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/storage/WorldLoader.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.storage;
2 |
3 | import de.cubbossa.pathfinder.misc.World;
4 | import java.util.UUID;
5 |
6 | @FunctionalInterface
7 | public interface WorldLoader {
8 |
9 | World loadWorld(UUID uuid);
10 | }
11 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/storage/cache/DiscoverInfoCache.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.storage.cache;
2 |
3 | import de.cubbossa.pathfinder.misc.NamespacedKey;
4 | import de.cubbossa.pathfinder.storage.DiscoverInfo;
5 | import java.util.Collection;
6 | import java.util.Optional;
7 | import java.util.UUID;
8 |
9 | public interface DiscoverInfoCache extends StorageCache {
10 |
11 | Optional getDiscovery(UUID player, NamespacedKey key);
12 |
13 | Optional> getDiscovery(UUID player);
14 |
15 | void invalidate(UUID player);
16 | }
17 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/storage/cache/GroupCache.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.storage.cache;
2 |
3 | import de.cubbossa.pathfinder.group.NodeGroup;
4 | import de.cubbossa.pathfinder.misc.NamespacedKey;
5 | import de.cubbossa.pathfinder.misc.Range;
6 | import java.util.Collection;
7 | import java.util.Optional;
8 | import java.util.UUID;
9 |
10 | public interface GroupCache extends StorageCache {
11 |
12 | Optional getGroup(NamespacedKey key);
13 |
14 | Optional> getGroups(NamespacedKey modifier);
15 |
16 | CacheCollection getGroups(Collection keys);
17 |
18 | Optional> getGroups();
19 |
20 | Optional> getGroups(UUID node);
21 |
22 | Optional> getGroups(Range range);
23 |
24 | void write(UUID node, Collection groups);
25 |
26 | void write(NamespacedKey modifier, Collection groups);
27 |
28 | void writeAll(Collection groups);
29 |
30 | void invalidate(UUID node);
31 |
32 | void invalidate(NamespacedKey modifier);
33 | }
34 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/storage/cache/NodeCache.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.storage.cache;
2 |
3 | import de.cubbossa.pathfinder.group.NodeGroup;
4 | import de.cubbossa.pathfinder.node.Node;
5 | import java.util.Collection;
6 | import java.util.Optional;
7 | import java.util.UUID;
8 |
9 | public interface NodeCache extends StorageCache {
10 |
11 | Optional getNode(UUID uuid);
12 |
13 | Optional> getAllNodes();
14 |
15 | CacheCollection getNodes(Collection ids);
16 |
17 | void writeAll(Collection nodes);
18 |
19 | void write(NodeGroup group);
20 |
21 | void invalidate(UUID uuid);
22 | }
23 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/storage/cache/NodeTypeCache.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.storage.cache;
2 |
3 | import de.cubbossa.pathfinder.node.Node;
4 | import de.cubbossa.pathfinder.node.NodeType;
5 | import java.util.Collection;
6 | import java.util.Optional;
7 | import java.util.UUID;
8 |
9 | public interface NodeTypeCache extends StorageCache {
10 |
11 | Optional> getType(UUID uuid);
12 |
13 | CacheMap> getTypes(Collection uuids);
14 |
15 | void write(UUID uuid, NodeType> type);
16 | }
17 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/storage/cache/StorageCache.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.storage.cache;
2 |
3 | import com.google.common.base.Preconditions;
4 | import java.util.Collection;
5 | import java.util.HashMap;
6 | import java.util.HashSet;
7 | import java.util.Map;
8 |
9 | public interface StorageCache {
10 |
11 | void write(E e);
12 |
13 | void invalidate(E e);
14 |
15 | void invalidateAll();
16 |
17 | record CacheCollection(Collection present, Collection absent) {
18 |
19 | public static CacheCollection empty(Collection absent) {
20 | Preconditions.checkNotNull(absent);
21 | return new CacheCollection<>(new HashSet<>(), absent);
22 | }
23 | }
24 |
25 | record CacheMap(Map present, Collection absent) {
26 |
27 | public static CacheMap empty(Collection absent) {
28 | Preconditions.checkNotNull(absent);
29 | return new CacheMap<>(new HashMap<>(), absent);
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/storage/cache/VisualizerCache.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.storage.cache;
2 |
3 | import de.cubbossa.pathfinder.misc.NamespacedKey;
4 | import de.cubbossa.pathfinder.visualizer.PathVisualizer;
5 | import de.cubbossa.pathfinder.visualizer.VisualizerType;
6 | import java.util.Collection;
7 | import java.util.Optional;
8 |
9 | public interface VisualizerCache extends StorageCache> {
10 |
11 | > Optional getVisualizer(NamespacedKey key);
12 |
13 | Optional>> getVisualizers();
14 |
15 | > Optional> getVisualizers(VisualizerType type);
16 |
17 | > void writeAll(VisualizerType type, Collection v);
18 |
19 | void writeAll(Collection> visualizers);
20 | }
21 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/storage/cache/VisualizerTypeCache.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.storage.cache;
2 |
3 | import de.cubbossa.pathfinder.misc.NamespacedKey;
4 | import de.cubbossa.pathfinder.visualizer.PathVisualizer;
5 | import de.cubbossa.pathfinder.visualizer.VisualizerType;
6 | import java.util.Collection;
7 | import java.util.Map;
8 | import java.util.Optional;
9 |
10 | public interface VisualizerTypeCache extends StorageCache>> {
11 |
12 | CacheMap> getTypes(Collection key);
13 |
14 | > Optional> getType(NamespacedKey key);
15 |
16 | > void write(NamespacedKey key, VisualizerType type);
17 | }
18 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/visualizer/PathView.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.visualizer;
2 |
3 | import de.cubbossa.disposables.Disposable;
4 | import de.cubbossa.pathfinder.graph.NoPathFoundException;
5 | import de.cubbossa.pathfinder.misc.PathPlayer;
6 | import de.cubbossa.pathfinder.node.Node;
7 | import java.util.Collection;
8 | import java.util.List;
9 |
10 | public interface PathView extends Disposable {
11 |
12 | List getPath();
13 |
14 | PathPlayer getTargetViewer();
15 |
16 | void setTargetViewer(PathPlayer player);
17 |
18 | void addViewer(PathPlayer player);
19 |
20 | void removeViewer(PathPlayer player);
21 |
22 | void removeAllViewers();
23 |
24 | Collection> getViewers();
25 |
26 | void update() throws NoPathFoundException;
27 | }
28 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/visualizer/PathVisualizer.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.visualizer;
2 |
3 | import de.cubbossa.disposables.Disposable;
4 | import de.cubbossa.pathfinder.misc.Keyed;
5 | import de.cubbossa.pathfinder.misc.PathPlayer;
6 | import de.cubbossa.pathfinder.misc.PermissionHolder;
7 | import de.cubbossa.pathfinder.navigation.UpdatingPath;
8 |
9 | public interface PathVisualizer, PlayerT> extends Keyed, PermissionHolder, Disposable {
10 |
11 | Class getTargetType();
12 |
13 | ViewT createView(UpdatingPath nodes, PathPlayer player);
14 | }
15 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/visualizer/VisualizerPath.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.visualizer;
2 |
3 | import de.cubbossa.pathfinder.misc.PathPlayer;
4 |
5 | /**
6 | * A VisualizerPath resembles one visualization across a path of nodes.
7 | * Each node will be resolved to all its applied visualizers and all visualizers render as smaller sub paths.
8 | *
9 | * If, for example, a path consists of three nodes a, b and c and a and b have visualizer X applied,
10 | * while b and c have visualizer Y applied, there must be a sub path rendering for visualizer X(a, b)
11 | * and Y(b, c).
12 | *
13 | *
14 | * X X
15 | * Y Y
16 | * a -- b -- c
17 | *
18 | *
19 | * @param The type of the player object.
20 | */
21 | public interface VisualizerPath extends PathView {
22 |
23 | /**
24 | * Check if this path is rendered for any player.
25 | *
26 | * @return True as long as {@link #isActive(PathPlayer)} is true for any player.
27 | */
28 | boolean isActive();
29 |
30 | /**
31 | * Check if this path is being rendered for the given player.
32 | *
33 | * @param player The player to check for.
34 | * @return True, if the path is currently being rendered for the given player.
35 | */
36 | boolean isActive(PathPlayer player);
37 |
38 | void startUpdater(int interval);
39 |
40 | void stopUpdater();
41 | }
42 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/visualizer/VisualizerTypeRegistry.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.visualizer;
2 |
3 | import de.cubbossa.disposables.Disposable;
4 | import de.cubbossa.pathfinder.misc.KeyedRegistry;
5 | import de.cubbossa.pathfinder.misc.NamespacedKey;
6 | import java.util.Optional;
7 |
8 | public interface VisualizerTypeRegistry extends Disposable {
9 |
10 | > VisualizerType getDefaultType();
11 |
12 | > void setDefaultType(VisualizerType type);
13 |
14 | > Optional> getType(NamespacedKey typeKey);
15 |
16 | > void registerVisualizerType(VisualizerType type);
17 |
18 | void unregisterVisualizerType(VisualizerType extends PathVisualizer, ?>> type);
19 |
20 | KeyedRegistry>> getTypes();
21 | }
22 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/visualizer/query/SearchQueryAttribute.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.visualizer.query;
2 |
3 | public interface SearchQueryAttribute {
4 |
5 | String identifier();
6 |
7 | Comparator comparator();
8 |
9 | Object value();
10 |
11 | enum Comparator {
12 | EQUALS, NOT_EQUALS, GREATER, LESS, GREATER_THAN, LESS_THAN;
13 |
14 | public static Comparator fromString(String value) {
15 | return switch (value) {
16 | case "!=" -> NOT_EQUALS;
17 | case "<" -> LESS;
18 | case "<=" -> LESS_THAN;
19 | case ">=" -> GREATER_THAN;
20 | case ">" -> GREATER;
21 | default -> EQUALS;
22 | };
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/visualizer/query/SearchTerm.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.visualizer.query;
2 |
3 | import java.util.Collection;
4 |
5 | public interface SearchTerm {
6 |
7 | String getIdentifier();
8 |
9 | boolean matches(Collection attributes);
10 | }
11 |
--------------------------------------------------------------------------------
/pathfinder-api/src/main/java/de/cubbossa/pathfinder/visualizer/query/SearchTermHolder.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.visualizer.query;
2 |
3 | import java.util.Collection;
4 |
5 | public interface SearchTermHolder {
6 |
7 | Collection getSearchTerms();
8 |
9 | void addSearchTerms(Collection searchTerms);
10 |
11 | void removeSearchTerms(Collection searchTerms);
12 |
13 | void clearSearchTerms();
14 |
15 | boolean matches(SearchTerm searchTerm);
16 |
17 | boolean matches(SearchTerm searchTerm, Collection attributes);
18 |
19 | boolean matches(String term);
20 |
21 | boolean matches(String term, Collection attributes);
22 | }
23 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/PathFinderPlugin.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder;
2 |
3 | import de.cubbossa.pathfinder.dump.DumpWriter;
4 | import de.cubbossa.pathfinder.dump.DumpWriterProvider;
5 | import java.util.Arrays;
6 | import java.util.TreeMap;
7 | import java.util.TreeSet;
8 | import java.util.stream.Collectors;
9 | import lombok.Getter;
10 | import org.bukkit.Bukkit;
11 | import org.bukkit.World;
12 | import org.bukkit.plugin.Plugin;
13 | import org.bukkit.plugin.java.JavaPlugin;
14 |
15 | public class PathFinderPlugin extends JavaPlugin {
16 |
17 | @Getter
18 | private static PathFinderPlugin instance;
19 |
20 | private final BukkitPathFinder pathFinder;
21 |
22 | public PathFinderPlugin() {
23 | instance = this;
24 | pathFinder = new BukkitPathFinder(this);
25 | }
26 |
27 | @Override
28 | public void onLoad() {
29 | pathFinder.onLoad();
30 |
31 | DumpWriter dumpWriter = DumpWriterProvider.get();
32 | dumpWriter.addProperty("mc-version", () -> getServer().getVersion());
33 | dumpWriter.addProperty("bukkit-version", () -> getServer().getBukkitVersion());
34 | dumpWriter.addProperty("active-plugins", () -> Arrays.stream(getServer().getPluginManager().getPlugins())
35 | .map(Plugin::getName).collect(Collectors.toCollection(TreeSet::new)));
36 | dumpWriter.addProperty("worlds", () -> Bukkit.getWorlds().stream()
37 | .collect(Collectors.toMap(World::getUID, World::getName, (s, s2) -> s, TreeMap::new)));
38 | }
39 |
40 | @Override
41 | public void onEnable() {
42 | pathFinder.onEnable();
43 | }
44 |
45 | @Override
46 | public void onDisable() {
47 | pathFinder.onDisable();
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/command/CancelPathCommand.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.command;
2 |
3 | import de.cubbossa.pathfinder.PathPerms;
4 | import de.cubbossa.pathfinder.misc.PathPlayer;
5 | import de.cubbossa.pathfinder.navigation.NavigationModule;
6 | import dev.jorel.commandapi.CommandAPI;
7 | import dev.jorel.commandapi.CommandTree;
8 | import org.bukkit.entity.Player;
9 |
10 | public class CancelPathCommand extends CommandTree {
11 |
12 | public CancelPathCommand() {
13 | super("cancelpath");
14 | NavigationModule module = NavigationModule.get();
15 |
16 | withPermission(PathPerms.PERM_CMD_CANCELPATH);
17 | withRequirement(sender -> sender instanceof Player player
18 | && module.getActiveFindCommandPath(PathPlayer.wrap(player)) != null);
19 |
20 | executesPlayer((player, args) -> {
21 | var nav = module.getActiveFindCommandPath(PathPlayer.wrap(player));
22 | if (nav != null) {
23 | nav.cancel();
24 | }
25 | });
26 | }
27 |
28 | public void refresh(PathPlayer player) {
29 | CommandAPI.updateRequirements(player.unwrap());
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/command/PathFinderSubCommand.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.command;
2 |
3 | import de.cubbossa.pathfinder.PathFinder;
4 | import dev.jorel.commandapi.arguments.LiteralArgument;
5 |
6 | public class PathFinderSubCommand extends LiteralArgument {
7 |
8 | private PathFinder pathFinder;
9 |
10 | public PathFinderSubCommand(PathFinder pathFinder, String commandName) {
11 | super(commandName);
12 | this.pathFinder = pathFinder;
13 | }
14 |
15 | public PathFinderSubCommand withGeneratedHelp() {
16 | executes((sender, args) -> {
17 | //CommandUtils.sendHelp(sender, this);
18 | });
19 | return this;
20 | }
21 |
22 | public PathFinderSubCommand withGeneratedHelp(int depth) {
23 | executes((sender, args) -> {
24 | //CommandUtils.sendHelp(sender, this, depth);
25 | });
26 | return this;
27 | }
28 |
29 | public PathFinder getPathfinder() {
30 | return pathFinder;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/command/impl/DeleteGroupCmd.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.command.impl;
2 |
3 | import de.cubbossa.pathfinder.AbstractPathFinder;
4 | import de.cubbossa.pathfinder.PathFinder;
5 | import de.cubbossa.pathfinder.PathPerms;
6 | import de.cubbossa.pathfinder.command.Arguments;
7 | import de.cubbossa.pathfinder.command.PathFinderSubCommand;
8 | import de.cubbossa.pathfinder.group.NodeGroup;
9 | import de.cubbossa.pathfinder.messages.Messages;
10 | import de.cubbossa.pathfinder.misc.PathPlayer;
11 | import de.cubbossa.pathfinder.util.BukkitUtils;
12 | import org.bukkit.command.CommandSender;
13 |
14 | public class DeleteGroupCmd extends PathFinderSubCommand {
15 | public DeleteGroupCmd(PathFinder pathFinder) {
16 | super(pathFinder, "deletegroup");
17 |
18 | withGeneratedHelp();
19 | withPermission(PathPerms.PERM_CMD_NG_DELETE);
20 | then(Arguments.nodeGroupArgument("group")
21 | .executes((sender, args) -> {
22 | deleteGroup(sender, args.getUnchecked(0));
23 | }));
24 | }
25 |
26 | private void deleteGroup(CommandSender sender, NodeGroup group) {
27 | PathPlayer> p = BukkitUtils.wrap(sender);
28 | if (group.getKey().equals(AbstractPathFinder.globalGroupKey())) {
29 | p.sendMessage(Messages.CMD_NG_DELETE_GLOBAL);
30 | return;
31 | }
32 | getPathfinder().getStorage().deleteGroup(group).thenRun(() -> {
33 | p.sendMessage(Messages.CMD_NG_DELETE.formatted(
34 | Messages.formatter().namespacedKey("key", group.getKey())
35 | ));
36 | });
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/command/impl/DeleteNodesCmd.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.command.impl;
2 |
3 | import de.cubbossa.pathfinder.PathFinder;
4 | import de.cubbossa.pathfinder.PathPerms;
5 | import de.cubbossa.pathfinder.command.Arguments;
6 | import de.cubbossa.pathfinder.command.PathFinderSubCommand;
7 | import de.cubbossa.pathfinder.messages.Messages;
8 | import de.cubbossa.pathfinder.node.NodeSelectionImpl;
9 | import de.cubbossa.pathfinder.util.BukkitUtils;
10 | import org.bukkit.command.CommandSender;
11 |
12 | public class DeleteNodesCmd extends PathFinderSubCommand {
13 | public DeleteNodesCmd(PathFinder pathFinder) {
14 | super(pathFinder, "deletenodes");
15 |
16 | withPermission(PathPerms.PERM_CMD_WP_DELETE);
17 | then(Arguments.nodeSelectionArgument("nodes")
18 | .executesPlayer((player, args) -> {
19 | deleteNode(player, args.getUnchecked(0));
20 | })
21 | );
22 | }
23 |
24 | private void deleteNode(CommandSender sender, NodeSelectionImpl nodes) {
25 | getPathfinder().getStorage().deleteNodes(nodes.getIds()).thenRun(() -> {
26 | BukkitUtils.wrap(sender).sendMessage(Messages.CMD_N_DELETE.formatted(
27 | Messages.formatter().nodeSelection("selection", () -> nodes)
28 | ));
29 | });
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/command/impl/DeleteVisualizerCmd.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.command.impl;
2 |
3 | import de.cubbossa.pathfinder.PathFinder;
4 | import de.cubbossa.pathfinder.PathPerms;
5 | import de.cubbossa.pathfinder.command.Arguments;
6 | import de.cubbossa.pathfinder.command.PathFinderSubCommand;
7 | import de.cubbossa.pathfinder.messages.Messages;
8 | import de.cubbossa.pathfinder.util.BukkitUtils;
9 | import de.cubbossa.pathfinder.visualizer.PathVisualizer;
10 | import java.util.logging.Level;
11 | import org.bukkit.command.CommandSender;
12 |
13 | public class DeleteVisualizerCmd extends PathFinderSubCommand {
14 | public DeleteVisualizerCmd(PathFinder pathFinder) {
15 | super(pathFinder, "deletevisualizer");
16 |
17 | withGeneratedHelp();
18 | withPermission(PathPerms.PERM_CMD_PV_DELETE);
19 | then(Arguments.pathVisualizerArgument("visualizer")
20 | .executes((commandSender, objects) -> {
21 | onDelete(commandSender, objects.getUnchecked(0));
22 | })
23 | );
24 | }
25 |
26 | public void onDelete(CommandSender sender, PathVisualizer, ?> visualizer) {
27 | getPathfinder().getStorage().deleteVisualizer(visualizer).thenRun(() -> {
28 | BukkitUtils.wrap(sender).sendMessage(Messages.CMD_VIS_DELETE_SUCCESS.formatted(
29 | Messages.formatter().namespacedKey("key", visualizer.getKey())
30 | ));
31 | }).exceptionally(throwable -> {
32 | BukkitUtils.wrap(sender).sendMessage(Messages.CMD_VIS_DELETE_ERROR);
33 | getPathfinder().getLogger().log(Level.WARNING, "Could not delete visualizer", throwable);
34 | return null;
35 | });
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/command/impl/ListNodesCmd.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.command.impl;
2 |
3 | import de.cubbossa.pathfinder.PathFinder;
4 | import de.cubbossa.pathfinder.PathPerms;
5 | import de.cubbossa.pathfinder.command.Arguments;
6 | import de.cubbossa.pathfinder.command.PathFinderSubCommand;
7 | import de.cubbossa.pathfinder.misc.Pagination;
8 | import de.cubbossa.pathfinder.node.NodeSelection;
9 | import de.cubbossa.pathfinder.node.NodeSelectionImpl;
10 | import de.cubbossa.pathfinder.util.NodeUtils;
11 |
12 | public class ListNodesCmd extends PathFinderSubCommand {
13 | public ListNodesCmd(PathFinder pathFinder) {
14 | super(pathFinder, "listnodes");
15 |
16 | withPermission(PathPerms.PERM_CMD_WP_LIST);
17 | executesPlayer((sender, args) -> {
18 | NodeSelection selection = NodeSelection.ofSender("@n", sender);
19 | NodeUtils.onList(sender, new NodeSelectionImpl(selection), Pagination.page(0, 10));
20 | });
21 | then(Arguments.nodeSelectionArgument("nodes")
22 | .executesPlayer((player, args) -> {
23 | NodeUtils.onList(player, args.getUnchecked(0), Pagination.page(0, 10));
24 | })
25 | .then(Arguments.pagination(10)
26 | .executesPlayer((player, args) -> {
27 | NodeUtils.onList(player, args.getUnchecked(0), args.getUnchecked(1));
28 | })
29 | ));
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/NodeFindEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events;
2 |
3 | import de.cubbossa.pathfinder.node.implementation.Waypoint;
4 | import java.util.Date;
5 | import java.util.UUID;
6 | import lombok.Getter;
7 | import lombok.Setter;
8 | import org.bukkit.event.Cancellable;
9 | import org.bukkit.event.Event;
10 | import org.bukkit.event.HandlerList;
11 |
12 | public class NodeFindEvent extends Event implements Cancellable {
13 |
14 | private static final HandlerList handlers = new HandlerList();
15 |
16 | @Getter
17 | private final UUID playerId;
18 | @Getter
19 | @Setter
20 | private Waypoint findable;
21 | @Getter
22 | @Setter
23 | private Date date;
24 | @Getter
25 | @Setter
26 | private boolean cancelled;
27 |
28 | public NodeFindEvent(UUID playerId, Waypoint findable, Date date) {
29 | this.playerId = playerId;
30 | this.findable = findable;
31 | this.date = date;
32 | }
33 |
34 | public static HandlerList getHandlerList() {
35 | return handlers;
36 | }
37 |
38 | public HandlerList getHandlers() {
39 | return handlers;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/NodeGroupFindEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events;
2 |
3 | import de.cubbossa.pathfinder.node.implementation.Waypoint;
4 | import de.cubbossa.pathfinder.nodegroup.NodeGroupImpl;
5 | import java.util.Date;
6 | import java.util.UUID;
7 | import javax.annotation.Nullable;
8 | import lombok.Getter;
9 | import lombok.Setter;
10 | import org.bukkit.event.Cancellable;
11 | import org.bukkit.event.Event;
12 | import org.bukkit.event.HandlerList;
13 |
14 | public class NodeGroupFindEvent extends Event implements Cancellable {
15 |
16 | private static final HandlerList handlers = new HandlerList();
17 |
18 | @Getter
19 | private final UUID playerId;
20 | @Getter
21 | private final Waypoint triggeringFindable;
22 | @Getter
23 | @Setter
24 | private @Nullable
25 | NodeGroupImpl group;
26 | @Getter
27 | @Setter
28 | private Date date;
29 | @Getter
30 | @Setter
31 | private boolean cancelled;
32 |
33 | public NodeGroupFindEvent(UUID playerId, NodeGroupImpl group, Waypoint triggeringFindable,
34 | Date date) {
35 | this.playerId = playerId;
36 | this.group = group;
37 | this.triggeringFindable = triggeringFindable;
38 | this.date = date;
39 | }
40 |
41 | public static HandlerList getHandlerList() {
42 | return handlers;
43 | }
44 |
45 | public HandlerList getHandlers() {
46 | return handlers;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/PathFinderReloadEventImpl.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events;
2 |
3 | import de.cubbossa.pathfinder.event.PathFinderReloadEvent;
4 | import lombok.RequiredArgsConstructor;
5 | import org.bukkit.event.Event;
6 | import org.bukkit.event.HandlerList;
7 |
8 |
9 | @RequiredArgsConstructor
10 | public class PathFinderReloadEventImpl extends Event implements PathFinderReloadEvent {
11 |
12 | private static final HandlerList handlers = new HandlerList();
13 | private final boolean config;
14 | private final boolean locale;
15 |
16 | public static HandlerList getHandlerList() {
17 | return handlers;
18 | }
19 |
20 | public HandlerList getHandlers() {
21 | return handlers;
22 | }
23 |
24 | @Override
25 | public boolean reloadsConfig() {
26 | return config;
27 | }
28 |
29 | @Override
30 | public boolean reloadsLocale() {
31 | return locale;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/discovering/PlayerDiscoverEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.discovering;
2 |
3 | import de.cubbossa.pathfinder.event.PlayerDiscoverLocationEvent;
4 | import de.cubbossa.pathfinder.group.DiscoverableModifier;
5 | import de.cubbossa.pathfinder.group.NodeGroup;
6 | import de.cubbossa.pathfinder.misc.PathPlayer;
7 | import java.time.LocalDateTime;
8 | import lombok.Getter;
9 | import lombok.RequiredArgsConstructor;
10 | import lombok.Setter;
11 | import org.bukkit.entity.Player;
12 | import org.bukkit.event.Cancellable;
13 | import org.bukkit.event.Event;
14 | import org.bukkit.event.HandlerList;
15 |
16 | @Getter
17 | @Setter
18 | @RequiredArgsConstructor
19 | public class PlayerDiscoverEvent extends Event implements Cancellable, PlayerDiscoverLocationEvent {
20 |
21 | private static final HandlerList handlers = new HandlerList();
22 | private final PathPlayer player;
23 | private final NodeGroup group;
24 | private final DiscoverableModifier modifier;
25 | private final LocalDateTime timeStamp;
26 | private boolean cancelled;
27 |
28 | public static HandlerList getHandlerList() {
29 | return handlers;
30 | }
31 |
32 | public HandlerList getHandlers() {
33 | return handlers;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/discovering/PlayerDiscoverProgressEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.discovering;
2 |
3 | import de.cubbossa.pathfinder.group.NodeGroup;
4 | import de.cubbossa.pathfinder.misc.PathPlayer;
5 | import lombok.Getter;
6 | import lombok.RequiredArgsConstructor;
7 | import lombok.Setter;
8 | import org.bukkit.entity.Player;
9 | import org.bukkit.event.Event;
10 | import org.bukkit.event.HandlerList;
11 |
12 | @Getter
13 | @Setter
14 | @RequiredArgsConstructor
15 | public class PlayerDiscoverProgressEvent extends Event implements de.cubbossa.pathfinder.event.PlayerDiscoverProgressEvent {
16 |
17 | private static final HandlerList handlers = new HandlerList();
18 | private final PathPlayer player;
19 | private final NodeGroup foundGroup;
20 | private final NodeGroup progressObserverGroup;
21 |
22 | public static HandlerList getHandlerList() {
23 | return handlers;
24 | }
25 |
26 | public HandlerList getHandlers() {
27 | return handlers;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/discovering/PlayerForgetEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.discovering;
2 |
3 | import de.cubbossa.pathfinder.event.PlayerForgetLocationEvent;
4 | import de.cubbossa.pathfinder.group.DiscoverableModifier;
5 | import de.cubbossa.pathfinder.group.NodeGroup;
6 | import de.cubbossa.pathfinder.misc.PathPlayer;
7 | import lombok.Getter;
8 | import lombok.RequiredArgsConstructor;
9 | import lombok.Setter;
10 | import org.bukkit.entity.Player;
11 | import org.bukkit.event.Cancellable;
12 | import org.bukkit.event.Event;
13 | import org.bukkit.event.HandlerList;
14 |
15 | @Getter
16 | @Setter
17 | @RequiredArgsConstructor
18 | public class PlayerForgetEvent extends Event implements Cancellable, PlayerForgetLocationEvent {
19 |
20 | private static final HandlerList handlers = new HandlerList();
21 | private final PathPlayer player;
22 | private final NodeGroup group;
23 | private final DiscoverableModifier modifier;
24 | private boolean cancelled;
25 |
26 | public static HandlerList getHandlerList() {
27 | return handlers;
28 | }
29 |
30 | public HandlerList getHandlers() {
31 | return handlers;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/node/EdgesCreateEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.node;
2 |
3 | import de.cubbossa.pathfinder.node.Edge;
4 | import de.cubbossa.pathfinder.node.NodeSelection;
5 | import java.util.Collection;
6 | import java.util.HashSet;
7 | import lombok.Getter;
8 | import lombok.Setter;
9 | import org.bukkit.event.Cancellable;
10 | import org.bukkit.event.Event;
11 | import org.bukkit.event.HandlerList;
12 |
13 | public class EdgesCreateEvent {
14 |
15 | private EdgesCreateEvent() {
16 | }
17 |
18 | @Getter
19 | public static class Pre extends Event implements Cancellable {
20 | private static final HandlerList handlers = new HandlerList();
21 |
22 | private final NodeSelection from;
23 | private final NodeSelection to;
24 | @Setter
25 | private boolean cancelled = false;
26 |
27 | public Pre(NodeSelection from, NodeSelection to) {
28 | this.from = from;
29 | this.to = to;
30 | }
31 |
32 | public static HandlerList getHandlerList() {
33 | return handlers;
34 | }
35 |
36 | public HandlerList getHandlers() {
37 | return handlers;
38 | }
39 | }
40 |
41 | @Getter
42 | public static class Post extends Event {
43 | private static final HandlerList handlers = new HandlerList();
44 |
45 | private final Collection edges;
46 |
47 | public Post(Collection edges) {
48 | this.edges = new HashSet<>(edges);
49 | }
50 |
51 | public static HandlerList getHandlerList() {
52 | return handlers;
53 | }
54 |
55 | public HandlerList getHandlers() {
56 | return handlers;
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/node/EdgesDeleteEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.node;
2 |
3 | import de.cubbossa.pathfinder.node.EdgeImpl;
4 | import de.cubbossa.pathfinder.node.NodeSelection;
5 | import java.util.Collection;
6 | import lombok.Getter;
7 | import lombok.RequiredArgsConstructor;
8 | import lombok.Setter;
9 | import org.bukkit.event.Cancellable;
10 | import org.bukkit.event.Event;
11 | import org.bukkit.event.HandlerList;
12 |
13 | public class EdgesDeleteEvent {
14 |
15 | private EdgesDeleteEvent() {
16 | }
17 |
18 | @Getter
19 | @RequiredArgsConstructor
20 | public static class Pre extends Event implements Cancellable {
21 | private static final HandlerList handlers = new HandlerList();
22 |
23 | private final NodeSelection from;
24 | private final NodeSelection to;
25 | @Setter
26 | private boolean cancelled = false;
27 |
28 | public static HandlerList getHandlerList() {
29 | return handlers;
30 | }
31 |
32 | public HandlerList getHandlers() {
33 | return handlers;
34 | }
35 | }
36 |
37 | @Getter
38 | @RequiredArgsConstructor
39 | public static class Post extends Event {
40 | private static final HandlerList handlers = new HandlerList();
41 |
42 | private final Collection edges;
43 |
44 | public static HandlerList getHandlerList() {
45 | return handlers;
46 | }
47 |
48 | public HandlerList getHandlers() {
49 | return handlers;
50 | }
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/node/NodeCreateEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.node;
2 |
3 | import de.cubbossa.pathfinder.node.Node;
4 | import de.cubbossa.pathfinder.node.NodeType;
5 | import lombok.Getter;
6 | import lombok.RequiredArgsConstructor;
7 | import lombok.Setter;
8 | import org.bukkit.Location;
9 | import org.bukkit.event.Cancellable;
10 | import org.bukkit.event.Event;
11 | import org.bukkit.event.HandlerList;
12 |
13 | @Getter
14 | @Setter
15 | @RequiredArgsConstructor
16 | public class NodeCreateEvent extends Event implements Cancellable {
17 |
18 | private static final HandlerList handlers = new HandlerList();
19 | private final NodeType nodeType;
20 | private Location location;
21 | private boolean cancelled;
22 |
23 | public NodeCreateEvent(NodeType type, Location location) {
24 | this.nodeType = type;
25 | this.location = location;
26 | }
27 |
28 | public static HandlerList getHandlerList() {
29 | return handlers;
30 | }
31 |
32 | public HandlerList getHandlers() {
33 | return handlers;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/node/NodeCreatedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.node;
2 |
3 | import de.cubbossa.pathfinder.event.NodeCreateEvent;
4 | import de.cubbossa.pathfinder.node.Node;
5 | import lombok.Getter;
6 | import lombok.Setter;
7 | import org.bukkit.event.Event;
8 | import org.bukkit.event.HandlerList;
9 |
10 | @Getter
11 | @Setter
12 | public class NodeCreatedEvent extends Event implements NodeCreateEvent {
13 |
14 | private static final HandlerList handlers = new HandlerList();
15 | private final N node;
16 |
17 | public NodeCreatedEvent(N node) {
18 | this.node = node;
19 | }
20 |
21 | public static HandlerList getHandlerList() {
22 | return handlers;
23 | }
24 |
25 | public HandlerList getHandlers() {
26 | return handlers;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/node/NodeCurveLengthChangedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.node;
2 |
3 | import de.cubbossa.pathfinder.node.NodeSelection;
4 | import lombok.Getter;
5 | import lombok.RequiredArgsConstructor;
6 | import lombok.Setter;
7 | import org.bukkit.event.Event;
8 | import org.bukkit.event.HandlerList;
9 |
10 | @Getter
11 | @Setter
12 | @RequiredArgsConstructor
13 | public class NodeCurveLengthChangedEvent extends Event {
14 |
15 | private static final HandlerList handlers = new HandlerList();
16 |
17 | private final NodeSelection nodes;
18 | private final Double curveLength;
19 |
20 | public static HandlerList getHandlerList() {
21 | return handlers;
22 | }
23 |
24 | public HandlerList getHandlers() {
25 | return handlers;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/node/NodeDeletedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.node;
2 |
3 | import de.cubbossa.pathfinder.event.NodeDeleteEvent;
4 | import de.cubbossa.pathfinder.node.Node;
5 | import lombok.Getter;
6 | import org.bukkit.event.Event;
7 | import org.bukkit.event.HandlerList;
8 |
9 | @Getter
10 | public class NodeDeletedEvent extends Event implements NodeDeleteEvent {
11 |
12 | private static final HandlerList handlers = new HandlerList();
13 |
14 | private final Node node;
15 |
16 | public NodeDeletedEvent(Node node) {
17 | this.node = node;
18 | }
19 |
20 | public static HandlerList getHandlerList() {
21 | return handlers;
22 | }
23 |
24 | public HandlerList getHandlers() {
25 | return handlers;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/node/NodeLocationChangedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.node;
2 |
3 | import de.cubbossa.pathfinder.node.NodeSelection;
4 | import lombok.Getter;
5 | import lombok.RequiredArgsConstructor;
6 | import lombok.Setter;
7 | import org.bukkit.Location;
8 | import org.bukkit.event.Event;
9 | import org.bukkit.event.HandlerList;
10 |
11 | @Getter
12 | @Setter
13 | @RequiredArgsConstructor
14 | public class NodeLocationChangedEvent extends Event {
15 |
16 | private static final HandlerList handlers = new HandlerList();
17 |
18 | private final NodeSelection nodes;
19 | private final Location location;
20 |
21 | public static HandlerList getHandlerList() {
22 | return handlers;
23 | }
24 |
25 | public HandlerList getHandlers() {
26 | return handlers;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/node/NodeSavedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.node;
2 |
3 | import de.cubbossa.pathfinder.event.NodeSaveEvent;
4 | import de.cubbossa.pathfinder.node.Node;
5 | import lombok.Getter;
6 | import org.bukkit.event.Event;
7 | import org.bukkit.event.HandlerList;
8 |
9 | @Getter
10 | public class NodeSavedEvent extends Event implements NodeSaveEvent {
11 |
12 | private static final HandlerList handlers = new HandlerList();
13 |
14 | private final Node node;
15 |
16 | public NodeSavedEvent(Node node) {
17 | this.node = node;
18 | }
19 |
20 | public static HandlerList getHandlerList() {
21 | return handlers;
22 | }
23 |
24 | public HandlerList getHandlers() {
25 | return handlers;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/node/NodeTeleportEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.node;
2 |
3 | import de.cubbossa.pathfinder.node.NodeSelection;
4 | import lombok.Getter;
5 | import lombok.Setter;
6 | import org.bukkit.Location;
7 | import org.bukkit.event.Cancellable;
8 | import org.bukkit.event.Event;
9 | import org.bukkit.event.HandlerList;
10 |
11 | @Getter
12 | @Setter
13 | public class NodeTeleportEvent extends Event implements Cancellable {
14 |
15 | private static final HandlerList handlers = new HandlerList();
16 |
17 | private final NodeSelection nodes;
18 | private final Location newPosition;
19 | private Location newPositionModified;
20 | private boolean cancelled = false;
21 |
22 | public NodeTeleportEvent(NodeSelection nodes, Location newPosition) {
23 | this.nodes = nodes;
24 | this.newPosition = newPosition;
25 | this.newPositionModified = newPosition;
26 | }
27 |
28 | public static HandlerList getHandlerList() {
29 | return handlers;
30 | }
31 |
32 | public HandlerList getHandlers() {
33 | return handlers;
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/node/NodesDeleteEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.node;
2 |
3 | import de.cubbossa.pathfinder.node.Node;
4 | import java.util.Collection;
5 | import java.util.List;
6 | import lombok.Getter;
7 | import lombok.Setter;
8 | import org.bukkit.event.Cancellable;
9 | import org.bukkit.event.Event;
10 | import org.bukkit.event.HandlerList;
11 |
12 | @Getter
13 | public class NodesDeleteEvent extends Event implements Cancellable {
14 |
15 | private static final HandlerList handlers = new HandlerList();
16 |
17 | private final Collection nodes;
18 | @Setter
19 | private boolean cancelled;
20 |
21 | public NodesDeleteEvent(Collection nodes) {
22 | this.nodes = nodes;
23 | }
24 |
25 | public NodesDeleteEvent(Node node) {
26 | this.nodes = List.of(node);
27 | }
28 |
29 | public static HandlerList getHandlerList() {
30 | return handlers;
31 | }
32 |
33 | public HandlerList getHandlers() {
34 | return handlers;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/nodegroup/GroupCreatedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.nodegroup;
2 |
3 | import de.cubbossa.pathfinder.event.NodeGroupCreateEvent;
4 | import de.cubbossa.pathfinder.group.NodeGroup;
5 | import lombok.Getter;
6 | import org.bukkit.event.Event;
7 | import org.bukkit.event.HandlerList;
8 |
9 | public class GroupCreatedEvent extends Event implements NodeGroupCreateEvent {
10 |
11 | private static final HandlerList handlers = new HandlerList();
12 |
13 | @Getter
14 | private final NodeGroup group;
15 |
16 | public GroupCreatedEvent(NodeGroup group) {
17 | this.group = group;
18 | }
19 |
20 | public static HandlerList getHandlerList() {
21 | return handlers;
22 | }
23 |
24 | public HandlerList getHandlers() {
25 | return handlers;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/nodegroup/GroupDeleteEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.nodegroup;
2 |
3 | import de.cubbossa.pathfinder.event.NodeGroupDeleteEvent;
4 | import de.cubbossa.pathfinder.group.NodeGroup;
5 | import lombok.Getter;
6 | import lombok.Setter;
7 | import org.bukkit.event.Cancellable;
8 | import org.bukkit.event.Event;
9 | import org.bukkit.event.HandlerList;
10 |
11 | @Getter
12 | public class GroupDeleteEvent extends Event implements NodeGroupDeleteEvent, Cancellable {
13 |
14 | private static final HandlerList handlers = new HandlerList();
15 |
16 | private final NodeGroup group;
17 | @Setter
18 | private boolean cancelled = false;
19 |
20 | public GroupDeleteEvent(NodeGroup group) {
21 | this.group = group;
22 | }
23 |
24 | public static HandlerList getHandlerList() {
25 | return handlers;
26 | }
27 |
28 | public HandlerList getHandlers() {
29 | return handlers;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/nodegroup/GroupSaveEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.nodegroup;
2 |
3 | import de.cubbossa.pathfinder.event.NodeGroupSaveEvent;
4 | import de.cubbossa.pathfinder.group.NodeGroup;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import org.bukkit.event.Event;
8 | import org.bukkit.event.HandlerList;
9 |
10 | @Getter
11 | @AllArgsConstructor
12 | public class GroupSaveEvent extends Event implements NodeGroupSaveEvent {
13 |
14 | private static final HandlerList handlers = new HandlerList();
15 |
16 | private final NodeGroup group;
17 |
18 | public static HandlerList getHandlerList() {
19 | return handlers;
20 | }
21 |
22 | public HandlerList getHandlers() {
23 | return handlers;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/nodegroup/NodeGroupAssignEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.nodegroup;
2 |
3 | import com.google.common.collect.Lists;
4 | import de.cubbossa.pathfinder.misc.NamespacedKey;
5 | import java.util.ArrayList;
6 | import java.util.Collection;
7 | import java.util.Collections;
8 | import java.util.List;
9 | import java.util.UUID;
10 | import lombok.Getter;
11 | import lombok.Setter;
12 | import org.bukkit.event.Cancellable;
13 | import org.bukkit.event.Event;
14 | import org.bukkit.event.HandlerList;
15 |
16 | @Getter
17 | @Setter
18 | public class NodeGroupAssignEvent extends Event implements Cancellable {
19 |
20 | private static final HandlerList handlers = new HandlerList();
21 |
22 | private final Collection groupables;
23 | private final Collection groups;
24 | private Collection modifiedGroupables;
25 | private Collection modifiedGroups;
26 | private boolean cancelled;
27 |
28 | public NodeGroupAssignEvent(UUID groupable, NamespacedKey groups) {
29 | this(Lists.newArrayList(groupable), List.of(groups));
30 | }
31 |
32 | public NodeGroupAssignEvent(Collection groupables, Collection groups) {
33 | this.groupables = Collections.unmodifiableCollection(groupables);
34 | this.groups = Collections.unmodifiableCollection(groups);
35 | this.modifiedGroupables = new ArrayList<>(groupables);
36 | this.modifiedGroups = new ArrayList<>(groups);
37 | }
38 |
39 | public static HandlerList getHandlerList() {
40 | return handlers;
41 | }
42 |
43 | public HandlerList getHandlers() {
44 | return handlers;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/nodegroup/NodeGroupAssignedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.nodegroup;
2 |
3 | import com.google.common.collect.Lists;
4 | import de.cubbossa.pathfinder.misc.NamespacedKey;
5 | import java.util.Collection;
6 | import java.util.Collections;
7 | import java.util.List;
8 | import java.util.UUID;
9 | import lombok.Getter;
10 | import lombok.Setter;
11 | import org.bukkit.event.Event;
12 | import org.bukkit.event.HandlerList;
13 |
14 | @Getter
15 | @Setter
16 | public class NodeGroupAssignedEvent extends Event {
17 |
18 | private static final HandlerList handlers = new HandlerList();
19 |
20 | private final Collection groupables;
21 | private final Collection groups;
22 |
23 | public NodeGroupAssignedEvent(UUID groupables, NamespacedKey groups) {
24 | this(Lists.newArrayList(groupables), List.of(groups));
25 | }
26 |
27 | public NodeGroupAssignedEvent(Collection groupables, Collection groups) {
28 | this.groupables = Collections.unmodifiableCollection(groupables);
29 | this.groups = Collections.unmodifiableCollection(groups);
30 | }
31 |
32 | public static HandlerList getHandlerList() {
33 | return handlers;
34 | }
35 |
36 | public HandlerList getHandlers() {
37 | return handlers;
38 | }
39 |
40 | @Override
41 | public String toString() {
42 | return "NodeGroupAssignedEvent{" +
43 | "groupables=" + groupables +
44 | ", groups=" + groups +
45 | '}';
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/nodegroup/NodeGroupFindDistanceChangedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.nodegroup;
2 |
3 | import de.cubbossa.pathfinder.nodegroup.NodeGroupImpl;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Getter;
6 | import lombok.Setter;
7 | import org.bukkit.event.Event;
8 | import org.bukkit.event.HandlerList;
9 |
10 | @Getter
11 | @Setter
12 | @AllArgsConstructor
13 | public class NodeGroupFindDistanceChangedEvent extends Event {
14 |
15 | private static final HandlerList handlers = new HandlerList();
16 |
17 | private final NodeGroupImpl group;
18 | private final float value;
19 |
20 | public static HandlerList getHandlerList() {
21 | return handlers;
22 | }
23 |
24 | public HandlerList getHandlers() {
25 | return handlers;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/nodegroup/NodeGroupNameChangedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.nodegroup;
2 |
3 | import de.cubbossa.pathfinder.nodegroup.NodeGroupImpl;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Getter;
6 | import org.bukkit.event.Event;
7 | import org.bukkit.event.HandlerList;
8 |
9 | @Getter
10 | @AllArgsConstructor
11 | public class NodeGroupNameChangedEvent extends Event {
12 |
13 | private static final HandlerList handlers = new HandlerList();
14 |
15 | private final NodeGroupImpl group;
16 | private final String nameFormat;
17 |
18 | public static HandlerList getHandlerList() {
19 | return handlers;
20 | }
21 |
22 | public HandlerList getHandlers() {
23 | return handlers;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/nodegroup/NodeGroupNavigableChangedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.nodegroup;
2 |
3 | import de.cubbossa.pathfinder.nodegroup.NodeGroupImpl;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Getter;
6 | import org.bukkit.event.Event;
7 | import org.bukkit.event.HandlerList;
8 |
9 | @Getter
10 | @AllArgsConstructor
11 | public class NodeGroupNavigableChangedEvent extends Event {
12 |
13 | private static final HandlerList handlers = new HandlerList();
14 |
15 | private final NodeGroupImpl group;
16 | private final boolean newValue;
17 |
18 | public static HandlerList getHandlerList() {
19 | return handlers;
20 | }
21 |
22 | public HandlerList getHandlers() {
23 | return handlers;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/nodegroup/NodeGroupPermissionChangedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.nodegroup;
2 |
3 | import de.cubbossa.pathfinder.nodegroup.NodeGroupImpl;
4 | import javax.annotation.Nullable;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Getter;
7 | import lombok.Setter;
8 | import org.bukkit.event.Event;
9 | import org.bukkit.event.HandlerList;
10 |
11 | @Getter
12 | @Setter
13 | @AllArgsConstructor
14 | public class NodeGroupPermissionChangedEvent extends Event {
15 |
16 | private static final HandlerList handlers = new HandlerList();
17 |
18 | private final NodeGroupImpl group;
19 | private final @Nullable
20 | String permission;
21 |
22 | public static HandlerList getHandlerList() {
23 | return handlers;
24 | }
25 |
26 | public HandlerList getHandlers() {
27 | return handlers;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/nodegroup/NodeGroupRemoveEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.nodegroup;
2 |
3 | import com.google.common.collect.Lists;
4 | import de.cubbossa.pathfinder.node.Node;
5 | import de.cubbossa.pathfinder.nodegroup.NodeGroupImpl;
6 | import java.util.ArrayList;
7 | import java.util.Collection;
8 | import java.util.Collections;
9 | import java.util.List;
10 | import lombok.Getter;
11 | import lombok.Setter;
12 | import org.bukkit.event.Cancellable;
13 | import org.bukkit.event.Event;
14 | import org.bukkit.event.HandlerList;
15 |
16 | @Getter
17 | @Setter
18 | public class NodeGroupRemoveEvent extends Event implements Cancellable {
19 |
20 | private static final HandlerList handlers = new HandlerList();
21 |
22 | private final Collection groupables;
23 | private final Collection groups;
24 | private Collection modifiedGroupables;
25 | private Collection modifiedGroups;
26 | private boolean cancelled;
27 |
28 | public NodeGroupRemoveEvent(Node groupables, NodeGroupImpl groups) {
29 | this(Lists.newArrayList(groupables), List.of(groups));
30 | }
31 |
32 | public NodeGroupRemoveEvent(Collection groupables,
33 | Collection groups) {
34 | this.groupables = Collections.unmodifiableCollection(groupables);
35 | this.groups = Collections.unmodifiableCollection(groups);
36 | this.modifiedGroupables = new ArrayList<>(groupables);
37 | this.modifiedGroups = new ArrayList<>(groups);
38 | }
39 |
40 | public static HandlerList getHandlerList() {
41 | return handlers;
42 | }
43 |
44 | public HandlerList getHandlers() {
45 | return handlers;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/nodegroup/NodeGroupRemovedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.nodegroup;
2 |
3 | import com.google.common.collect.Lists;
4 | import de.cubbossa.pathfinder.node.Node;
5 | import de.cubbossa.pathfinder.nodegroup.NodeGroupImpl;
6 | import java.util.Collection;
7 | import java.util.Collections;
8 | import java.util.List;
9 | import lombok.Getter;
10 | import lombok.Setter;
11 | import org.bukkit.event.Event;
12 | import org.bukkit.event.HandlerList;
13 |
14 | @Getter
15 | @Setter
16 | public class NodeGroupRemovedEvent extends Event {
17 |
18 | private static final HandlerList handlers = new HandlerList();
19 |
20 | private final Collection groupables;
21 | private final Collection groups;
22 |
23 | public NodeGroupRemovedEvent(Node groupables, NodeGroupImpl groups) {
24 | this(Lists.newArrayList(groupables), List.of(groups));
25 | }
26 |
27 | public NodeGroupRemovedEvent(Collection groupables,
28 | Collection groups) {
29 | this.groupables = Collections.unmodifiableCollection(groupables);
30 | this.groups = Collections.unmodifiableCollection(groups);
31 | }
32 |
33 | public static HandlerList getHandlerList() {
34 | return handlers;
35 | }
36 |
37 | public HandlerList getHandlers() {
38 | return handlers;
39 | }
40 |
41 | @Override
42 | public String toString() {
43 | return "NodeGroupRemovedEvent{" +
44 | "groupables=" + groupables +
45 | ", groups=" + groups +
46 | '}';
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/nodegroup/NodeGroupSearchTermsChangedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.nodegroup;
2 |
3 | import de.cubbossa.pathfinder.nodegroup.NodeGroupImpl;
4 | import java.util.ArrayList;
5 | import java.util.Collection;
6 | import lombok.Getter;
7 | import org.bukkit.event.Event;
8 | import org.bukkit.event.HandlerList;
9 |
10 | @Getter
11 |
12 | public class NodeGroupSearchTermsChangedEvent extends Event {
13 |
14 | private static final HandlerList handlers = new HandlerList();
15 | private final NodeGroupImpl group;
16 | private final Action action;
17 | private final Collection changedTerms;
18 |
19 | public NodeGroupSearchTermsChangedEvent(NodeGroupImpl group, Action action,
20 | Collection terms) {
21 | this.group = group;
22 | this.action = action;
23 | this.changedTerms = new ArrayList<>(terms);
24 | }
25 |
26 | public static HandlerList getHandlerList() {
27 | return handlers;
28 | }
29 |
30 | public HandlerList getHandlers() {
31 | return handlers;
32 | }
33 |
34 | public enum Action {
35 | ADD,
36 | REMOVE,
37 | CLEAR
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/path/PathCancelEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.path;
2 |
3 | import de.cubbossa.pathfinder.event.PathCancelledEvent;
4 | import de.cubbossa.pathfinder.misc.PathPlayer;
5 | import de.cubbossa.pathfinder.visualizer.VisualizerPath;
6 | import lombok.Getter;
7 | import lombok.Setter;
8 | import org.bukkit.entity.Player;
9 | import org.bukkit.event.Cancellable;
10 | import org.bukkit.event.Event;
11 | import org.bukkit.event.HandlerList;
12 |
13 | @Getter
14 | @Setter
15 | public class PathCancelEvent extends Event implements Cancellable, PathCancelledEvent {
16 |
17 | private static final HandlerList handlers = new HandlerList();
18 |
19 | private final PathPlayer player;
20 | private final VisualizerPath path;
21 | private boolean cancelled = false;
22 |
23 | public PathCancelEvent(PathPlayer player, VisualizerPath path) {
24 | this.player = player;
25 | this.path = path;
26 | }
27 |
28 | public static HandlerList getHandlerList() {
29 | return handlers;
30 | }
31 |
32 | public HandlerList getHandlers() {
33 | return handlers;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/path/PathStartEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.path;
2 |
3 | import de.cubbossa.pathfinder.misc.PathPlayer;
4 | import de.cubbossa.pathfinder.visualizer.VisualizerPath;
5 | import lombok.Getter;
6 | import lombok.Setter;
7 | import org.bukkit.entity.Player;
8 | import org.bukkit.event.Cancellable;
9 | import org.bukkit.event.Event;
10 | import org.bukkit.event.HandlerList;
11 |
12 | @Getter
13 | @Setter
14 | public class PathStartEvent extends Event implements Cancellable, de.cubbossa.pathfinder.event.PathStartEvent {
15 |
16 | private static final HandlerList handlers = new HandlerList();
17 |
18 | private final PathPlayer player;
19 | private final VisualizerPath path;
20 | private boolean cancelled = false;
21 |
22 | public PathStartEvent(PathPlayer player, VisualizerPath path) {
23 | this.player = player;
24 | this.path = path;
25 | }
26 |
27 | public static HandlerList getHandlerList() {
28 | return handlers;
29 | }
30 |
31 | public HandlerList getHandlers() {
32 | return handlers;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/path/PathStopEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.path;
2 |
3 | import de.cubbossa.pathfinder.BukkitPathPlayer;
4 | import de.cubbossa.pathfinder.event.PathStoppedEvent;
5 | import de.cubbossa.pathfinder.misc.PathPlayer;
6 | import de.cubbossa.pathfinder.visualizer.GroupedVisualizerPathImpl;
7 | import java.util.UUID;
8 | import lombok.Getter;
9 | import lombok.Setter;
10 | import org.bukkit.entity.Player;
11 | import org.bukkit.event.Cancellable;
12 | import org.bukkit.event.Event;
13 | import org.bukkit.event.HandlerList;
14 |
15 | @Getter
16 | @Setter
17 | public class PathStopEvent extends Event implements Cancellable, PathStoppedEvent {
18 |
19 | private static final HandlerList handlers = new HandlerList();
20 |
21 | private final PathPlayer player;
22 | private final GroupedVisualizerPathImpl path;
23 | private boolean cancelled = false;
24 |
25 | public PathStopEvent(UUID playerId, GroupedVisualizerPathImpl path) {
26 | this.player = new BukkitPathPlayer(playerId);
27 | this.path = path;
28 | }
29 |
30 | public static HandlerList getHandlerList() {
31 | return handlers;
32 | }
33 |
34 | public HandlerList getHandlers() {
35 | return handlers;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/path/PathTargetFoundEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.path;
2 |
3 | import de.cubbossa.pathfinder.event.PathTargetReachedEvent;
4 | import de.cubbossa.pathfinder.misc.PathPlayer;
5 | import de.cubbossa.pathfinder.visualizer.VisualizerPath;
6 | import lombok.Getter;
7 | import org.bukkit.entity.Player;
8 | import org.bukkit.event.Event;
9 | import org.bukkit.event.HandlerList;
10 |
11 | @Getter
12 | public class PathTargetFoundEvent extends Event implements PathTargetReachedEvent {
13 |
14 | private static final HandlerList handlers = new HandlerList();
15 |
16 | private final PathPlayer player;
17 | private final VisualizerPath path;
18 |
19 | public PathTargetFoundEvent(PathPlayer player, VisualizerPath path) {
20 | this.player = player;
21 | this.path = path;
22 | }
23 |
24 | public static HandlerList getHandlerList() {
25 | return handlers;
26 | }
27 |
28 | public HandlerList getHandlers() {
29 | return handlers;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/visualizer/CombinedVisualizerChangedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.visualizer;
2 |
3 | import de.cubbossa.pathfinder.visualizer.PathVisualizer;
4 | import de.cubbossa.pathfinder.visualizer.impl.CombinedVisualizer;
5 | import java.util.Collection;
6 | import lombok.Getter;
7 | import lombok.RequiredArgsConstructor;
8 | import lombok.Setter;
9 | import org.bukkit.event.Event;
10 | import org.bukkit.event.HandlerList;
11 |
12 | @Getter
13 | @Setter
14 | @RequiredArgsConstructor
15 | public class CombinedVisualizerChangedEvent extends Event {
16 |
17 | private static final HandlerList handlers = new HandlerList();
18 | private final CombinedVisualizer visualizer;
19 | private final Action action;
20 | private final Collection> targets;
21 |
22 | public static HandlerList getHandlerList() {
23 | return handlers;
24 | }
25 |
26 | public HandlerList getHandlers() {
27 | return handlers;
28 | }
29 |
30 | public enum Action {ADD, REMOVE, CLEAR}
31 | }
32 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/visualizer/VisualizerCreatedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.visualizer;
2 |
3 | import de.cubbossa.pathfinder.visualizer.PathVisualizer;
4 | import lombok.Getter;
5 | import lombok.RequiredArgsConstructor;
6 | import lombok.Setter;
7 | import org.bukkit.event.Event;
8 | import org.bukkit.event.HandlerList;
9 |
10 | @Getter
11 | @Setter
12 | @RequiredArgsConstructor
13 | public class VisualizerCreatedEvent extends Event {
14 |
15 | private static final HandlerList handlers = new HandlerList();
16 |
17 | private final PathVisualizer, ?> visualizer;
18 |
19 | public static HandlerList getHandlerList() {
20 | return handlers;
21 | }
22 |
23 | public HandlerList getHandlers() {
24 | return handlers;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/visualizer/VisualizerNameChangedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.visualizer;
2 |
3 | import de.cubbossa.pathfinder.visualizer.PathVisualizer;
4 | import lombok.Getter;
5 | import lombok.RequiredArgsConstructor;
6 | import lombok.Setter;
7 | import org.bukkit.event.Event;
8 | import org.bukkit.event.HandlerList;
9 |
10 | @Getter
11 | @Setter
12 | @RequiredArgsConstructor
13 | public class VisualizerNameChangedEvent extends Event {
14 |
15 | private static final HandlerList handlers = new HandlerList();
16 |
17 | private final PathVisualizer, ?> visualizer;
18 | private final String oldNameFormat;
19 | private final String newNameFormat;
20 |
21 | public static HandlerList getHandlerList() {
22 | return handlers;
23 | }
24 |
25 | public HandlerList getHandlers() {
26 | return handlers;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/visualizer/VisualizerPermissionChangedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.visualizer;
2 |
3 | import de.cubbossa.pathfinder.visualizer.PathVisualizer;
4 | import lombok.Getter;
5 | import lombok.RequiredArgsConstructor;
6 | import lombok.Setter;
7 | import org.bukkit.event.Event;
8 | import org.bukkit.event.HandlerList;
9 |
10 | @Getter
11 | @Setter
12 | @RequiredArgsConstructor
13 | public class VisualizerPermissionChangedEvent extends Event {
14 |
15 | private static final HandlerList handlers = new HandlerList();
16 |
17 | private final PathVisualizer, ?> visualizer;
18 | private final String oldPermission;
19 | private final String newPermission;
20 |
21 | public static HandlerList getHandlerList() {
22 | return handlers;
23 | }
24 |
25 | public HandlerList getHandlers() {
26 | return handlers;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/events/visualizer/VisualizerPropertyChangedEvent.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.events.visualizer;
2 |
3 | import de.cubbossa.pathfinder.visualizer.PathVisualizer;
4 | import lombok.Getter;
5 | import lombok.RequiredArgsConstructor;
6 | import org.bukkit.event.Event;
7 | import org.bukkit.event.HandlerList;
8 |
9 | @RequiredArgsConstructor
10 | @Getter
11 | public class VisualizerPropertyChangedEvent extends Event {
12 |
13 | private static final HandlerList handlers = new HandlerList();
14 |
15 | private final PathVisualizer, ?> visualizer;
16 | private final String field;
17 | private final boolean visual;
18 | private final T oldValue;
19 | private final T newValue;
20 |
21 | public static HandlerList getHandlerList() {
22 | return handlers;
23 | }
24 |
25 | public HandlerList getHandlers() {
26 | return handlers;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/listener/PlayerListener.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.listener;
2 |
3 | import de.cubbossa.pathfinder.misc.NamespacedKey;
4 | import de.cubbossa.pathfinder.misc.PathPlayer;
5 | import de.cubbossa.pathfinder.node.GraphEditorRegistry;
6 | import org.bukkit.entity.Player;
7 | import org.bukkit.event.EventHandler;
8 | import org.bukkit.event.Listener;
9 | import org.bukkit.event.player.PlayerQuitEvent;
10 |
11 | public class PlayerListener implements Listener {
12 |
13 | @EventHandler
14 | public void onQuit(PlayerQuitEvent event) {
15 | PathPlayer player = PathPlayer.wrap(event.getPlayer());
16 |
17 | NamespacedKey currentlyEdited = GraphEditorRegistry.getInstance().getEdited(player);
18 | if (currentlyEdited != null) {
19 | GraphEditorRegistry.getInstance().getNodeGroupEditor(currentlyEdited)
20 | .thenAccept(e -> e.setEditMode(player, false));
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/migration/V5_0_0__Config.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.migration;
2 |
3 | import de.cubbossa.pathfinder.PathFinder;
4 | import java.io.File;
5 | import org.bukkit.configuration.file.YamlConfiguration;
6 | import org.flywaydb.core.api.migration.BaseJavaMigration;
7 | import org.flywaydb.core.api.migration.Context;
8 |
9 | public class V5_0_0__Config extends BaseJavaMigration {
10 |
11 | @Override
12 | public void migrate(Context context) throws Exception {
13 |
14 | PathFinder pathFinder = PathFinder.get();
15 |
16 | File config = new File(pathFinder.getDataFolder(), "config.yml");
17 | if (!config.exists()) {
18 | return;
19 | }
20 | YamlConfiguration yml = YamlConfiguration.loadConfiguration(config);
21 | yml.set("version", null);
22 | yml.save(config);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/pathfinder-bukkit/src/main/java/de/cubbossa/pathfinder/util/BukkitMainThreadExecutor.java:
--------------------------------------------------------------------------------
1 | package de.cubbossa.pathfinder.util;
2 |
3 | import java.util.Queue;
4 | import java.util.concurrent.ConcurrentLinkedQueue;
5 | import java.util.concurrent.Executor;
6 | import org.bukkit.plugin.java.JavaPlugin;
7 | import org.jetbrains.annotations.NotNull;
8 |
9 | public class BukkitMainThreadExecutor implements Executor {
10 |
11 | private final double MAX_MILLIS_PER_TICK;
12 | private final int MAX_NANOS_PER_TICK;
13 |
14 | private final Queue