From 6a3188e696ed6e651f5a9438af2d6fe0344c95ec Mon Sep 17 00:00:00 2001 From: zhangyuheng Date: Sat, 25 May 2024 20:43:18 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=B5=8B=E8=AF=95cui=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../java/cn/lunadeer/dominion/Commands.java | 4 +++ .../java/cn/lunadeer/dominion/Dominion.java | 5 +++ .../lunadeer/dominion/commands/OpenCUI.java | 36 +++++++++++++++++++ .../dominion/tuis/DominionManage.java | 4 +++ 5 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java diff --git a/pom.xml b/pom.xml index c392461..c86bc46 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ cn.lunadeer Dominion - 1.26.3-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..b01cbad 100644 --- a/src/main/java/cn/lunadeer/dominion/Commands.java +++ b/src/main/java/cn/lunadeer/dominion/Commands.java @@ -149,6 +149,10 @@ public class Commands implements TabExecutor { case "set_config": SetConfig.handler(sender, args); break; + // ---=== CUI ===--- + case "cui_rename": + OpenCUI.RenameDominion(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..acd080b --- /dev/null +++ b/src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java @@ -0,0 +1,36 @@ +package cn.lunadeer.dominion.commands; + +import cn.lunadeer.dominion.Dominion; +import cn.lunadeer.dominion.controllers.DominionController; +import cn.lunadeer.minecraftpluginutils.scui.CuiTextInput; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +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 run(String input) { + Dominion.logger.debug("renameDominionCB.run: %s", input); + DominionController.rename(sender, oldName, input); + } + } + + 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); + } +} diff --git a/src/main/java/cn/lunadeer/dominion/tuis/DominionManage.java b/src/main/java/cn/lunadeer/dominion/tuis/DominionManage.java index 90d1c3d..c250fa8 100644 --- a/src/main/java/cn/lunadeer/dominion/tuis/DominionManage.java +++ b/src/main/java/cn/lunadeer/dominion/tuis/DominionManage.java @@ -34,6 +34,9 @@ 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("重命名领地"); ListView view = ListView.create(10, "/dominion manage " + dominion.getName()); view.title("领地 " + dominion.getName() + " 管理界面") .navigator(Line.create() @@ -44,6 +47,7 @@ public class DominionManage { .add(flag_info) .add(privilege_list) .add(set_tp) + .add(rename) .showOn(player, 1); } } From a0bfb00f4ae27bc7a7e43189d1df2fd5b97e73a4 Mon Sep 17 00:00:00 2001 From: zhangyuheng Date: Sat, 25 May 2024 21:59:55 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=B5=8B=E8=AF=95cui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java b/src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java index acd080b..4d482c2 100644 --- a/src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java +++ b/src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java @@ -2,6 +2,7 @@ package cn.lunadeer.dominion.commands; import cn.lunadeer.dominion.Dominion; import cn.lunadeer.dominion.controllers.DominionController; +import cn.lunadeer.dominion.tuis.DominionManage; import cn.lunadeer.minecraftpluginutils.scui.CuiTextInput; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -23,6 +24,7 @@ public class OpenCUI { public void run(String input) { Dominion.logger.debug("renameDominionCB.run: %s", input); DominionController.rename(sender, oldName, input); + DominionManage.show(sender, new String[]{"manage", input}); } } From ee2cd3f99bb48e5102222b6a815b596a9caad17d Mon Sep 17 00:00:00 2001 From: zhangyuheng Date: Sat, 25 May 2024 22:22:20 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=86=E9=87=8D?= =?UTF-8?q?=E5=91=BD=E5=90=8D=E9=80=BB=E8=BE=91=EF=BC=8C=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E7=9B=B8=E5=90=8C=E5=90=8D=E5=AD=97=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lunadeer/dominion/controllers/DominionController.java | 4 ++++ 1 file changed, 4 insertions(+) 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; From df33b659f5d0d03725ea6c96d7ad1f9a55079238 Mon Sep 17 00:00:00 2001 From: zhangyuheng Date: Sat, 25 May 2024 22:30:15 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E8=BE=93=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java b/src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java index 4d482c2..711b933 100644 --- a/src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java +++ b/src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java @@ -21,7 +21,7 @@ public class OpenCUI { } @Override - public void run(String input) { + public void handleData(String input) { Dominion.logger.debug("renameDominionCB.run: %s", input); DominionController.rename(sender, oldName, input); DominionManage.show(sender, new String[]{"manage", input}); From 0f938b576cb33fc5ef4dbf19df09c74db7ae375a Mon Sep 17 00:00:00 2001 From: zhangyuheng Date: Sun, 26 May 2024 14:32:25 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=BA=86=E6=96=87?= =?UTF-8?q?=E6=9C=AC=E8=BE=93=E5=85=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lunadeer/dominion/Commands.java | 9 ++ .../lunadeer/dominion/commands/OpenCUI.java | 99 ++++++++++++++++++- .../dominion/tuis/DominionManage.java | 8 ++ .../java/cn/lunadeer/dominion/tuis/Menu.java | 4 + 4 files changed, 119 insertions(+), 1 deletion(-) diff --git a/src/main/java/cn/lunadeer/dominion/Commands.java b/src/main/java/cn/lunadeer/dominion/Commands.java index b01cbad..38abffb 100644 --- a/src/main/java/cn/lunadeer/dominion/Commands.java +++ b/src/main/java/cn/lunadeer/dominion/Commands.java @@ -153,6 +153,15 @@ public class Commands implements TabExecutor { 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/commands/OpenCUI.java b/src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java index 711b933..bad3ba5 100644 --- a/src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java +++ b/src/main/java/cn/lunadeer/dominion/commands/OpenCUI.java @@ -2,16 +2,20 @@ 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; @@ -28,6 +32,65 @@ public class OpenCUI { } } + 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; @@ -35,4 +98,38 @@ public class OpenCUI { 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/tuis/DominionManage.java b/src/main/java/cn/lunadeer/dominion/tuis/DominionManage.java index c250fa8..a04ab52 100644 --- a/src/main/java/cn/lunadeer/dominion/tuis/DominionManage.java +++ b/src/main/java/cn/lunadeer/dominion/tuis/DominionManage.java @@ -37,6 +37,12 @@ public class DominionManage { 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() @@ -48,6 +54,8 @@ public class DominionManage { .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);