diff --git a/pom.xml b/pom.xml
index b3378a9..c86bc46 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
cn.lunadeer
Dominion
- 1.26.7-beta
+ 1.27.0-beta
jar
Dominion
diff --git a/src/main/java/cn/lunadeer/dominion/Commands.java b/src/main/java/cn/lunadeer/dominion/Commands.java
index 108033d..38abffb 100644
--- a/src/main/java/cn/lunadeer/dominion/Commands.java
+++ b/src/main/java/cn/lunadeer/dominion/Commands.java
@@ -149,6 +149,19 @@ public class Commands implements TabExecutor {
case "set_config":
SetConfig.handler(sender, args);
break;
+ // ---=== CUI ===---
+ case "cui_rename":
+ OpenCUI.RenameDominion(sender, args);
+ break;
+ case "cui_edit_join_message":
+ OpenCUI.EditJoinMessage(sender, args);
+ break;
+ case "cui_edit_leave_message":
+ OpenCUI.EditLeaveMessage(sender, args);
+ break;
+ case "cui_create":
+ OpenCUI.CreateDominion(sender, args);
+ break;
default:
return false;
}
diff --git a/src/main/java/cn/lunadeer/dominion/Dominion.java b/src/main/java/cn/lunadeer/dominion/Dominion.java
index b56bd57..93bfde1 100644
--- a/src/main/java/cn/lunadeer/dominion/Dominion.java
+++ b/src/main/java/cn/lunadeer/dominion/Dominion.java
@@ -6,6 +6,7 @@ import cn.lunadeer.dominion.events.SelectPointEvents;
import cn.lunadeer.dominion.managers.ConfigManager;
import cn.lunadeer.dominion.managers.DatabaseTables;
import cn.lunadeer.minecraftpluginutils.*;
+import cn.lunadeer.minecraftpluginutils.scui.CuiManager;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.plugin.java.JavaPlugin;
@@ -58,6 +59,10 @@ public final class Dominion extends JavaPlugin {
"Dominion");
}
+ // SCUI 初始化
+ Bukkit.getPluginManager().registerEvents(new CuiManager(this), this);
+ CuiManager.instance.setDebug(config.isDebug());
+
logger.info("领地插件已启动");
logger.info("版本:" + this.getPluginMeta().getVersion());
// http://patorjk.com/software/taag/#p=display&f=Big&t=Dominion
diff --git a/src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java b/src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java
new file mode 100644
index 0000000..bad3ba5
--- /dev/null
+++ b/src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java
@@ -0,0 +1,135 @@
+package cn.lunadeer.dominion.commands;
+
+import cn.lunadeer.dominion.Dominion;
+import cn.lunadeer.dominion.controllers.DominionController;
+import cn.lunadeer.dominion.dtos.DominionDTO;
+import cn.lunadeer.dominion.tuis.DominionManage;
+import cn.lunadeer.minecraftpluginutils.scui.CuiTextInput;
+import org.bukkit.Location;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import java.util.Map;
+
+import static cn.lunadeer.dominion.commands.Apis.autoPoints;
+import static cn.lunadeer.dominion.commands.Apis.playerOnly;
+
+public class OpenCUI {
+ private static class renameDominionCB implements CuiTextInput.InputCallback {
+ private final Player sender;
+ private final String oldName;
+
+ public renameDominionCB(Player sender, String oldName) {
+ this.sender = sender;
+ this.oldName = oldName;
+ }
+
+ @Override
+ public void handleData(String input) {
+ Dominion.logger.debug("renameDominionCB.run: %s", input);
+ DominionController.rename(sender, oldName, input);
+ DominionManage.show(sender, new String[]{"manage", input});
+ }
+ }
+
+ private static class editJoinMessageCB implements CuiTextInput.InputCallback {
+ private final Player sender;
+ private final String dominionName;
+
+ public editJoinMessageCB(Player sender, String dominionName) {
+ this.sender = sender;
+ this.dominionName = dominionName;
+ }
+
+ @Override
+ public void handleData(String input) {
+ Dominion.logger.debug("editJoinMessageCB.run: %s", input);
+ DominionController.setJoinMessage(sender, input, dominionName);
+ DominionManage.show(sender, new String[]{"manage", dominionName});
+ }
+ }
+
+ private static class editLeaveMessageCB implements CuiTextInput.InputCallback {
+ private final Player sender;
+ private final String dominionName;
+
+ public editLeaveMessageCB(Player sender, String dominionName) {
+ this.sender = sender;
+ this.dominionName = dominionName;
+ }
+
+ @Override
+ public void handleData(String input) {
+ Dominion.logger.debug("editLeaveMessageCB.run: %s", input);
+ DominionController.setLeaveMessage(sender, input, dominionName);
+ DominionManage.show(sender, new String[]{"manage", dominionName});
+ }
+ }
+
+ private static class createDominionCB implements CuiTextInput.InputCallback {
+ private final Player sender;
+
+ public createDominionCB(Player sender) {
+ this.sender = sender;
+ }
+
+ @Override
+ public void handleData(String input) {
+ Dominion.logger.debug("createDominionCB.run: %s", input);
+ autoPoints(sender);
+ Map points = Dominion.pointsSelect.get(sender.getUniqueId());
+ if (points == null || points.get(0) == null || points.get(1) == null) {
+ Dominion.notification.error(sender, "自动选点失败");
+ return;
+ }
+ if (DominionController.create(sender, input, points.get(0), points.get(1)) != null) {
+ Dominion.notification.info(sender, "成功创建: %s", input);
+ DominionManage.show(sender, new String[]{"list"});
+ } else {
+ Dominion.notification.error(sender, "创建领地失败");
+ }
+ }
+ }
+
+ public static void RenameDominion(CommandSender sender, String[] args) {
+ Player player = playerOnly(sender);
+ if (player == null) return;
+ CuiTextInput.InputCallback renameDominionCB = new renameDominionCB(player, args[1]);
+ CuiTextInput view = CuiTextInput.create(renameDominionCB).setText(args[1]).title("领地重命名");
+ view.open(player);
+ }
+
+ public static void EditJoinMessage(CommandSender sender, String[] args) {
+ Player player = playerOnly(sender);
+ if (player == null) return;
+ DominionDTO dominion = DominionDTO.select(args[1]);
+ if (dominion == null) {
+ Dominion.notification.error(sender, "领地不存在");
+ return;
+ }
+ CuiTextInput.InputCallback editJoinMessageCB = new editJoinMessageCB(player, dominion.getName());
+ CuiTextInput view = CuiTextInput.create(editJoinMessageCB).setText(dominion.getJoinMessage()).title("编辑欢迎提示语");
+ view.open(player);
+ }
+
+ public static void EditLeaveMessage(CommandSender sender, String[] args) {
+ Player player = playerOnly(sender);
+ if (player == null) return;
+ DominionDTO dominion = DominionDTO.select(args[1]);
+ if (dominion == null) {
+ Dominion.notification.error(sender, "领地不存在");
+ return;
+ }
+ CuiTextInput.InputCallback editLeaveMessageCB = new editLeaveMessageCB(player, dominion.getName());
+ CuiTextInput view = CuiTextInput.create(editLeaveMessageCB).setText(dominion.getLeaveMessage()).title("编辑离开提示语");
+ view.open(player);
+ }
+
+ public static void CreateDominion(CommandSender sender, String[] args) {
+ Player player = playerOnly(sender);
+ if (player == null) return;
+ CuiTextInput.InputCallback createDominionCB = new createDominionCB(player);
+ CuiTextInput view = CuiTextInput.create(createDominionCB).setText("未命名领地").title("输入要创建的领地名称");
+ view.open(player);
+ }
+}
diff --git a/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java b/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java
index 4ffe326..873c44f 100644
--- a/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java
+++ b/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java
@@ -527,6 +527,10 @@ public class DominionController {
Dominion.notification.error(operator, "领地名称不能包含空格");
return;
}
+ if (Objects.equals(old_name, new_name)) {
+ Dominion.notification.error(operator, "新名称与旧名称相同");
+ return;
+ }
DominionDTO dominion = getExistDomAndIsOwner(operator, old_name);
if (dominion == null) {
return;
diff --git a/src/main/java/cn/lunadeer/dominion/tuis/DominionManage.java b/src/main/java/cn/lunadeer/dominion/tuis/DominionManage.java
index 90d1c3d..a04ab52 100644
--- a/src/main/java/cn/lunadeer/dominion/tuis/DominionManage.java
+++ b/src/main/java/cn/lunadeer/dominion/tuis/DominionManage.java
@@ -34,6 +34,15 @@ public class DominionManage {
Line set_tp = Line.create()
.append(Button.create("设置传送点").setExecuteCommand("/dominion set_tp_location " + dominion.getName()).build())
.append("设置当前位置为此领地传送点");
+ Line rename = Line.create()
+ .append(Button.create("重命名").setExecuteCommand("/dominion cui_rename " + dominion.getName()).build())
+ .append("重命名领地");
+ Line join_msg = Line.create()
+ .append(Button.create("编辑欢迎提示语").setExecuteCommand("/dominion cui_edit_join_message " + dominion.getName()).build())
+ .append("当玩家进入领地时显示的消息");
+ Line leave_msg = Line.create()
+ .append(Button.create("编辑离开提示语").setExecuteCommand("/dominion cui_edit_leave_message " + dominion.getName()).build())
+ .append("当玩家离开领地时显示的消息");
ListView view = ListView.create(10, "/dominion manage " + dominion.getName());
view.title("领地 " + dominion.getName() + " 管理界面")
.navigator(Line.create()
@@ -44,6 +53,9 @@ public class DominionManage {
.add(flag_info)
.add(privilege_list)
.add(set_tp)
+ .add(rename)
+ .add(join_msg)
+ .add(leave_msg)
.showOn(player, 1);
}
}
diff --git a/src/main/java/cn/lunadeer/dominion/tuis/Menu.java b/src/main/java/cn/lunadeer/dominion/tuis/Menu.java
index e00ba5e..002a5fb 100644
--- a/src/main/java/cn/lunadeer/dominion/tuis/Menu.java
+++ b/src/main/java/cn/lunadeer/dominion/tuis/Menu.java
@@ -12,6 +12,9 @@ public class Menu {
public static void show(CommandSender sender, String[] args) {
Player player = playerOnly(sender);
if (player == null) return;
+ Line create = Line.create()
+ .append(Button.create("创建领地").setExecuteCommand("/dominion cui_create").build())
+ .append("以你为中心自动创建一个新的领地");
Line list = Line.create()
.append(Button.create("我的领地").setExecuteCommand("/dominion list").build())
.append("查看我的领地");
@@ -33,6 +36,7 @@ public class Menu {
ListView view = ListView.create(10, "/dominion");
view.title("Dominion 领地系统")
.navigator(Line.create().append("主菜单"))
+ .add(create)
.add(list)
.add(help)
.add(link);