mirror of
https://github.com/ColdeZhang/Dominion.git
synced 2025-02-04 22:49:41 +08:00
实现了成员权限模板界面
This commit is contained in:
parent
e7900d72cd
commit
ae1444c469
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>cn.lunadeer</groupId>
|
||||
<artifactId>Dominion</artifactId>
|
||||
<version>1.30.15-beta</version>
|
||||
<version>1.31.0-beta</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Dominion</name>
|
||||
|
@ -2,6 +2,7 @@ package cn.lunadeer.dominion;
|
||||
|
||||
import cn.lunadeer.dominion.commands.*;
|
||||
import cn.lunadeer.dominion.controllers.PlayerController;
|
||||
import cn.lunadeer.dominion.cuis.*;
|
||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||
import cn.lunadeer.dominion.tuis.*;
|
||||
import org.bukkit.command.Command;
|
||||
@ -152,21 +153,39 @@ public class Commands implements TabExecutor {
|
||||
case "all_dominion":
|
||||
AllDominion.show(sender, args);
|
||||
break;
|
||||
case "template_list":
|
||||
TemplateList.show(sender, args);
|
||||
break;
|
||||
case "template_manage":
|
||||
TemplateManage.show(sender, args);
|
||||
break;
|
||||
case "template_delete":
|
||||
Template.deleteTemplate(sender, args);
|
||||
break;
|
||||
case "template_create":
|
||||
Template.createTemplate(sender, args);
|
||||
break;
|
||||
case "template_set_flag":
|
||||
Template.setTemplateFlag(sender, args);
|
||||
break;
|
||||
// ---=== CUI ===---
|
||||
case "cui_rename":
|
||||
OpenCUI.RenameDominion(sender, args);
|
||||
RenameDominion.open(sender, args);
|
||||
break;
|
||||
case "cui_edit_join_message":
|
||||
OpenCUI.EditJoinMessage(sender, args);
|
||||
EditJoinMessage.open(sender, args);
|
||||
break;
|
||||
case "cui_edit_leave_message":
|
||||
OpenCUI.EditLeaveMessage(sender, args);
|
||||
EditLeaveMessage.open(sender, args);
|
||||
break;
|
||||
case "cui_create":
|
||||
OpenCUI.CreateDominion(sender, args);
|
||||
CreateDominion.open(sender, args);
|
||||
break;
|
||||
case "cui_create_privilege":
|
||||
OpenCUI.CreatePrivilege(sender, args);
|
||||
CreatePrivilege.open(sender, args);
|
||||
break;
|
||||
case "cui_template_create":
|
||||
CreateTemplate.open(sender, args);
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
|
@ -2,7 +2,6 @@ package cn.lunadeer.dominion.commands;
|
||||
|
||||
import cn.lunadeer.dominion.Cache;
|
||||
import cn.lunadeer.dominion.Dominion;
|
||||
import cn.lunadeer.dominion.controllers.AbstractOperator;
|
||||
import cn.lunadeer.dominion.controllers.BukkitPlayerOperator;
|
||||
import cn.lunadeer.dominion.controllers.DominionController;
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
@ -19,10 +18,10 @@ import org.bukkit.entity.Player;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import static cn.lunadeer.dominion.DominionNode.isInDominion;
|
||||
import static cn.lunadeer.dominion.commands.Apis.*;
|
||||
import static cn.lunadeer.dominion.commands.Apis.autoPoints;
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
|
||||
public class DominionOperate {
|
||||
/**
|
||||
|
@ -1,184 +0,0 @@
|
||||
package cn.lunadeer.dominion.commands;
|
||||
|
||||
import cn.lunadeer.dominion.Dominion;
|
||||
import cn.lunadeer.dominion.controllers.AbstractOperator;
|
||||
import cn.lunadeer.dominion.controllers.BukkitPlayerOperator;
|
||||
import cn.lunadeer.dominion.controllers.DominionController;
|
||||
import cn.lunadeer.dominion.controllers.PrivilegeController;
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.tuis.DominionManage;
|
||||
import cn.lunadeer.dominion.tuis.DominionPrivilegeList;
|
||||
import cn.lunadeer.dominion.tuis.SelectPlayer;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import cn.lunadeer.minecraftpluginutils.XLogger;
|
||||
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 java.util.Objects;
|
||||
|
||||
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) {
|
||||
XLogger.debug("renameDominionCB.run: %s", input);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
DominionController.rename(operator, 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) {
|
||||
XLogger.debug("editJoinMessageCB.run: %s", input);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
DominionController.setJoinMessage(operator, 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) {
|
||||
XLogger.debug("editLeaveMessageCB.run: %s", input);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
DominionController.setLeaveMessage(operator, 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) {
|
||||
XLogger.debug("createDominionCB.run: %s", input);
|
||||
autoPoints(sender);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
Map<Integer, Location> points = Dominion.pointsSelect.get(sender.getUniqueId());
|
||||
if (points == null || points.get(0) == null || points.get(1) == null) {
|
||||
Notification.error(sender, "自动选点失败");
|
||||
return;
|
||||
}
|
||||
operator.getResponse().thenAccept(result -> {
|
||||
if (Objects.equals(result.getStatus(), AbstractOperator.Result.SUCCESS)){
|
||||
DominionManage.show(sender, new String[]{"list"});
|
||||
}
|
||||
});
|
||||
DominionController.create(operator, input, points.get(0), points.get(1));
|
||||
}
|
||||
}
|
||||
|
||||
private static class createPrivilegeCB implements CuiTextInput.InputCallback {
|
||||
private final Player sender;
|
||||
private final String dominionName;
|
||||
|
||||
public createPrivilegeCB(Player sender, String dominionName) {
|
||||
this.sender = sender;
|
||||
this.dominionName = dominionName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleData(String input) {
|
||||
XLogger.debug("createPrivilegeCB.run: %s", input);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
PrivilegeController.createPrivilege(operator, input, dominionName);
|
||||
operator.getResponse().thenAccept(result -> {
|
||||
if (Objects.equals(result.getStatus(), AbstractOperator.Result.SUCCESS)){
|
||||
DominionPrivilegeList.show(sender, new String[]{"privilege_list", dominionName});
|
||||
} else {
|
||||
SelectPlayer.show(sender, new String[]{"select_player_create_privilege", dominionName});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
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) {
|
||||
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);
|
||||
}
|
||||
|
||||
public static void CreatePrivilege(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
DominionDTO dominion = DominionDTO.select(args[1]);
|
||||
if (dominion == null) {
|
||||
Notification.error(sender, "领地不存在");
|
||||
return;
|
||||
}
|
||||
CuiTextInput.InputCallback createPrivilegeCB = new createPrivilegeCB(player, dominion.getName());
|
||||
CuiTextInput view = CuiTextInput.create(createPrivilegeCB).setText("Steve").title("输入玩家名称以添加为成员");
|
||||
view.open(player);
|
||||
}
|
||||
}
|
99
src/main/java/cn/lunadeer/dominion/commands/Template.java
Normal file
99
src/main/java/cn/lunadeer/dominion/commands/Template.java
Normal file
@ -0,0 +1,99 @@
|
||||
package cn.lunadeer.dominion.commands;
|
||||
|
||||
import cn.lunadeer.dominion.controllers.BukkitPlayerOperator;
|
||||
import cn.lunadeer.dominion.controllers.TemplateController;
|
||||
import cn.lunadeer.dominion.tuis.TemplateList;
|
||||
import cn.lunadeer.dominion.tuis.TemplateManage;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
|
||||
public class Template {
|
||||
|
||||
/**
|
||||
* 删除权限模板
|
||||
* /dominion template_delete <模板名称> [页码]
|
||||
*
|
||||
* @param sender 命令发送者
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void deleteTemplate(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
if (args.length < 2) {
|
||||
Notification.error(sender, "用法: /dominion template_delete <模板名称>");
|
||||
return;
|
||||
}
|
||||
TemplateController.deleteTemplate(operator, args[1]);
|
||||
String[] newArgs = new String[2];
|
||||
newArgs[0] = "template_list";
|
||||
if (args.length == 3) {
|
||||
newArgs[1] = args[2];
|
||||
} else {
|
||||
newArgs[1] = "1";
|
||||
}
|
||||
TemplateList.show(sender, newArgs);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建权限模板
|
||||
* /dominion template_create <模板名称> [页码]
|
||||
*
|
||||
* @param sender 命令发送者
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void createTemplate(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
if (args.length < 2) {
|
||||
Notification.error(sender, "用法: /dominion template_create <模板名称>");
|
||||
return;
|
||||
}
|
||||
TemplateController.createTemplate(operator, args[1]);
|
||||
String[] newArgs = new String[2];
|
||||
newArgs[0] = "template_list";
|
||||
newArgs[1] = "1";
|
||||
TemplateList.show(sender, newArgs);
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑模板
|
||||
* /dominion template_set_flag <模板名称> <权限名称> <true/false> [页码]
|
||||
*
|
||||
* @param sender 命令发送者
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void setTemplateFlag(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
if (args.length < 4) {
|
||||
Notification.error(sender, "用法: /dominion template_set_flag <模板名称> <权限名称> <true/false>");
|
||||
return;
|
||||
}
|
||||
boolean value;
|
||||
if (args[3].equalsIgnoreCase("true")) {
|
||||
value = true;
|
||||
} else if (args[3].equalsIgnoreCase("false")) {
|
||||
value = false;
|
||||
} else {
|
||||
Notification.error(sender, "权限值必须是true或false");
|
||||
return;
|
||||
}
|
||||
TemplateController.setTemplateFlag(operator, args[1], args[2], value);
|
||||
String[] newArgs = new String[3];
|
||||
newArgs[0] = "template_manage";
|
||||
newArgs[1] = args[1];
|
||||
if (args.length == 5) {
|
||||
newArgs[2] = args[4];
|
||||
} else {
|
||||
newArgs[2] = "1";
|
||||
}
|
||||
TemplateManage.show(sender, newArgs);
|
||||
}
|
||||
|
||||
}
|
@ -2,8 +2,6 @@ package cn.lunadeer.dominion.controllers;
|
||||
|
||||
import cn.lunadeer.dominion.Cache;
|
||||
import cn.lunadeer.dominion.Dominion;
|
||||
import cn.lunadeer.dominion.DominionNode;
|
||||
import cn.lunadeer.dominion.commands.OpenCUI;
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
@ -19,7 +17,8 @@ import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static cn.lunadeer.dominion.DominionNode.isInDominion;
|
||||
import static cn.lunadeer.dominion.controllers.Apis.*;
|
||||
import static cn.lunadeer.dominion.controllers.Apis.getPlayerCurrentDominion;
|
||||
import static cn.lunadeer.dominion.controllers.Apis.notOwner;
|
||||
|
||||
public class DominionController {
|
||||
|
||||
|
@ -2,8 +2,6 @@ package cn.lunadeer.dominion.controllers;
|
||||
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.Flag;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import static cn.lunadeer.dominion.controllers.Apis.noAuthToChangeFlags;
|
||||
|
||||
|
@ -5,9 +5,7 @@ import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.Flag;
|
||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import cn.lunadeer.minecraftpluginutils.XLogger;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
@ -0,0 +1,65 @@
|
||||
package cn.lunadeer.dominion.controllers;
|
||||
|
||||
import cn.lunadeer.dominion.dtos.Flag;
|
||||
import cn.lunadeer.dominion.dtos.PrivilegeTemplateDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TemplateController {
|
||||
|
||||
public static void createTemplate(AbstractOperator operator, String templateName) {
|
||||
AbstractOperator.Result SUCCESS = new AbstractOperator.Result(AbstractOperator.Result.SUCCESS, "创建成功");
|
||||
AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "创建失败");
|
||||
List<PrivilegeTemplateDTO> templates = PrivilegeTemplateDTO.selectAll(operator.getUniqueId());
|
||||
for (PrivilegeTemplateDTO template : templates) {
|
||||
if (template.getName().equals(templateName)) {
|
||||
operator.setResponse(FAIL.addMessage("已经存在名为" + templateName + "的权限模板"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
PrivilegeTemplateDTO template = PrivilegeTemplateDTO.create(operator.getUniqueId(), templateName);
|
||||
if (template == null) {
|
||||
operator.setResponse(FAIL.addMessage("可能是数据库错误,请联系管理员"));
|
||||
return;
|
||||
}
|
||||
operator.setResponse(SUCCESS.addMessage("成功创建名为" + templateName + "的权限模板"));
|
||||
}
|
||||
|
||||
public static void deleteTemplate(AbstractOperator operator, String templateName) {
|
||||
AbstractOperator.Result SUCCESS = new AbstractOperator.Result(AbstractOperator.Result.SUCCESS, "删除成功");
|
||||
AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "删除失败");
|
||||
PrivilegeTemplateDTO template = PrivilegeTemplateDTO.select(operator.getUniqueId(), templateName);
|
||||
if (template == null) {
|
||||
operator.setResponse(FAIL.addMessage("模板不存在"));
|
||||
return;
|
||||
}
|
||||
if (!template.getCreator().equals(operator.getUniqueId())) {
|
||||
operator.setResponse(FAIL.addMessage("这不是你的模板"));
|
||||
return;
|
||||
}
|
||||
PrivilegeTemplateDTO.delete(operator.getUniqueId(), templateName);
|
||||
operator.setResponse(SUCCESS);
|
||||
}
|
||||
|
||||
public static void setTemplateFlag(AbstractOperator operator, String templateName, String flag_name, boolean value) {
|
||||
AbstractOperator.Result SUCCESS = new AbstractOperator.Result(AbstractOperator.Result.SUCCESS, "设置成功");
|
||||
AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "设置失败");
|
||||
PrivilegeTemplateDTO template = PrivilegeTemplateDTO.select(operator.getUniqueId(), templateName);
|
||||
if (template == null) {
|
||||
operator.setResponse(FAIL.addMessage("模板不存在"));
|
||||
return;
|
||||
}
|
||||
if (flag_name.equals("admin")) {
|
||||
template.setAdmin(value);
|
||||
} else {
|
||||
Flag f = Flag.getFlag(flag_name);
|
||||
if (f == null) {
|
||||
operator.setResponse(FAIL.addMessage("未知的权限 %s", flag_name));
|
||||
return;
|
||||
}
|
||||
template.setFlagValue(f, value);
|
||||
}
|
||||
operator.setResponse(SUCCESS.addMessage("成功设置模板 " + template.getName() + " 的权限 " + flag_name + " 为 " + value));
|
||||
}
|
||||
|
||||
}
|
56
src/main/java/cn/lunadeer/dominion/cuis/CreateDominion.java
Normal file
56
src/main/java/cn/lunadeer/dominion/cuis/CreateDominion.java
Normal file
@ -0,0 +1,56 @@
|
||||
package cn.lunadeer.dominion.cuis;
|
||||
|
||||
import cn.lunadeer.dominion.Dominion;
|
||||
import cn.lunadeer.dominion.controllers.AbstractOperator;
|
||||
import cn.lunadeer.dominion.controllers.BukkitPlayerOperator;
|
||||
import cn.lunadeer.dominion.controllers.DominionController;
|
||||
import cn.lunadeer.dominion.tuis.DominionManage;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import cn.lunadeer.minecraftpluginutils.XLogger;
|
||||
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 java.util.Objects;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.autoPoints;
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
|
||||
public class CreateDominion {
|
||||
|
||||
private static class createDominionCB implements CuiTextInput.InputCallback {
|
||||
private final Player sender;
|
||||
|
||||
public createDominionCB(Player sender) {
|
||||
this.sender = sender;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleData(String input) {
|
||||
XLogger.debug("createDominionCB.run: %s", input);
|
||||
autoPoints(sender);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
Map<Integer, Location> points = Dominion.pointsSelect.get(sender.getUniqueId());
|
||||
if (points == null || points.get(0) == null || points.get(1) == null) {
|
||||
Notification.error(sender, "自动选点失败");
|
||||
return;
|
||||
}
|
||||
operator.getResponse().thenAccept(result -> {
|
||||
if (Objects.equals(result.getStatus(), AbstractOperator.Result.SUCCESS)) {
|
||||
DominionManage.show(sender, new String[]{"list"});
|
||||
}
|
||||
});
|
||||
DominionController.create(operator, input, points.get(0), points.get(1));
|
||||
}
|
||||
}
|
||||
|
||||
public static void open(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);
|
||||
}
|
||||
}
|
58
src/main/java/cn/lunadeer/dominion/cuis/CreatePrivilege.java
Normal file
58
src/main/java/cn/lunadeer/dominion/cuis/CreatePrivilege.java
Normal file
@ -0,0 +1,58 @@
|
||||
package cn.lunadeer.dominion.cuis;
|
||||
|
||||
import cn.lunadeer.dominion.controllers.AbstractOperator;
|
||||
import cn.lunadeer.dominion.controllers.BukkitPlayerOperator;
|
||||
import cn.lunadeer.dominion.controllers.PrivilegeController;
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.tuis.DominionPrivilegeList;
|
||||
import cn.lunadeer.dominion.tuis.SelectPlayer;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import cn.lunadeer.minecraftpluginutils.XLogger;
|
||||
import cn.lunadeer.minecraftpluginutils.scui.CuiTextInput;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
|
||||
public class CreatePrivilege {
|
||||
|
||||
private static class createPrivilegeCB implements CuiTextInput.InputCallback {
|
||||
private final Player sender;
|
||||
private final String dominionName;
|
||||
|
||||
public createPrivilegeCB(Player sender, String dominionName) {
|
||||
this.sender = sender;
|
||||
this.dominionName = dominionName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleData(String input) {
|
||||
XLogger.debug("createPrivilegeCB.run: %s", input);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
operator.getResponse().thenAccept(result -> {
|
||||
if (Objects.equals(result.getStatus(), AbstractOperator.Result.SUCCESS)){
|
||||
DominionPrivilegeList.show(sender, new String[]{"privilege_list", dominionName});
|
||||
} else {
|
||||
SelectPlayer.show(sender, new String[]{"select_player_create_privilege", dominionName});
|
||||
}
|
||||
});
|
||||
PrivilegeController.createPrivilege(operator, input, dominionName);
|
||||
}
|
||||
}
|
||||
|
||||
public static void open(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
DominionDTO dominion = DominionDTO.select(args[1]);
|
||||
if (dominion == null) {
|
||||
Notification.error(sender, "领地不存在");
|
||||
return;
|
||||
}
|
||||
CuiTextInput.InputCallback createPrivilegeCB = new createPrivilegeCB(player, dominion.getName());
|
||||
CuiTextInput view = CuiTextInput.create(createPrivilegeCB).setText("Steve").title("输入玩家名称以添加为成员");
|
||||
view.open(player);
|
||||
}
|
||||
|
||||
}
|
41
src/main/java/cn/lunadeer/dominion/cuis/CreateTemplate.java
Normal file
41
src/main/java/cn/lunadeer/dominion/cuis/CreateTemplate.java
Normal file
@ -0,0 +1,41 @@
|
||||
package cn.lunadeer.dominion.cuis;
|
||||
|
||||
import cn.lunadeer.dominion.controllers.BukkitPlayerOperator;
|
||||
import cn.lunadeer.dominion.controllers.TemplateController;
|
||||
import cn.lunadeer.dominion.tuis.TemplateList;
|
||||
import cn.lunadeer.minecraftpluginutils.XLogger;
|
||||
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 CreateTemplate {
|
||||
|
||||
private static class createTemplateCB implements CuiTextInput.InputCallback {
|
||||
private final Player sender;
|
||||
|
||||
public createTemplateCB(Player sender) {
|
||||
this.sender = sender;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleData(String input) {
|
||||
XLogger.debug("createTemplateCB.run: %s", input);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
operator.getResponse().thenAccept(result -> {
|
||||
TemplateList.show(sender, new String[]{"template_list"});
|
||||
});
|
||||
TemplateController.createTemplate(operator, input);
|
||||
}
|
||||
}
|
||||
|
||||
public static void open(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
CuiTextInput.InputCallback createTemplateCB = new createTemplateCB(player);
|
||||
CuiTextInput view = CuiTextInput.create(createTemplateCB).setText("未命名模板").title("输入模板名称");
|
||||
view.open(player);
|
||||
}
|
||||
|
||||
}
|
47
src/main/java/cn/lunadeer/dominion/cuis/EditJoinMessage.java
Normal file
47
src/main/java/cn/lunadeer/dominion/cuis/EditJoinMessage.java
Normal file
@ -0,0 +1,47 @@
|
||||
package cn.lunadeer.dominion.cuis;
|
||||
|
||||
import cn.lunadeer.dominion.controllers.BukkitPlayerOperator;
|
||||
import cn.lunadeer.dominion.controllers.DominionController;
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.tuis.DominionManage;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import cn.lunadeer.minecraftpluginutils.XLogger;
|
||||
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 EditJoinMessage {
|
||||
|
||||
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) {
|
||||
XLogger.debug("editJoinMessageCB.run: %s", input);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
DominionController.setJoinMessage(operator, input, dominionName);
|
||||
DominionManage.show(sender, new String[]{"manage", dominionName});
|
||||
}
|
||||
}
|
||||
|
||||
public static void open(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
DominionDTO dominion = DominionDTO.select(args[1]);
|
||||
if (dominion == null) {
|
||||
Notification.error(sender, "领地不存在");
|
||||
return;
|
||||
}
|
||||
CuiTextInput.InputCallback editJoinMessageCB = new editJoinMessageCB(player, dominion.getName());
|
||||
CuiTextInput view = CuiTextInput.create(editJoinMessageCB).setText(dominion.getJoinMessage()).title("编辑欢迎提示语");
|
||||
view.open(player);
|
||||
}
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
package cn.lunadeer.dominion.cuis;
|
||||
|
||||
import cn.lunadeer.dominion.controllers.BukkitPlayerOperator;
|
||||
import cn.lunadeer.dominion.controllers.DominionController;
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.tuis.DominionManage;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import cn.lunadeer.minecraftpluginutils.XLogger;
|
||||
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 EditLeaveMessage {
|
||||
|
||||
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) {
|
||||
XLogger.debug("editLeaveMessageCB.run: %s", input);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
DominionController.setLeaveMessage(operator, input, dominionName);
|
||||
DominionManage.show(sender, new String[]{"manage", dominionName});
|
||||
}
|
||||
}
|
||||
|
||||
public static void open(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
DominionDTO dominion = DominionDTO.select(args[1]);
|
||||
if (dominion == null) {
|
||||
Notification.error(sender, "领地不存在");
|
||||
return;
|
||||
}
|
||||
CuiTextInput.InputCallback editLeaveMessageCB = new editLeaveMessageCB(player, dominion.getName());
|
||||
CuiTextInput view = CuiTextInput.create(editLeaveMessageCB).setText(dominion.getLeaveMessage()).title("编辑离开提示语");
|
||||
view.open(player);
|
||||
}
|
||||
}
|
40
src/main/java/cn/lunadeer/dominion/cuis/RenameDominion.java
Normal file
40
src/main/java/cn/lunadeer/dominion/cuis/RenameDominion.java
Normal file
@ -0,0 +1,40 @@
|
||||
package cn.lunadeer.dominion.cuis;
|
||||
|
||||
import cn.lunadeer.dominion.controllers.BukkitPlayerOperator;
|
||||
import cn.lunadeer.dominion.controllers.DominionController;
|
||||
import cn.lunadeer.dominion.tuis.DominionManage;
|
||||
import cn.lunadeer.minecraftpluginutils.XLogger;
|
||||
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 RenameDominion {
|
||||
|
||||
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) {
|
||||
XLogger.debug("renameDominionCB.run: %s", input);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
DominionController.rename(operator, oldName, input);
|
||||
DominionManage.show(sender, new String[]{"manage", input});
|
||||
}
|
||||
}
|
||||
|
||||
public static void open(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);
|
||||
}
|
||||
}
|
@ -97,6 +97,14 @@ public class PlayerPrivilegeDTO {
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO applyTemplate(PrivilegeTemplateDTO template) {
|
||||
this.admin = template.getAdmin();
|
||||
for (Flag f : Flag.getPrivilegeFlagsEnabled()) {
|
||||
this.flags.put(f, template.getFlagValue(f));
|
||||
}
|
||||
return update(this);
|
||||
}
|
||||
|
||||
private PlayerPrivilegeDTO(Integer id, UUID playerUUID, Boolean admin, Integer domID, Map<Flag, Boolean> flags) {
|
||||
this.id = id;
|
||||
this.playerUUID = playerUUID;
|
||||
|
@ -0,0 +1,117 @@
|
||||
package cn.lunadeer.dominion.dtos;
|
||||
|
||||
import cn.lunadeer.dominion.Dominion;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.util.*;
|
||||
|
||||
public class PrivilegeTemplateDTO {
|
||||
|
||||
private static List<PrivilegeTemplateDTO> query(String sql, Object... params) {
|
||||
List<PrivilegeTemplateDTO> templates = new ArrayList<>();
|
||||
try (ResultSet rs = Dominion.database.query(sql, params)) {
|
||||
if (rs == null) return templates;
|
||||
while (rs.next()) {
|
||||
Map<Flag, Boolean> flags = new HashMap<>();
|
||||
for (Flag f : Flag.getPrivilegeFlagsEnabled()) {
|
||||
flags.put(f, rs.getBoolean(f.getFlagName()));
|
||||
}
|
||||
PrivilegeTemplateDTO template = new PrivilegeTemplateDTO(
|
||||
rs.getInt("id"),
|
||||
UUID.fromString(rs.getString("creator")),
|
||||
rs.getString("name"),
|
||||
rs.getBoolean("admin"),
|
||||
flags
|
||||
);
|
||||
templates.add(template);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Dominion.database.handleDatabaseError("查询权限模版失败: ", e, sql);
|
||||
}
|
||||
return templates;
|
||||
}
|
||||
|
||||
public static PrivilegeTemplateDTO create(UUID creator, String name) {
|
||||
String sql = "INSERT INTO privilege_template (creator, name) VALUES (?, ?) RETURNING *;";
|
||||
List<PrivilegeTemplateDTO> templates = query(sql, creator.toString(), name);
|
||||
if (templates.size() == 0) return null;
|
||||
return templates.get(0);
|
||||
}
|
||||
|
||||
public static PrivilegeTemplateDTO select(UUID creator, String name) {
|
||||
String sql = "SELECT * FROM privilege_template WHERE creator = ? AND name = ?;";
|
||||
List<PrivilegeTemplateDTO> templates = query(sql, creator.toString(), name);
|
||||
if (templates.size() == 0) return null;
|
||||
return templates.get(0);
|
||||
}
|
||||
|
||||
public static List<PrivilegeTemplateDTO> selectAll(UUID creator) {
|
||||
String sql = "SELECT * FROM privilege_template WHERE creator = ?;";
|
||||
return query(sql, creator.toString());
|
||||
}
|
||||
|
||||
public static void delete(UUID creator, String name) {
|
||||
String sql = "DELETE FROM privilege_template WHERE creator = ? AND name = ?;";
|
||||
query(sql, creator.toString(), name);
|
||||
}
|
||||
|
||||
private PrivilegeTemplateDTO(Integer id, UUID creator, String name, Boolean admin, Map<Flag, Boolean> flags) {
|
||||
this.id = id;
|
||||
this.creator = creator;
|
||||
this.name = name;
|
||||
this.admin = admin;
|
||||
this.flags.putAll(flags);
|
||||
}
|
||||
|
||||
private Integer id;
|
||||
private UUID creator;
|
||||
private String name;
|
||||
private Boolean admin;
|
||||
|
||||
private final Map<Flag, Boolean> flags = new HashMap<>();
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public UUID getCreator() {
|
||||
return creator;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public Boolean getAdmin() {
|
||||
return admin;
|
||||
}
|
||||
|
||||
public Boolean getFlagValue(Flag flag) {
|
||||
if (!flags.containsKey(flag)) return flag.getDefaultValue();
|
||||
return flags.get(flag);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setFlagValue(Flag flag, Boolean value) {
|
||||
flags.put(flag, value);
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setAdmin(Boolean admin) {
|
||||
this.admin = admin;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
private static PrivilegeTemplateDTO update(PrivilegeTemplateDTO template) {
|
||||
StringBuilder sql = new StringBuilder("UPDATE privilege_template SET " +
|
||||
"name = ?, " +
|
||||
"admin = ?, ");
|
||||
for (Flag f : Flag.getPrivilegeFlagsEnabled()) {
|
||||
sql.append(f.getFlagName()).append(" = ").append(template.getFlagValue(f)).append(", ");
|
||||
}
|
||||
sql = new StringBuilder(sql.substring(0, sql.length() - 2) + " WHERE id = ? RETURNING *;");
|
||||
List<PrivilegeTemplateDTO> templates = query(sql.toString(), template.getName(), template.getAdmin(), template.getId());
|
||||
if (templates.size() == 0) return null;
|
||||
return templates.get(0);
|
||||
}
|
||||
|
||||
}
|
@ -5,14 +5,11 @@ import cn.lunadeer.dominion.Dominion;
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.Flag;
|
||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
import net.kyori.adventure.text.format.Style;
|
||||
import net.kyori.adventure.text.format.TextColor;
|
||||
import net.kyori.adventure.text.format.TextDecoration;
|
||||
import net.kyori.adventure.title.Title;
|
||||
import net.md_5.bungee.api.ChatMessageType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
|
@ -82,5 +82,23 @@ public class DatabaseTables {
|
||||
|
||||
// 1.18.0
|
||||
Dominion.database.addColumnIfNotExists("dominion", "tp_location", "TEXT NOT NULL DEFAULT 'default'");
|
||||
|
||||
// 1.31.0
|
||||
sql = "CREATE TABLE IF NOT EXISTS privilege_template (" +
|
||||
" id SERIAL PRIMARY KEY," +
|
||||
" creator VARCHAR(36) NOT NULL," +
|
||||
" name TEXT NOT NULL," +
|
||||
" admin BOOLEAN NOT NULL DEFAULT FALSE," +
|
||||
|
||||
" UNIQUE (creator, name)," +
|
||||
" FOREIGN KEY (creator) REFERENCES player_name(uuid) ON DELETE CASCADE" +
|
||||
");";
|
||||
Dominion.database.query(sql);
|
||||
|
||||
for (Flag flag : Flag.getAllPrivilegeFlags()) {
|
||||
Dominion.database.addColumnIfNotExists("privilege_template",
|
||||
flag.getFlagName(),
|
||||
"BOOLEAN NOT NULL DEFAULT " + flag.getDefaultValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,7 +11,6 @@ import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
import static cn.lunadeer.dominion.controllers.Apis.getPlayerCurrentDominion;
|
||||
|
||||
public class Apis {
|
||||
|
||||
|
@ -12,7 +12,6 @@ import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
import net.kyori.adventure.text.format.Style;
|
||||
import net.kyori.adventure.text.format.TextColor;
|
||||
import net.kyori.adventure.text.format.TextDecoration;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
|
@ -14,12 +14,24 @@ public class Menu {
|
||||
public static void show(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
|
||||
int page = 1;
|
||||
if (args.length == 2) {
|
||||
try {
|
||||
page = Integer.parseInt(args[1]);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
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("查看我的领地");
|
||||
Line template = Line.create()
|
||||
.append(Button.create("权限模板").setExecuteCommand("/dominion template_list").build())
|
||||
.append("成员权限模板列表");
|
||||
Line help = Line.create()
|
||||
.append(Button.create("指令帮助").setExecuteCommand("/dominion help").build())
|
||||
.append("查看指令帮助");
|
||||
@ -38,11 +50,12 @@ public class Menu {
|
||||
Line reload_config = Line.create()
|
||||
.append(Button.create("重载配置").setExecuteCommand("/dominion reload_config").build())
|
||||
.append("重载配置文件");
|
||||
ListView view = ListView.create(10, "/dominion");
|
||||
ListView view = ListView.create(10, "/dominion menu");
|
||||
view.title("Dominion 领地系统")
|
||||
.navigator(Line.create().append("主菜单"))
|
||||
.add(create)
|
||||
.add(list)
|
||||
.add(template)
|
||||
.add(help)
|
||||
.add(link);
|
||||
if (player.isOp()) {
|
||||
@ -53,6 +66,6 @@ public class Menu {
|
||||
view.add(reload_cache);
|
||||
view.add(reload_config);
|
||||
}
|
||||
view.showOn(player, 1);
|
||||
view.showOn(player, page);
|
||||
}
|
||||
}
|
||||
|
46
src/main/java/cn/lunadeer/dominion/tuis/TemplateList.java
Normal file
46
src/main/java/cn/lunadeer/dominion/tuis/TemplateList.java
Normal file
@ -0,0 +1,46 @@
|
||||
package cn.lunadeer.dominion.tuis;
|
||||
|
||||
import cn.lunadeer.dominion.dtos.PrivilegeTemplateDTO;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.ListView;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
import static cn.lunadeer.dominion.tuis.Apis.getPage;
|
||||
|
||||
public class TemplateList {
|
||||
|
||||
public static void show(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
int page = getPage(args);
|
||||
ListView view = ListView.create(10, "/dominion template_list");
|
||||
|
||||
List<PrivilegeTemplateDTO> templates = PrivilegeTemplateDTO.selectAll(player.getUniqueId());
|
||||
view.title("成员权限模板列表");
|
||||
view.navigator(Line.create().append(Button.create("主菜单").setExecuteCommand("/dominion menu").build()).append("模板列表"));
|
||||
|
||||
Button create = Button.create("创建成员权限模板").setExecuteCommand("/dominion cui_template_create")
|
||||
.setHoverText("创建一个新的成员权限模板");
|
||||
|
||||
view.add(Line.create().append(create.build()));
|
||||
|
||||
for (PrivilegeTemplateDTO template : templates) {
|
||||
Button manage = Button.createGreen("管理").setExecuteCommand("/dominion template_manage " + template.getName());
|
||||
Button delete = Button.createRed("删除").setExecuteCommand("/dominion template_delete " + template.getName());
|
||||
Line line = Line.create()
|
||||
.append(delete.build())
|
||||
.append(manage.build())
|
||||
.append(template.getName());
|
||||
view.add(line);
|
||||
}
|
||||
|
||||
view.showOn(player, page);
|
||||
}
|
||||
|
||||
}
|
73
src/main/java/cn/lunadeer/dominion/tuis/TemplateManage.java
Normal file
73
src/main/java/cn/lunadeer/dominion/tuis/TemplateManage.java
Normal file
@ -0,0 +1,73 @@
|
||||
package cn.lunadeer.dominion.tuis;
|
||||
|
||||
import cn.lunadeer.dominion.dtos.Flag;
|
||||
import cn.lunadeer.dominion.dtos.PrivilegeTemplateDTO;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.ListView;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
import static cn.lunadeer.dominion.tuis.Apis.getPage;
|
||||
|
||||
public class TemplateManage {
|
||||
|
||||
// /dominion template_manage <模板名称> [页码]
|
||||
public static void show(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
int page = 1;
|
||||
if (args.length == 3) {
|
||||
try {
|
||||
page = Integer.parseInt(args[2]);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
PrivilegeTemplateDTO template = PrivilegeTemplateDTO.select(player.getUniqueId(), args[1]);
|
||||
if (template == null) {
|
||||
Notification.error(sender, "模板 %s 不存在", args[1]);
|
||||
return;
|
||||
}
|
||||
|
||||
ListView view = ListView.create(10, "/dominion template_manage " + template.getName());
|
||||
view.title("模板 " + args[1] + " 权限管理");
|
||||
view.navigator(Line.create()
|
||||
.append(Button.create("主菜单").setExecuteCommand("/dominion menu").build())
|
||||
.append(Button.create("模板列表").setExecuteCommand("/dominion template_list").build())
|
||||
.append("模板管理")
|
||||
);
|
||||
|
||||
// /dominion template_set_flag <模板名称> <权限名称> <true/false> [页码]
|
||||
|
||||
if (template.getAdmin()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion template_set_flag " + template.getName() + " admin false " + page).build())
|
||||
.append("管理员"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐").setExecuteCommand("/dominion template_set_flag " + template.getName() + " admin true " + page).build())
|
||||
.append("管理员"));
|
||||
}
|
||||
for (Flag flag : Flag.getPrivilegeFlagsEnabled()) {
|
||||
view.add(createOption(flag, template.getFlagValue(flag), template.getName(), page));
|
||||
}
|
||||
view.showOn(player, page);
|
||||
}
|
||||
|
||||
private static Line createOption(Flag flag, boolean value, String templateName, int page) {
|
||||
if (value) {
|
||||
return Line.create()
|
||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion template_set_flag " + templateName + " " + flag.getFlagName() + " false " + page).build())
|
||||
.append(Component.text(flag.getDisplayName()).hoverEvent(Component.text(flag.getDescription())));
|
||||
} else {
|
||||
return Line.create()
|
||||
.append(Button.createRed("☐").setExecuteCommand("/dominion template_set_flag " + templateName + " " + flag.getFlagName() + " true " + page).build())
|
||||
.append(Component.text(flag.getDisplayName()).hoverEvent(Component.text(flag.getDescription())));
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user