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);