Skip to content

Commit

Permalink
refactor!: split project into modules
Browse files Browse the repository at this point in the history
* closes CubBossa#19 edge concurrency problems

* closes CubBossa#24

* Close CubBossa#22

* Closes CubBossa#21

* compass visualizer default interval of 1 instead of 20

* Version increment

* CubBossa#26 modules

graph module separated

* fix: use Java 17 for all modules

---------

Co-authored-by: CubBossa <leonard.bausenwein@web.de>
  • Loading branch information
LooFifteen and CubBossa authored Mar 1, 2023
1 parent b468e46 commit 6033baa
Show file tree
Hide file tree
Showing 185 changed files with 626 additions and 304 deletions.
140 changes: 4 additions & 136 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,145 +1,13 @@
plugins {
antlr
idea
java
`maven-publish`
id("com.github.johnrengelman.shadow") version "8.0.0"
id("io.freefair.lombok") version "6.6.2"
id("xyz.jpenilla.run-paper") version "2.0.1"
eclipse
}

group = "de.cubbossa"
version = "2.1.0"

val minecraftVersion = project.property("minecraft_version") as String

repositories {
mavenCentral()
maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/")
maven("https://repo.codemc.org/repository/maven-public/")
maven("https://libraries.minecraft.net/")
maven("https://nexus.leonardbausenwein.de/repository/maven-public/")
maven("https://repo.dmulloy2.net/repository/public/")
maven("https://repo.extendedclip.com/content/repositories/placeholderapi/")
}

dependencies {
// Antlr
antlr("org.antlr:antlr4:4.12.0")

// Adventure
implementation("net.kyori:adventure-api:4.12.0")
implementation("net.kyori:adventure-platform-bukkit:4.1.2")
implementation("net.kyori:adventure-text-minimessage:4.12.0")
implementation("net.kyori:adventure-text-serializer-plain:4.12.0")

// Configuration
implementation("de.cubbossa:NBO-Core:1.0")

// Commands
implementation("de.cubbossa:commandapi-shade:8.7.5")

// NBT
implementation("de.tr7zw:item-nbt-api:2.11.1")

// Other
implementation("com.google.guava:guava:31.1-jre")

// Particles
implementation("org.openjdk.nashorn:nashorn-core:15.4")
implementation("xyz.xenondevs:particle:1.8.3")
implementation("de.cubbossa:splinelib:1.0")
implementation("de.cubbossa:SerializedEffects:1.0")

// Plugins
compileOnly("com.comphenix.protocol:ProtocolLib:5.0.0-SNAPSHOT")
compileOnly("me.clip:placeholderapi:2.11.2")

// Statistics
implementation("org.bstats:bstats-bukkit:3.0.1")

// Spigot
compileOnly("org.spigotmc:spigot-api:$minecraftVersion-R0.1-SNAPSHOT")
testImplementation("org.spigotmc:spigot-api:$minecraftVersion-R0.1-SNAPSHOT")
compileOnly("com.mojang:brigadier:1.0.18")
testImplementation("com.mojang:brigadier:1.0.18")
compileOnly("com.mojang:authlib:1.5.25")

// Tests
testImplementation("org.junit.jupiter:junit-jupiter-api:5.9.0")
testImplementation("org.junit.jupiter:junit-jupiter-params:5.9.0")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.9.0")

// UI
implementation("de.cubbossa:Translations:1.1")
implementation("de.cubbossa:MenuFramework:1.2")
}

java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17))
}
}

tasks {
build {
dependsOn(shadowJar)
}
generateGrammarSource {
// Tell ANTLR to generate visitor classes
arguments.plusAssign("-visitor")
}
runServer {
minecraftVersion(minecraftVersion)
}
shadowJar {
fun relocate(from: String, to: String) {
relocate(from, "de.cubbossa.pathfinder.lib.$to", null)
}

relocate("org.bstats", "bstats")
relocate("de.cubbossa.serializedeffects", "serializedeffects")
relocate("de.cubbossa.nbo", "nbo")
relocate("net.kyori", "kyori")
relocate("de.cubbossa.menuframework", "gui")
relocate("de.cubbossa.translations", "translations")
relocate("de.cubbossa.splinelib", "splinelib")
relocate("de.cubbossa.particle", "particle")
relocate("dev.jorel.commandapi", "commandapi")
relocate("de.tr7zw.changeme.nbtapi", "nbtapi")
relocate("org.antlr", "antlr")
}
test {
useJUnitPlatform()
}
withType<JavaCompile> {
options.encoding = "UTF-8"
}
}

sourceSets {
main {
// Include ANTLR generated sources
java.srcDirs += file("build/generated-src/antlr/main")
}
}

publishing {
subprojects {
repositories {
maven {
name = "Nexus"
url = uri("https://nexus.leonardbausenwein.de/repository/maven-public/")
credentials {
username = "admin"
password = System.getenv("NEXUS_PASSWORD")
}
}
}
publications.create<MavenPublication>("maven") {
groupId = project.group.toString()
artifactId = rootProject.name
version = project.version.toString()

from(components["java"])
mavenCentral()
}
}
}
132 changes: 132 additions & 0 deletions core/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
plugins {
antlr
java
`maven-publish`
id("com.github.johnrengelman.shadow") version "8.0.0"
id("io.freefair.lombok") version "6.6.2"
id("xyz.jpenilla.run-paper") version "2.0.1"
}

