From ef65431d405a713b138a55054e78497883f27e54 Mon Sep 17 00:00:00 2001
From: him <edorta@uncc.edu>
Date: Sat, 11 Feb 2023 18:23:09 -0500
Subject: [PATCH] Add waypoint renaming

Co-authored-by: Flarp <flurpdadurp@gmail.com>
Reviewed-on: https://git.benjidial.net/benji/nswp/pulls/1
Co-authored-by: him <edorta@uncc.edu>
Co-committed-by: him <edorta@uncc.edu>
---
 pom.xml                                       |  2 +-
 src/main/java/net/benjidial/nswp/Plugin.java  | 11 +++---
 .../nswp/commands/RenameWaypoint.java         | 37 +++++++++++++++++++
 src/main/resources/plugin.yml                 |  6 ++-
 4 files changed, 49 insertions(+), 7 deletions(-)
 create mode 100644 src/main/java/net/benjidial/nswp/commands/RenameWaypoint.java

diff --git a/pom.xml b/pom.xml
index 0b34c40..ec7abc6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
 
   <groupId>net.benjidial.nswp</groupId>
   <artifactId>NSWP</artifactId>
-  <version>2.0-SNAPSHOT</version>
+  <version>2.1-SNAPSHOT</version>
 
   <name>NewSimpleWaypoints</name>
 
diff --git a/src/main/java/net/benjidial/nswp/Plugin.java b/src/main/java/net/benjidial/nswp/Plugin.java
index 9a46cb6..45509a7 100644
--- a/src/main/java/net/benjidial/nswp/Plugin.java
+++ b/src/main/java/net/benjidial/nswp/Plugin.java
@@ -25,10 +25,11 @@ public class Plugin extends JavaPlugin {
       return;
     }
 
-    getCommand("wlist").setExecutor(new ListWaypoints());
-    getCommand("wsave").setExecutor(new SaveWaypoint());
-    getCommand("wtp"  ).setExecutor(new TeleportToWaypoint());
-    getCommand("wdel" ).setExecutor(new DeleteWaypoint());
-    getCommand("wback").setExecutor(new WaypointBack());
+    getCommand("wlist"  ).setExecutor(new ListWaypoints());
+    getCommand("wsave"  ).setExecutor(new SaveWaypoint());
+    getCommand("wtp"    ).setExecutor(new TeleportToWaypoint());
+    getCommand("wdel"   ).setExecutor(new DeleteWaypoint());
+    getCommand("wback"  ).setExecutor(new WaypointBack());
+    getCommand("wrename").setExecutor(new RenameWaypoint());
   }
 }
diff --git a/src/main/java/net/benjidial/nswp/commands/RenameWaypoint.java b/src/main/java/net/benjidial/nswp/commands/RenameWaypoint.java
new file mode 100644
index 0000000..44af06c
--- /dev/null
+++ b/src/main/java/net/benjidial/nswp/commands/RenameWaypoint.java
@@ -0,0 +1,37 @@
+package net.benjidial.nswp.commands;
+
+import net.benjidial.nswp.Database;
+import net.benjidial.nswp.Waypoint;
+
+import org.bukkit.entity.Player;
+
+import java.sql.SQLException;
+
+public class RenameWaypoint extends WaypointCommand {
+    public CompletionType getCompletionType() {
+      return CompletionType.Waypoint;
+    }
+
+    @Override
+    public boolean body(Player player, String[] args) throws SQLException {
+        if (args.length != 2) return false;
+
+        if (Database.lookupWaypoint(player, args[1]) != null) {
+            player.sendMessage("Waypoint with that name already exists!");
+            return true;
+        }
+
+        Waypoint waypoint = Database.lookupWaypoint(player, args[0]);
+
+        if (waypoint == null) {
+            player.sendMessage("No waypoint with that name.");
+        } else {
+            Database.deleteWaypoint(player, args[0]);
+            waypoint.name = args[1];
+            Database.addWaypoint(player, waypoint);
+        }
+
+        return true;
+    }
+
+}
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 63dcf0e..d6341b1 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,6 +1,6 @@
 main: net.benjidial.nswp.Plugin
 name: NewSimpleWaypoints
-version: 2.0-SNAPSHOT
+version: 2.1-SNAPSHOT
 api-version: 1.19
 
 commands:
@@ -24,3 +24,7 @@ commands:
     description: Teleports a player to where they were the last time they ran wtp or wback
     usage: /wback
     permission: nswp.use
+  wrename:
+    description: Renames a waypoint
+    usage: /wrename <old-name> <new-name>
+    permission: nswp.use