diff --git a/pom.xml b/pom.xml
index 244b648..1c95347 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,9 +11,9 @@
UTF-8
UTF-8
- 1.4.19
+ 1.5.2
0.4.6
- 2.3.1
+ 2.3.3
cc.carm.plugin
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/MainCommands.java b/src/main/java/cc/carm/plugin/moeteleport/command/MainCommands.java
index ad02a04..dfb0aaa 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/MainCommands.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/MainCommands.java
@@ -1,7 +1,7 @@
package cc.carm.plugin.moeteleport.command;
import cc.carm.lib.easyplugin.command.CommandHandler;
-import cc.carm.plugin.moeteleport.command.parent.*;
+import cc.carm.plugin.moeteleport.command.sub.*;
import cc.carm.plugin.moeteleport.conf.PluginMessages;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/sub/HomeSubCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/base/HomeSubCommand.java
similarity index 92%
rename from src/main/java/cc/carm/plugin/moeteleport/command/sub/HomeSubCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/base/HomeSubCommand.java
index f94c4b0..229b804 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/sub/HomeSubCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/base/HomeSubCommand.java
@@ -1,8 +1,8 @@
-package cc.carm.plugin.moeteleport.command.sub;
+package cc.carm.plugin.moeteleport.command.base;
import cc.carm.lib.easyplugin.command.SubCommand;
import cc.carm.plugin.moeteleport.MoeTeleport;
-import cc.carm.plugin.moeteleport.command.parent.HomeCommands;
+import cc.carm.plugin.moeteleport.command.sub.HomeCommands;
import cc.carm.plugin.moeteleport.storage.UserData;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/sub/TeleportSubCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/base/TeleportSubCommand.java
similarity index 93%
rename from src/main/java/cc/carm/plugin/moeteleport/command/sub/TeleportSubCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/base/TeleportSubCommand.java
index bf97ee4..1aa7437 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/sub/TeleportSubCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/base/TeleportSubCommand.java
@@ -1,8 +1,8 @@
-package cc.carm.plugin.moeteleport.command.sub;
+package cc.carm.plugin.moeteleport.command.base;
import cc.carm.lib.easyplugin.command.SubCommand;
import cc.carm.plugin.moeteleport.MoeTeleport;
-import cc.carm.plugin.moeteleport.command.parent.TeleportCommands;
+import cc.carm.plugin.moeteleport.command.sub.TeleportCommands;
import cc.carm.plugin.moeteleport.storage.UserData;
import cc.carm.plugin.moeteleport.teleport.TeleportRequest;
import org.bukkit.Bukkit;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/sub/WarpSubCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/base/WarpSubCommand.java
similarity index 94%
rename from src/main/java/cc/carm/plugin/moeteleport/command/sub/WarpSubCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/base/WarpSubCommand.java
index d7e2fe9..4e4c50c 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/sub/WarpSubCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/base/WarpSubCommand.java
@@ -1,8 +1,8 @@
-package cc.carm.plugin.moeteleport.command.sub;
+package cc.carm.plugin.moeteleport.command.base;
import cc.carm.lib.easyplugin.command.SubCommand;
import cc.carm.plugin.moeteleport.MoeTeleport;
-import cc.carm.plugin.moeteleport.command.parent.WarpCommands;
+import cc.carm.plugin.moeteleport.command.sub.WarpCommands;
import cc.carm.plugin.moeteleport.manager.WarpManager;
import cc.carm.plugin.moeteleport.model.WarpInfo;
import org.bukkit.command.CommandSender;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/parent/BackCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/BackCommand.java
similarity index 96%
rename from src/main/java/cc/carm/plugin/moeteleport/command/parent/BackCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/BackCommand.java
index 6b0f62c..771a0ca 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/parent/BackCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/BackCommand.java
@@ -1,4 +1,4 @@
-package cc.carm.plugin.moeteleport.command.parent;
+package cc.carm.plugin.moeteleport.command.sub;
import cc.carm.lib.easyplugin.command.SubCommand;
import cc.carm.plugin.moeteleport.MoeTeleport;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/parent/HomeCommands.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/HomeCommands.java
similarity index 83%
rename from src/main/java/cc/carm/plugin/moeteleport/command/parent/HomeCommands.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/HomeCommands.java
index 61c4bd4..49a6760 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/parent/HomeCommands.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/HomeCommands.java
@@ -1,11 +1,8 @@
-package cc.carm.plugin.moeteleport.command.parent;
+package cc.carm.plugin.moeteleport.command.sub;
import cc.carm.lib.easyplugin.command.CommandHandler;
import cc.carm.plugin.moeteleport.command.MainCommands;
-import cc.carm.plugin.moeteleport.command.home.HomeCreateCommand;
-import cc.carm.plugin.moeteleport.command.home.HomeDeleteCommand;
-import cc.carm.plugin.moeteleport.command.home.HomeListCommand;
-import cc.carm.plugin.moeteleport.command.home.HomeTeleportCommand;
+import cc.carm.plugin.moeteleport.command.sub.home.*;
import cc.carm.plugin.moeteleport.conf.PluginConfig;
import cc.carm.plugin.moeteleport.conf.PluginMessages;
import org.bukkit.command.Command;
@@ -26,6 +23,7 @@ public class HomeCommands extends CommandHandler {
registerSubCommand(new HomeListCommand(this, "list", "ls"));
registerSubCommand(new HomeCreateCommand(this, "set", "create"));
registerSubCommand(new HomeDeleteCommand(this, "delete", "remove", "del"));
+ registerSubCommand(new HomeRenameCommand(this, "rename", "rn"));
}
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/parent/ReloadCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/ReloadCommand.java
similarity index 96%
rename from src/main/java/cc/carm/plugin/moeteleport/command/parent/ReloadCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/ReloadCommand.java
index e86c9bb..6094573 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/parent/ReloadCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/ReloadCommand.java
@@ -1,4 +1,4 @@
-package cc.carm.plugin.moeteleport.command.parent;
+package cc.carm.plugin.moeteleport.command.sub;
import cc.carm.lib.easyplugin.command.SubCommand;
import cc.carm.plugin.moeteleport.Main;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/parent/TeleportCommands.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/TeleportCommands.java
similarity index 83%
rename from src/main/java/cc/carm/plugin/moeteleport/command/parent/TeleportCommands.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/TeleportCommands.java
index 0cdac94..45bbbda 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/parent/TeleportCommands.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/TeleportCommands.java
@@ -1,10 +1,10 @@
-package cc.carm.plugin.moeteleport.command.parent;
+package cc.carm.plugin.moeteleport.command.sub;
import cc.carm.lib.easyplugin.command.CommandHandler;
import cc.carm.plugin.moeteleport.command.MainCommands;
-import cc.carm.plugin.moeteleport.command.teleport.TeleportCancelCommand;
-import cc.carm.plugin.moeteleport.command.teleport.TeleportHandleCommand;
-import cc.carm.plugin.moeteleport.command.teleport.TeleportRequestCommand;
+import cc.carm.plugin.moeteleport.command.sub.teleport.TeleportCancelCommand;
+import cc.carm.plugin.moeteleport.command.sub.teleport.TeleportHandleCommand;
+import cc.carm.plugin.moeteleport.command.sub.teleport.TeleportRequestCommand;
import cc.carm.plugin.moeteleport.conf.PluginMessages;
import cc.carm.plugin.moeteleport.teleport.TeleportRequest;
import org.bukkit.command.CommandSender;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/parent/WarpCommands.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/WarpCommands.java
similarity index 90%
rename from src/main/java/cc/carm/plugin/moeteleport/command/parent/WarpCommands.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/WarpCommands.java
index 30f773b..1e31806 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/parent/WarpCommands.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/WarpCommands.java
@@ -1,8 +1,8 @@
-package cc.carm.plugin.moeteleport.command.parent;
+package cc.carm.plugin.moeteleport.command.sub;
import cc.carm.lib.easyplugin.command.CommandHandler;
import cc.carm.plugin.moeteleport.command.MainCommands;
-import cc.carm.plugin.moeteleport.command.warp.*;
+import cc.carm.plugin.moeteleport.command.sub.warp.*;
import cc.carm.plugin.moeteleport.conf.PluginConfig;
import cc.carm.plugin.moeteleport.conf.PluginMessages;
import org.bukkit.command.Command;
@@ -24,6 +24,7 @@ public class WarpCommands extends CommandHandler {
registerSubCommand(new WarpInfoCommand(this, "info", "i"));
registerSubCommand(new WarpCreateCommand(this, "set", "create"));
registerSubCommand(new WarpDeleteCommand(this, "delete", "remove", "del"));
+ registerSubCommand(new WarpRenameCommand(this, "rename", "rn"));
}
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/home/HomeCreateCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/home/HomeCreateCommand.java
similarity index 92%
rename from src/main/java/cc/carm/plugin/moeteleport/command/home/HomeCreateCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/home/HomeCreateCommand.java
index 9c115c7..930afc1 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/home/HomeCreateCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/home/HomeCreateCommand.java
@@ -1,9 +1,9 @@
-package cc.carm.plugin.moeteleport.command.home;
+package cc.carm.plugin.moeteleport.command.sub.home;
import cc.carm.lib.easyplugin.command.SimpleCompleter;
import cc.carm.plugin.moeteleport.MoeTeleport;
-import cc.carm.plugin.moeteleport.command.parent.HomeCommands;
-import cc.carm.plugin.moeteleport.command.sub.HomeSubCommand;
+import cc.carm.plugin.moeteleport.command.sub.HomeCommands;
+import cc.carm.plugin.moeteleport.command.base.HomeSubCommand;
import cc.carm.plugin.moeteleport.conf.PluginMessages;
import cc.carm.plugin.moeteleport.conf.location.DataLocation;
import cc.carm.plugin.moeteleport.storage.UserData;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/home/HomeDeleteCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/home/HomeDeleteCommand.java
similarity index 90%
rename from src/main/java/cc/carm/plugin/moeteleport/command/home/HomeDeleteCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/home/HomeDeleteCommand.java
index 4e8ec18..0ad4814 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/home/HomeDeleteCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/home/HomeDeleteCommand.java
@@ -1,7 +1,7 @@
-package cc.carm.plugin.moeteleport.command.home;
+package cc.carm.plugin.moeteleport.command.sub.home;
-import cc.carm.plugin.moeteleport.command.parent.HomeCommands;
-import cc.carm.plugin.moeteleport.command.sub.HomeSubCommand;
+import cc.carm.plugin.moeteleport.command.sub.HomeCommands;
+import cc.carm.plugin.moeteleport.command.base.HomeSubCommand;
import cc.carm.plugin.moeteleport.conf.PluginMessages;
import cc.carm.plugin.moeteleport.conf.location.DataLocation;
import cc.carm.plugin.moeteleport.storage.UserData;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/home/HomeListCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/home/HomeListCommand.java
similarity index 86%
rename from src/main/java/cc/carm/plugin/moeteleport/command/home/HomeListCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/home/HomeListCommand.java
index 72d0052..ee3ea20 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/home/HomeListCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/home/HomeListCommand.java
@@ -1,7 +1,7 @@
-package cc.carm.plugin.moeteleport.command.home;
+package cc.carm.plugin.moeteleport.command.sub.home;
-import cc.carm.plugin.moeteleport.command.parent.HomeCommands;
-import cc.carm.plugin.moeteleport.command.sub.HomeSubCommand;
+import cc.carm.plugin.moeteleport.command.sub.HomeCommands;
+import cc.carm.plugin.moeteleport.command.base.HomeSubCommand;
import cc.carm.plugin.moeteleport.conf.PluginMessages;
import cc.carm.plugin.moeteleport.storage.UserData;
import org.bukkit.command.CommandSender;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/sub/home/HomeRenameCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/home/HomeRenameCommand.java
new file mode 100644
index 0000000..9807505
--- /dev/null
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/home/HomeRenameCommand.java
@@ -0,0 +1,71 @@
+package cc.carm.plugin.moeteleport.command.sub.home;
+
+import cc.carm.plugin.moeteleport.command.sub.HomeCommands;
+import cc.carm.plugin.moeteleport.command.base.HomeSubCommand;
+import cc.carm.plugin.moeteleport.conf.PluginMessages;
+import cc.carm.plugin.moeteleport.conf.location.DataLocation;
+import cc.carm.plugin.moeteleport.storage.UserData;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.bukkit.plugin.java.JavaPlugin;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+public class HomeRenameCommand extends HomeSubCommand {
+
+ public HomeRenameCommand(@NotNull HomeCommands parent, String name, String... aliases) {
+ super(parent, name, aliases);
+ }
+
+ @Override
+ public Void execute(JavaPlugin plugin, CommandSender sender, String[] args) throws Exception {
+ if (!(sender instanceof Player)) {
+ PluginMessages.NOT_PLAYER.send(sender);
+ return null;
+ }
+
+ if (args.length < 2) return getParent().noArgs(sender);
+
+ String homeName = args[0];
+ String newName = args[1];
+
+ if (homeName.equals(newName)) return getParent().noArgs(sender);
+ if (newName.length() > 32) { // 超过家的名字长度限定
+ PluginMessages.HOME.NAME_TOO_LONG.send(sender);
+ return null;
+ }
+
+ Player player = (Player) sender;
+ UserData data = getData(player);
+
+ Map.Entry locationInfo = data.getHomeLocation(homeName);
+ if (locationInfo == null) {
+ PluginMessages.HOME.NOT_FOUND.send(player);
+ return null;
+ }
+
+ Map.Entry newInfo = data.getHomeLocation(newName);
+ if (newInfo != null) {
+ PluginMessages.HOME.ALREADY_EXITS.send(player);
+ return null;
+ }
+
+ PluginMessages.HOME.RENAMED.send(player, newName, locationInfo.getKey());
+
+ data.setHomeLocation(newName, locationInfo.getValue().getBukkitLocation());
+ data.delHomeLocation(homeName);
+
+ return null;
+ }
+
+ @Override
+ public List tabComplete(JavaPlugin plugin, CommandSender sender, String[] args) {
+ if (args.length == 1) {
+ return listHomes(sender, args[args.length - 1]);
+ } else return Collections.emptyList();
+ }
+
+}
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/home/HomeTeleportCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/home/HomeTeleportCommand.java
similarity index 90%
rename from src/main/java/cc/carm/plugin/moeteleport/command/home/HomeTeleportCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/home/HomeTeleportCommand.java
index f82413d..045166f 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/home/HomeTeleportCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/home/HomeTeleportCommand.java
@@ -1,8 +1,8 @@
-package cc.carm.plugin.moeteleport.command.home;
+package cc.carm.plugin.moeteleport.command.sub.home;
import cc.carm.plugin.moeteleport.MoeTeleport;
-import cc.carm.plugin.moeteleport.command.parent.HomeCommands;
-import cc.carm.plugin.moeteleport.command.sub.HomeSubCommand;
+import cc.carm.plugin.moeteleport.command.sub.HomeCommands;
+import cc.carm.plugin.moeteleport.command.base.HomeSubCommand;
import cc.carm.plugin.moeteleport.conf.PluginMessages;
import cc.carm.plugin.moeteleport.conf.location.DataLocation;
import cc.carm.plugin.moeteleport.storage.UserData;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/teleport/TeleportCancelCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/teleport/TeleportCancelCommand.java
similarity index 88%
rename from src/main/java/cc/carm/plugin/moeteleport/command/teleport/TeleportCancelCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/teleport/TeleportCancelCommand.java
index 1606638..eaa8342 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/teleport/TeleportCancelCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/teleport/TeleportCancelCommand.java
@@ -1,8 +1,8 @@
-package cc.carm.plugin.moeteleport.command.teleport;
+package cc.carm.plugin.moeteleport.command.sub.teleport;
import cc.carm.plugin.moeteleport.MoeTeleport;
-import cc.carm.plugin.moeteleport.command.parent.TeleportCommands;
-import cc.carm.plugin.moeteleport.command.sub.TeleportSubCommand;
+import cc.carm.plugin.moeteleport.command.sub.TeleportCommands;
+import cc.carm.plugin.moeteleport.command.base.TeleportSubCommand;
import cc.carm.plugin.moeteleport.conf.PluginMessages;
import cc.carm.plugin.moeteleport.teleport.TeleportRequest;
import org.bukkit.command.CommandSender;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/teleport/TeleportHandleCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/teleport/TeleportHandleCommand.java
similarity index 94%
rename from src/main/java/cc/carm/plugin/moeteleport/command/teleport/TeleportHandleCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/teleport/TeleportHandleCommand.java
index 6b2c2c2..b6069d4 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/teleport/TeleportHandleCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/teleport/TeleportHandleCommand.java
@@ -1,8 +1,8 @@
-package cc.carm.plugin.moeteleport.command.teleport;
+package cc.carm.plugin.moeteleport.command.sub.teleport;
import cc.carm.plugin.moeteleport.MoeTeleport;
-import cc.carm.plugin.moeteleport.command.parent.TeleportCommands;
-import cc.carm.plugin.moeteleport.command.sub.TeleportSubCommand;
+import cc.carm.plugin.moeteleport.command.sub.TeleportCommands;
+import cc.carm.plugin.moeteleport.command.base.TeleportSubCommand;
import cc.carm.plugin.moeteleport.conf.PluginMessages;
import cc.carm.plugin.moeteleport.storage.UserData;
import cc.carm.plugin.moeteleport.teleport.TeleportRequest;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/teleport/TeleportRandomCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/teleport/TeleportRandomCommand.java
similarity index 71%
rename from src/main/java/cc/carm/plugin/moeteleport/command/teleport/TeleportRandomCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/teleport/TeleportRandomCommand.java
index 70241cf..526a600 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/teleport/TeleportRandomCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/teleport/TeleportRandomCommand.java
@@ -1,7 +1,7 @@
-package cc.carm.plugin.moeteleport.command.teleport;
+package cc.carm.plugin.moeteleport.command.sub.teleport;
-import cc.carm.plugin.moeteleport.command.parent.TeleportCommands;
-import cc.carm.plugin.moeteleport.command.sub.TeleportSubCommand;
+import cc.carm.plugin.moeteleport.command.sub.TeleportCommands;
+import cc.carm.plugin.moeteleport.command.base.TeleportSubCommand;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/teleport/TeleportRequestCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/teleport/TeleportRequestCommand.java
similarity index 92%
rename from src/main/java/cc/carm/plugin/moeteleport/command/teleport/TeleportRequestCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/teleport/TeleportRequestCommand.java
index 53942e7..580e959 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/teleport/TeleportRequestCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/teleport/TeleportRequestCommand.java
@@ -1,9 +1,9 @@
-package cc.carm.plugin.moeteleport.command.teleport;
+package cc.carm.plugin.moeteleport.command.sub.teleport;
import cc.carm.lib.easyplugin.command.SimpleCompleter;
import cc.carm.plugin.moeteleport.MoeTeleport;
-import cc.carm.plugin.moeteleport.command.parent.TeleportCommands;
-import cc.carm.plugin.moeteleport.command.sub.TeleportSubCommand;
+import cc.carm.plugin.moeteleport.command.sub.TeleportCommands;
+import cc.carm.plugin.moeteleport.command.base.TeleportSubCommand;
import cc.carm.plugin.moeteleport.conf.PluginMessages;
import cc.carm.plugin.moeteleport.teleport.TeleportRequest;
import org.bukkit.Bukkit;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/warp/WarpCreateCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpCreateCommand.java
similarity index 93%
rename from src/main/java/cc/carm/plugin/moeteleport/command/warp/WarpCreateCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpCreateCommand.java
index ee7abaf..1274641 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/warp/WarpCreateCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpCreateCommand.java
@@ -1,9 +1,9 @@
-package cc.carm.plugin.moeteleport.command.warp;
+package cc.carm.plugin.moeteleport.command.sub.warp;
import cc.carm.lib.easyplugin.command.SimpleCompleter;
import cc.carm.plugin.moeteleport.MoeTeleport;
-import cc.carm.plugin.moeteleport.command.parent.WarpCommands;
-import cc.carm.plugin.moeteleport.command.sub.WarpSubCommand;
+import cc.carm.plugin.moeteleport.command.sub.WarpCommands;
+import cc.carm.plugin.moeteleport.command.base.WarpSubCommand;
import cc.carm.plugin.moeteleport.conf.PluginMessages;
import cc.carm.plugin.moeteleport.model.WarpInfo;
import org.bukkit.command.CommandSender;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/warp/WarpDeleteCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpDeleteCommand.java
similarity index 90%
rename from src/main/java/cc/carm/plugin/moeteleport/command/warp/WarpDeleteCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpDeleteCommand.java
index 071737b..bc7a6df 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/warp/WarpDeleteCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpDeleteCommand.java
@@ -1,7 +1,7 @@
-package cc.carm.plugin.moeteleport.command.warp;
+package cc.carm.plugin.moeteleport.command.sub.warp;
-import cc.carm.plugin.moeteleport.command.parent.WarpCommands;
-import cc.carm.plugin.moeteleport.command.sub.WarpSubCommand;
+import cc.carm.plugin.moeteleport.command.sub.WarpCommands;
+import cc.carm.plugin.moeteleport.command.base.WarpSubCommand;
import cc.carm.plugin.moeteleport.conf.PluginMessages;
import cc.carm.plugin.moeteleport.model.WarpInfo;
import org.bukkit.command.CommandSender;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/warp/WarpInfoCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpInfoCommand.java
similarity index 88%
rename from src/main/java/cc/carm/plugin/moeteleport/command/warp/WarpInfoCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpInfoCommand.java
index e50ceb1..112c255 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/warp/WarpInfoCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpInfoCommand.java
@@ -1,7 +1,7 @@
-package cc.carm.plugin.moeteleport.command.warp;
+package cc.carm.plugin.moeteleport.command.sub.warp;
-import cc.carm.plugin.moeteleport.command.parent.WarpCommands;
-import cc.carm.plugin.moeteleport.command.sub.WarpSubCommand;
+import cc.carm.plugin.moeteleport.command.sub.WarpCommands;
+import cc.carm.plugin.moeteleport.command.base.WarpSubCommand;
import cc.carm.plugin.moeteleport.conf.PluginMessages;
import cc.carm.plugin.moeteleport.model.WarpInfo;
import org.bukkit.command.CommandSender;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/warp/WarpListCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpListCommand.java
similarity index 92%
rename from src/main/java/cc/carm/plugin/moeteleport/command/warp/WarpListCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpListCommand.java
index 3eec5b5..a91a0ee 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/warp/WarpListCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpListCommand.java
@@ -1,8 +1,8 @@
-package cc.carm.plugin.moeteleport.command.warp;
+package cc.carm.plugin.moeteleport.command.sub.warp;
import cc.carm.lib.easyplugin.command.SimpleCompleter;
-import cc.carm.plugin.moeteleport.command.parent.WarpCommands;
-import cc.carm.plugin.moeteleport.command.sub.WarpSubCommand;
+import cc.carm.plugin.moeteleport.command.sub.WarpCommands;
+import cc.carm.plugin.moeteleport.command.base.WarpSubCommand;
import cc.carm.plugin.moeteleport.conf.PluginMessages;
import cc.carm.plugin.moeteleport.model.WarpInfo;
import org.bukkit.command.CommandSender;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpRenameCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpRenameCommand.java
new file mode 100644
index 0000000..632f9ff
--- /dev/null
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpRenameCommand.java
@@ -0,0 +1,71 @@
+package cc.carm.plugin.moeteleport.command.sub.warp;
+
+import cc.carm.plugin.moeteleport.Main;
+import cc.carm.plugin.moeteleport.command.sub.WarpCommands;
+import cc.carm.plugin.moeteleport.command.base.WarpSubCommand;
+import cc.carm.plugin.moeteleport.conf.PluginMessages;
+import cc.carm.plugin.moeteleport.model.WarpInfo;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.bukkit.plugin.java.JavaPlugin;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.Collections;
+import java.util.List;
+
+public class WarpRenameCommand extends WarpSubCommand {
+
+ public WarpRenameCommand(@NotNull WarpCommands parent, String name, String... aliases) {
+ super(parent, name, aliases);
+ }
+
+ @Override
+ public Void execute(JavaPlugin plugin, CommandSender sender, String[] args) throws Exception {
+ if (!(sender instanceof Player)) {
+ PluginMessages.NOT_PLAYER.send(sender);
+ return null;
+ }
+
+ if (args.length < 2) return getParent().noArgs(sender);
+
+ String oldName = args[0];
+ String newName = args[1];
+
+ if (oldName.equals(newName)) return getParent().noArgs(sender);
+ if (newName.length() > 16) { // 超过地标的名字长度限定
+ PluginMessages.WARP.NAME_TOO_LONG.send(sender);
+ return null;
+ }
+
+ Player player = (Player) sender;
+
+
+ WarpInfo info = getWarp(oldName);
+ if (info == null) {
+ PluginMessages.WARP.NOT_FOUND.send(player);
+ return null;
+ }
+
+ WarpInfo newInfo = getWarp(oldName);
+ if (newInfo != null) {
+ PluginMessages.WARP.ALREADY_EXITS.send(player);
+ return null;
+ }
+
+ PluginMessages.WARP.RENAMED.send(player, newName, info.getLocation());
+ Main.getInstance().getScheduler().runAsync(() -> {
+ getManager().setWarp(newName, player.getUniqueId(), info.getLocation());
+ getManager().delWarp(oldName);
+ });
+
+ return null;
+ }
+
+ @Override
+ public List tabComplete(JavaPlugin plugin, CommandSender sender, String[] args) {
+ if (args.length == 1) {
+ return listWarpNames(sender, args[args.length - 1], true);
+ } else return Collections.emptyList();
+ }
+
+}
diff --git a/src/main/java/cc/carm/plugin/moeteleport/command/warp/WarpTeleportCommand.java b/src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpTeleportCommand.java
similarity index 86%
rename from src/main/java/cc/carm/plugin/moeteleport/command/warp/WarpTeleportCommand.java
rename to src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpTeleportCommand.java
index 47ae4b5..8dbcfe9 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/command/warp/WarpTeleportCommand.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/command/sub/warp/WarpTeleportCommand.java
@@ -1,10 +1,9 @@
-package cc.carm.plugin.moeteleport.command.warp;
+package cc.carm.plugin.moeteleport.command.sub.warp;
import cc.carm.plugin.moeteleport.MoeTeleport;
-import cc.carm.plugin.moeteleport.command.parent.WarpCommands;
-import cc.carm.plugin.moeteleport.command.sub.WarpSubCommand;
+import cc.carm.plugin.moeteleport.command.sub.WarpCommands;
+import cc.carm.plugin.moeteleport.command.base.WarpSubCommand;
import cc.carm.plugin.moeteleport.conf.PluginMessages;
-import cc.carm.plugin.moeteleport.manager.TeleportManager;
import cc.carm.plugin.moeteleport.model.WarpInfo;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
diff --git a/src/main/java/cc/carm/plugin/moeteleport/conf/PluginConfig.java b/src/main/java/cc/carm/plugin/moeteleport/conf/PluginConfig.java
index 15dcfe2..3f883e9 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/conf/PluginConfig.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/conf/PluginConfig.java
@@ -54,6 +54,7 @@ public class PluginConfig extends ConfigurationRoot {
map.put("delHome", "home delete");
map.put("listHomes", "home list");
map.put("listHome", "home list");
+ map.put("renameHome", "home rename");
map.put("warp", "warp to");
map.put("setWarp", "warp set");
@@ -61,6 +62,7 @@ public class PluginConfig extends ConfigurationRoot {
map.put("warpInfo", "warp info");
map.put("listWarps", "warp list");
map.put("listWarp", "warp list");
+ map.put("renameWarp", "warp rename");
}).build();
}
diff --git a/src/main/java/cc/carm/plugin/moeteleport/conf/PluginMessages.java b/src/main/java/cc/carm/plugin/moeteleport/conf/PluginMessages.java
index c3f7446..c5d3077 100644
--- a/src/main/java/cc/carm/plugin/moeteleport/conf/PluginMessages.java
+++ b/src/main/java/cc/carm/plugin/moeteleport/conf/PluginMessages.java
@@ -1,6 +1,7 @@
package cc.carm.plugin.moeteleport.conf;
import cc.carm.lib.configuration.core.ConfigurationRoot;
+import cc.carm.lib.configuration.core.annotation.HeaderComment;
import cc.carm.lib.easyplugin.utils.ColorParser;
import cc.carm.lib.mineconfiguration.bukkit.builder.message.CraftMessageListBuilder;
import cc.carm.lib.mineconfiguration.bukkit.builder.message.CraftMessageValueBuilder;
@@ -17,6 +18,13 @@ import org.jetbrains.annotations.NotNull;
import java.util.function.BiFunction;
+
+@HeaderComment({
+ "MoeTeleport 传送插件的消息配置文件",
+ "如特定的消息不需要任何提示,可直接留下单行空内容消息。",
+ "支持 支持 &+颜色代码(原版颜色)、§(#XXXXXX)(RGB颜色) 与 &<#XXXXXX>(前后标注RGB颜色渐变)。",
+ " "
+})
public class PluginMessages extends ConfigurationRoot {
public static @NotNull CraftMessageListBuilder list() {
@@ -95,7 +103,9 @@ public class PluginMessages extends ConfigurationRoot {
"&8-&7&o 若地标点已存在,且您是地标点的设立者,",
"&8-&7&o 则会覆盖原有的地标点位置。",
"&8#&f warp delete &d[地标名]",
- "&8-&7 删除一个自己设立的地标点。"
+ "&8-&7 删除一个自己设立的地标点。",
+ "&8#&f warp rename &d<原地标名> &d<新地标名>",
+ "&8-&7 重命名一个自己设立的地标点。"
).build();
public static final ConfiguredMessageList HOMES = list().defaults(
@@ -110,7 +120,9 @@ public class PluginMessages extends ConfigurationRoot {
"&8-&7 设定一个家的位置。",
"&8-&7&o 若不填写家的名称则默认为“home”",
"&8#&f home delete &d[家名]",
- "&8-&7 删除一个家的位置。"
+ "&8-&7 删除一个家的位置。",
+ "&8#&f home rename &d<原家名> &d<新家名>",
+ "&8-&7 重命名一个家传送点的名称。"
).build();
}
@@ -257,6 +269,11 @@ public class PluginMessages extends ConfigurationRoot {
"&7或输入 &5/setHome <家名称> &7覆盖之前的家传送点。"
).params("max").build();
+ public static final ConfiguredMessageList ALREADY_EXITS = list()
+ .defaults("&f您已存在名为 &d%(name) &f的家传送点,换个名字叭~")
+ .params("name")
+ .build();
+
public static final ConfiguredMessageList NOT_FOUND = list()
.defaults("&f您还没有设置这个家,请先输入 &5/setHome <家名称> &f设置一个吧!")
.build();
@@ -275,6 +292,10 @@ public class PluginMessages extends ConfigurationRoot {
"&8原先位置为 &5%(location) &8。"
).params("name", "location").build();
+ public static final ConfiguredMessageList RENAMED = list().defaults(
+ "&f成功以 &d%(newName) 重命名原先的家传送点 &d&o%(oldName) &f。"
+ ).params("newName", "oldName").build();
+
public static class LIST extends ConfigurationRoot {
public static final ConfiguredMessageList HEADER = list().defaults(
@@ -336,6 +357,14 @@ public class PluginMessages extends ConfigurationRoot {
"&8原先位置为 &5%(location) &8。"
).params("name", "location").build();
+ public static final ConfiguredMessageList ALREADY_EXITS = list()
+ .defaults("&f已存在名为 &d%(name) &f的地标点,换个名字叭~")
+ .params("name")
+ .build();
+
+ public static final ConfiguredMessageList RENAMED = list().defaults(
+ "&f成功以 &d%(newName) 重命名原先的地标点 &d&o%(oldName) &f。"
+ ).params("newName", "oldName").build();
public static class LIST extends ConfigurationRoot {