val minecraftVersion = project.property("minecraft_version") as String

java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17))
}
}

repositories {
mavenCentral()
maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/")
maven("https://repo.codemc.org/repository/maven-public/")
maven("https://libraries.minecraft.net/")
maven("https://nexus.leonardbausenwein.de/repository/maven-public/")
maven("https://repo.dmulloy2.net/repository/public/")
maven("https://repo.extendedclip.com/content/repositories/placeholderapi/")
}

dependencies {
// Antlr
antlr("org.antlr:antlr4:4.12.0")

// Adventure
implementation("net.kyori:adventure-api:4.12.0")
implementation("net.kyori:adventure-platform-bukkit:4.1.2")
implementation("net.kyori:adventure-text-minimessage:4.12.0")
implementation("net.kyori:adventure-text-serializer-plain:4.12.0")

// Configuration
implementation("de.cubbossa:NBO-Core:1.0")

// Commands
implementation("de.cubbossa:commandapi-shade:8.7.5")

// NBT
implementation("de.tr7zw:item-nbt-api:2.11.1")

// Other
implementation("com.google.guava:guava:31.1-jre")

// Particles
implementation("org.openjdk.nashorn:nashorn-core:15.4")
implementation("xyz.xenondevs:particle:1.8.3")
implementation("de.cubbossa:splinelib:1.0")
implementation("de.cubbossa:SerializedEffects:1.0")

// Plugins
implementation(project(":pathfinder-graph"))
compileOnly("com.comphenix.protocol:ProtocolLib:5.0.0-SNAPSHOT")
compileOnly("me.clip:placeholderapi:2.11.2")

// Statistics
implementation("org.bstats:bstats-bukkit:3.0.1")

// Spigot
compileOnly("org.spigotmc:spigot-api:$minecraftVersion-R0.1-SNAPSHOT")
testImplementation("org.spigotmc:spigot-api:$minecraftVersion-R0.1-SNAPSHOT")
compileOnly("com.mojang:brigadier:1.0.18")
testImplementation("com.mojang:brigadier:1.0.18")
compileOnly("com.mojang:authlib:1.5.25")

// Tests
testImplementation("org.junit.jupiter:junit-jupiter-api:5.9.0")
testImplementation("org.junit.jupiter:junit-jupiter-params:5.9.0")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.9.0")

// UI
implementation("de.cubbossa:Translations:1.1")
implementation("de.cubbossa:MenuFramework:1.2")
}

tasks {
build {
dependsOn(shadowJar)
}
generateGrammarSource {
// Tell ANTLR to generate visitor classes
arguments.plusAssign("-visitor")
}
processResources {
// Replace tokens in plugin.yml
filter(
org.apache.tools.ant.filters.ReplaceTokens::class,
"tokens" to mapOf(
"version" to project.version.toString(),
"name" to rootProject.name
)
)
}
runServer {
minecraftVersion(minecraftVersion)
}
shadowJar {
fun relocate(from: String, to: String) {
relocate(from, "de.cubbossa.pathfinder.lib.$to", null)
}

relocate("org.bstats", "bstats")
relocate("de.cubbossa.serializedeffects", "serializedeffects")
relocate("de.cubbossa.nbo", "nbo")
relocate("net.kyori", "kyori")
relocate("de.cubbossa.menuframework", "gui")
relocate("de.cubbossa.translations", "translations")
relocate("de.cubbossa.splinelib", "splinelib")
relocate("de.cubbossa.particle", "particle")
relocate("dev.jorel.commandapi", "commandapi")
relocate("de.tr7zw.changeme.nbtapi", "nbtapi")
relocate("org.antlr", "antlr")
}
test {
useJUnitPlatform()
}
withType<JavaCompile> {
options.encoding = "UTF-8"
}
}

