实现了文本输入功能
This commit is contained in:
parent
df33b659f5
commit
0f938b576c
@ -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;
|
||||
}
|
||||
|
@ -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<Integer, Location> 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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
Reference in New Issue
Block a user