sourceSets {
main {
// Include ANTLR generated sources
java.srcDirs += file("build/generated-src/antlr/main")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ public class Messages {
public static final Message CMD_RM_INFO = new Message("commands.roadmap.info");
@MessageMeta("<negative>Could not create Roadmap, another Roadmap with this key already exists.")
public static final Message CMD_RM_CREATE_DUPLICATE_KEY =
new Message("commands.roadmap.create.success");
new Message("commands.roadmap.create.duplicate_key");
@MessageMeta("<negative>Could not create Roadmap. Check out console for details.")
public static final Message CMD_RM_CREATE_FAIL = new Message("commands.roadmap.create.fail");
@MessageMeta(value = "<ins:prefix><gray>Successfully created Roadmap <offset><name></offset>.</gray>", placeholders = "name")
Expand Down Expand Up @@ -163,7 +163,7 @@ public class Messages {
@MessageMeta(value = "<ins:prefix>Editmode deactivated for <offset><roadmap></offset>.", placeholders = {
"roadmap"})
public static final Message CMD_RM_EM_DEACTIVATED =
new Message("commands.roadmap.editmode.activated");
new Message("commands.roadmap.editmode.deactivated");
@MessageMeta(value = "<ins:prefix>Player <name> discovered <discovery>.", placeholders = {"name",
"discovery"})
public static final Message CMD_RM_FORCE_FIND = new Message("commands.roadmap.force_find");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,13 @@ public CommandArgument<RoadMap, CustomArgument<RoadMap, NamespacedKey>> roadMapA
String nodeName) {
return (CommandArgument<RoadMap, CustomArgument<RoadMap, NamespacedKey>>) arg(
new CustomArgument<>(new NamespacedKeyArgument(nodeName), customArgumentInfo -> {
return RoadMapHandler.getInstance().getRoadMap(customArgumentInfo.currentInput());
RoadMap roadMap =
RoadMapHandler.getInstance().getRoadMap(customArgumentInfo.currentInput());
if (roadMap == null) {
throw new CustomArgument.CustomArgumentException(
"Unknown roadmap: '" + customArgumentInfo.currentInput() + "'.");
}
return roadMap;
}))
.includeSuggestions(
suggestNamespacedKeys(sender -> RoadMapHandler.getInstance().getRoadMapsStream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import de.cubbossa.pathfinder.core.events.node.EdgesDeletedEvent;
import de.cubbossa.pathfinder.core.events.node.NodeCreatedEvent;
import de.cubbossa.pathfinder.core.events.node.NodesDeletedEvent;
import de.cubbossa.pathfinder.core.graph.Graph;
import de.cubbossa.pathfinder.core.node.Edge;
import de.cubbossa.pathfinder.core.node.Groupable;
import de.cubbossa.pathfinder.core.node.NavigateSelection;
Expand All @@ -20,6 +19,7 @@
import de.cubbossa.pathfinder.core.node.implementation.PlayerNode;
import de.cubbossa.pathfinder.core.node.implementation.Waypoint;
import de.cubbossa.pathfinder.data.DataStorageException;
import de.cubbossa.pathfinder.graph.Graph;
import de.cubbossa.pathfinder.module.visualizing.visualizer.PathVisualizer;
import de.cubbossa.pathfinder.util.NodeSelection;
import java.util.AbstractMap;
Expand Down Expand Up @@ -431,7 +431,9 @@ public void disconnectNodes(Node start, Node end) {
}

public void disconnectNode(Node node) {
node.getEdges().forEach(this::disconnectNodes);
for (Edge edge : new ArrayList<>(node.getEdges())) {
disconnectNodes(edge);
}
}

public void disconnectNodes(Edge edge) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import de.cubbossa.pathfinder.core.node.NodeTypeHandler;
import de.cubbossa.pathfinder.util.ClientNodeHandler;
import de.cubbossa.pathfinder.util.LerpUtils;
import java.awt.Color;
import java.awt.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,17 @@

import de.cubbossa.pathfinder.Messages;
import de.cubbossa.pathfinder.PathPlugin;
import de.cubbossa.pathfinder.core.graph.Graph;
import de.cubbossa.pathfinder.core.graph.SimpleDijkstra;
import de.cubbossa.pathfinder.core.node.Groupable;
import de.cubbossa.pathfinder.core.node.Navigable;
import de.cubbossa.pathfinder.core.node.Node;
import de.cubbossa.pathfinder.core.node.NodeGroupHandler;
import de.cubbossa.pathfinder.core.node.implementation.PlayerNode;
import de.cubbossa.pathfinder.core.roadmap.RoadMap;
import de.cubbossa.pathfinder.core.roadmap.RoadMapHandler;
import de.cubbossa.pathfinder.graph.Graph;
import de.cubbossa.pathfinder.graph.NoPathFoundException;
import de.cubbossa.pathfinder.graph.PathSolver;
import de.cubbossa.pathfinder.graph.SimpleDijkstra;
import de.cubbossa.pathfinder.module.visualizing.events.PathStartEvent;
import de.cubbossa.pathfinder.module.visualizing.events.PathTargetFoundEvent;
import de.cubbossa.pathfinder.module.visualizing.events.VisualizerPropertyChangedEvent;
Expand Down Expand Up @@ -119,11 +121,11 @@ public NavigateResult findPath(Player player, NodeSelection targets, Collection<
graph.merge(roadMap.toGraph(player, null));
}

SimpleDijkstra<Node> dijkstra = new SimpleDijkstra<>(graph);
dijkstra.setStartNode(playerNode);
List<Node> path = dijkstra.shortestPathToAny(targets);

if (path == null) {
PathSolver<Node> pathSolver = new SimpleDijkstra<>();
List<Node> path;
try {
path = pathSolver.solvePath(graph, playerNode, targets);
} catch (NoPathFoundException e) {
return NavigateResult.FAIL_BLOCKED;
}

Expand Down
Loading

0 comments on commit 6033baa

Please sign in to comment.