mirror of
https://github.com/ColdeZhang/Dominion.git
synced 2024-10-19 00:36:40 +08:00
移除了权限组 完成了ui
This commit is contained in:
parent
5810244de9
commit
15f19865ef
@ -1,22 +1,14 @@
|
||||
package cn.lunadeer.dominion;
|
||||
|
||||
import cn.lunadeer.dominion.commands.*;
|
||||
import cn.lunadeer.dominion.controllers.DominionController;
|
||||
import cn.lunadeer.dominion.controllers.GroupController;
|
||||
import cn.lunadeer.dominion.commands.DominionFlag;
|
||||
import cn.lunadeer.dominion.commands.DominionOperate;
|
||||
import cn.lunadeer.dominion.commands.PlayerPrivilege;
|
||||
import cn.lunadeer.dominion.controllers.PlayerController;
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||
import cn.lunadeer.dominion.dtos.PrivilegeTemplateDTO;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import cn.lunadeer.dominion.utils.STUI.Line;
|
||||
import cn.lunadeer.dominion.utils.STUI.ListView;
|
||||
import cn.lunadeer.dominion.utils.STUI.Pagination;
|
||||
import cn.lunadeer.dominion.utils.STUI.View;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
import cn.lunadeer.dominion.tuis.*;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabExecutor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@ -25,7 +17,6 @@ import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
import static cn.lunadeer.dominion.commands.Helper.*;
|
||||
|
||||
public class Commands implements TabExecutor {
|
||||
@ -67,34 +58,22 @@ public class Commands implements TabExecutor {
|
||||
}
|
||||
switch (args[0]) {
|
||||
case "menu":
|
||||
TUIs.menu(sender, args);
|
||||
Menu.show(sender, args);
|
||||
break;
|
||||
case "list":
|
||||
TUIs.list(sender, args);
|
||||
ListDominion.show(sender, args);
|
||||
break;
|
||||
case "help":
|
||||
TUIs.printHelp(sender, args);
|
||||
cn.lunadeer.dominion.tuis.Apis.printHelp(sender, args);
|
||||
break;
|
||||
case "info":
|
||||
TUIs.sizeInfo(sender, args);
|
||||
DominionSizeInfo.show(sender, args);
|
||||
break;
|
||||
case "manage":
|
||||
TUIs.manage(sender, args);
|
||||
DominionManage.show(sender, args);
|
||||
break;
|
||||
case "flag_info":
|
||||
TUIs.flagInfo(sender, args);
|
||||
break;
|
||||
case "group_list":
|
||||
TUIs.groupList(sender, args);
|
||||
break;
|
||||
case "privilege_list":
|
||||
TUIs.privilegeList(sender, args);
|
||||
break;
|
||||
case "group":
|
||||
TUIs.group(sender, args);
|
||||
break;
|
||||
case "group_detail":
|
||||
TUIs.groupDetail(sender, args);
|
||||
DominionFlagInfo.show(sender, args);
|
||||
break;
|
||||
case "create":
|
||||
DominionOperate.createDominion(sender, args);
|
||||
@ -126,20 +105,11 @@ public class Commands implements TabExecutor {
|
||||
case "clear_privilege":
|
||||
PlayerPrivilege.clearPlayerPrivilege(sender, args);
|
||||
break;
|
||||
case "create_group":
|
||||
PrivilegeGroup.createGroup(sender, args);
|
||||
case "privilege_list":
|
||||
DominionPrivilegeList.show(sender, args);
|
||||
break;
|
||||
case "delete_group":
|
||||
PrivilegeGroup.deleteGroup(sender, args);
|
||||
break;
|
||||
case "set_group":
|
||||
PrivilegeGroup.setDominionFlag(sender, args);
|
||||
break;
|
||||
case "add_player":
|
||||
PrivilegeGroup.addPlayer(sender, args);
|
||||
break;
|
||||
case "remove_player":
|
||||
PrivilegeGroup.removePlayer(sender, args);
|
||||
case "privilege_info":
|
||||
PrivilegeInfo.show(sender, args);
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
@ -165,8 +135,7 @@ public class Commands implements TabExecutor {
|
||||
if (args.length == 1) {
|
||||
return Arrays.asList("menu", "help", "info", "manage", "flag_info", "group_list", "privilege_list", "group",
|
||||
"create", "auto_create", "create_sub", "auto_create_sub", "expand", "contract", "delete", "set",
|
||||
"set_privilege", "clear_privilege", "create_group", "delete_group", "set_group", "add_player",
|
||||
"remove_player", "list"
|
||||
"set_privilege", "clear_privilege", "list", "privilege_info"
|
||||
);
|
||||
}
|
||||
if (args.length == 2) {
|
||||
@ -178,28 +147,23 @@ public class Commands implements TabExecutor {
|
||||
case "auto_create":
|
||||
return Collections.singletonList("输入领地名称");
|
||||
case "delete":
|
||||
case "create_sub":
|
||||
case "auto_create_sub":
|
||||
case "info":
|
||||
case "manage":
|
||||
case "flag_info":
|
||||
case "group_list":
|
||||
case "privilege_list":
|
||||
return playerDominions(sender);
|
||||
case "set":
|
||||
return dominionFlags();
|
||||
case "set_privilege":
|
||||
case "clear_privilege":
|
||||
case "add_player":
|
||||
case "remove_player":
|
||||
case "privilege_info":
|
||||
return playerNames();
|
||||
case "create_group":
|
||||
case "delete_group":
|
||||
case "set_group":
|
||||
return playerGroups(sender);
|
||||
case "expand":
|
||||
case "contract":
|
||||
return Collections.singletonList("大小(整数)");
|
||||
case "create_sub":
|
||||
case "auto_create_sub":
|
||||
return Collections.singletonList("子领地名称");
|
||||
}
|
||||
}
|
||||
if (args.length == 3) {
|
||||
@ -208,25 +172,20 @@ public class Commands implements TabExecutor {
|
||||
return boolOptions();
|
||||
case "set_privilege":
|
||||
return playerPrivileges();
|
||||
case "set_group":
|
||||
return groupPrivileges();
|
||||
case "add_player":
|
||||
case "remove_player":
|
||||
return playerGroups(sender);
|
||||
case "expand":
|
||||
case "contract":
|
||||
case "clear_privilege":
|
||||
case "privilege_info":
|
||||
case "auto_create_sub":
|
||||
case "create_sub":
|
||||
return playerDominions(sender);
|
||||
}
|
||||
}
|
||||
if (args.length == 4) {
|
||||
switch (args[0]) {
|
||||
case "set":
|
||||
case "set_privilege":
|
||||
case "clear_privilege":
|
||||
case "add_player":
|
||||
case "remove_player":
|
||||
return playerDominions(sender);
|
||||
case "set_group":
|
||||
case "set_privilege":
|
||||
return boolOptions();
|
||||
}
|
||||
}
|
||||
|
@ -7,9 +7,7 @@ import cn.lunadeer.dominion.utils.XLogger;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.postgresql.core.Tuple;
|
||||
|
||||
import javax.xml.crypto.Data;
|
||||
import java.sql.Connection;
|
||||
import java.util.*;
|
||||
|
||||
|
@ -1,505 +0,0 @@
|
||||
package cn.lunadeer.dominion;
|
||||
|
||||
import cn.lunadeer.dominion.commands.Helper;
|
||||
import cn.lunadeer.dominion.controllers.GroupController;
|
||||
import cn.lunadeer.dominion.controllers.PlayerController;
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||
import cn.lunadeer.dominion.dtos.PrivilegeTemplateDTO;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import cn.lunadeer.dominion.utils.STUI.Button;
|
||||
import cn.lunadeer.dominion.utils.STUI.Line;
|
||||
import cn.lunadeer.dominion.utils.STUI.ListView;
|
||||
import cn.lunadeer.dominion.utils.STUI.View;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
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.commands.Helper.playerDominions;
|
||||
import static cn.lunadeer.dominion.controllers.Apis.getPlayerCurrentDominion;
|
||||
|
||||
public class TUIs {
|
||||
private static int getPage(String[] args) {
|
||||
int page = 1;
|
||||
if (args.length == 2) {
|
||||
try {
|
||||
page = Integer.parseInt(args[1]);
|
||||
} catch (Exception e) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return page;
|
||||
}
|
||||
|
||||
private static DominionDTO getDominion(Player player, String[] args) {
|
||||
if (args.length == 2) {
|
||||
return DominionDTO.select(args[1]);
|
||||
} else {
|
||||
return getPlayerCurrentDominion(player);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean noAuthToManage(Player player, DominionDTO dominion) {
|
||||
if (player.isOp()) return false;
|
||||
if (!dominion.getOwner().equals(player.getUniqueId())) {
|
||||
List<PlayerPrivilegeDTO> privileges = PlayerPrivilegeDTO.select(player.getUniqueId(), dominion.getId());
|
||||
for (PlayerPrivilegeDTO privilege : privileges) {
|
||||
if (privilege.getAdmin()) return false;
|
||||
}
|
||||
Notification.error(player, "你不是领地 " + dominion.getName() + " 的拥有者或管理员,无权访问此页面");
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static void printHelp(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
int page = getPage(args);
|
||||
ListView view = ListView.create(5, "/dominion help");
|
||||
view.title("领地插件命令帮助")
|
||||
.add(Line.create().append("打开交互菜单").append(Button.create("/dominion menu", "/dominion menu")))
|
||||
.add(Line.create().append("列出所有领地").append(Button.create("/dominion list", "/dominion list")))
|
||||
.add(Line.create().append("查看帮助").append(Button.create("/dominion help [页码]", "/dominion help 1")))
|
||||
.add(Line.create().append("查看领地信息").append(Button.create("/dominion info [领地名称]", "/dominion info")))
|
||||
.add(Line.create().append("查看领地权限信息").append(Button.create("/dominion flag_info <领地名称> [页码]", "/dominion flag_info")))
|
||||
.add(Line.create().append("管理领地").append("/dominion manage <领地名称>"))
|
||||
.add(Line.create().append("创建领地").append("/dominion create <领地名称>"))
|
||||
.add(Line.create().append("自动创建领地").append("/dominion auto_create <领地名称>"))
|
||||
.add(Line.create().append("创建子领地").append("/dominion create_sub <子领地名称> [父领地名称]"))
|
||||
.add(Line.create().append("自动创建子领地").append("/dominion auto_create_sub <子领地名称> [父领地名称]"))
|
||||
.add(Line.create().append("扩张领地").append("/dominion expand [大小] [领地名称]"))
|
||||
.add(Line.create().append("缩小领地").append("/dominion contract [大小] [领地名称]"))
|
||||
.add(Line.create().append("删除领地").append("/dominion delete <领地名称> [force]"))
|
||||
.add(Line.create().append("设置领地权限").append("/dominion set <权限名称> <true/false> [领地名称]"))
|
||||
.add(Line.create().append("设置玩家权限").append("/dominion set_privilege <玩家名称> <权限名称> <true/false> [领地名称]"))
|
||||
.add(Line.create().append("重置玩家权限").append("/dominion clear_privilege <玩家名称> [领地名称]"))
|
||||
.add(Line.create().append("查看领地玩家权限").append("/dominion privilege_list <领地名称> [页码]"))
|
||||
.add(Line.create().append("查看权限组").append("/dominion group [页码]"))
|
||||
.add(Line.create().append("查看权限组详情").append("/dominion group_detail <权限组名称> [页码]"))
|
||||
.add(Line.create().append("创建权限组").append("/dominion create_group <权限组名称>"))
|
||||
.add(Line.create().append("删除权限组").append("/dominion delete_group <权限组名称>"))
|
||||
.add(Line.create().append("设置权限组权限").append("/dominion set_group <权限组名称> <权限名称> <true/false>"))
|
||||
.add(Line.create().append("设置玩家在某个领地归属的权限组").append("/dominion add_player <玩家名称> <权限组名称> [领地名称]"))
|
||||
.add(Line.create().append("删除玩家在某个领地归属的权限组").append("/dominion remove_player <玩家名称> <权限组名称> [领地名称]"))
|
||||
.add(Line.create().append("查看领地的权限组").append("/dominion group_list <领地名称> [页码]"))
|
||||
.showOn(player, page);
|
||||
}
|
||||
|
||||
public static void sizeInfo(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
DominionDTO dominion = getDominion(player, args);
|
||||
if (dominion == null) {
|
||||
Notification.error(sender, "你不在任何领地内,请指定领地名称 /dominion info <领地名称>");
|
||||
return;
|
||||
}
|
||||
PlayerDTO owner = PlayerController.getPlayerDTO(dominion.getOwner());
|
||||
Integer x1 = dominion.getX1();
|
||||
Integer y1 = dominion.getY1();
|
||||
Integer z1 = dominion.getZ1();
|
||||
Integer x2 = dominion.getX2();
|
||||
Integer y2 = dominion.getY2();
|
||||
Integer z2 = dominion.getZ2();
|
||||
View view = View.create();
|
||||
view.title("领地 " + dominion.getName() + " 的尺寸信息")
|
||||
.subtitle("领地归属:" + owner.getLastKnownName())
|
||||
.addLine(Line.create().append("领地大小:").append((x2 - x1) + " x" + (y2 - y1) + " x" + (z2 - z1)))
|
||||
.addLine(Line.create().append("中心坐标:").append((x1 + (x2 - x1) / 2) + " " + (y1 + (y2 - y1) / 2) + " " + (z1 + (z2 - z1) / 2)))
|
||||
.addLine(Line.create().append("垂直高度:").append(String.valueOf(y2 - y1)))
|
||||
.addLine(Line.create().append("水平面积:").append(String.valueOf((x2 - x1) * (z2 - z1))))
|
||||
.addLine(Line.create().append("领地体积:").append(String.valueOf((x2 - x1) * (y2 - y1) * (z2 - z1))))
|
||||
.actionBar(Line.create()
|
||||
.append(Button.create("管理界面", "/dominion manage " + dominion.getName()))
|
||||
.append(Button.create("权限列表", "/dominion flag_info " + dominion.getName())))
|
||||
.showOn(player);
|
||||
}
|
||||
|
||||
public static void group(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
int page = getPage(args);
|
||||
List<PrivilegeTemplateDTO> template = GroupController.all(player);
|
||||
if (template.isEmpty()) {
|
||||
Notification.warn(sender, "没有任何权限组");
|
||||
return;
|
||||
}
|
||||
ListView view = ListView.create(5, "/dominion group");
|
||||
for (PrivilegeTemplateDTO dto : template) {
|
||||
view.add(Line.create().append(dto.getName()).append(Button.create("管理", "/dominion group_detail " + dto.getName())));
|
||||
}
|
||||
view.showOn(player, page);
|
||||
}
|
||||
|
||||
public static void groupDetail(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length < 2) {
|
||||
Notification.error(sender, "用法: /dominion group_detail <权限组名称> [页码]");
|
||||
return;
|
||||
}
|
||||
int page = 1;
|
||||
if (args.length == 3) {
|
||||
try {
|
||||
page = Integer.parseInt(args[2]);
|
||||
} catch (Exception e) {
|
||||
Notification.error(sender, "页码格式错误");
|
||||
return;
|
||||
}
|
||||
}
|
||||
PrivilegeTemplateDTO template = PrivilegeTemplateDTO.select(player.getUniqueId(), args[1]);
|
||||
if (template == null) {
|
||||
Notification.error(sender, "权限组 " + args[1] + " 不存在");
|
||||
return;
|
||||
}
|
||||
// todo group detail
|
||||
}
|
||||
|
||||
public static void menu(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
Line list = Line.create()
|
||||
.append(Button.create("我的领地", "/dominion list"))
|
||||
.append("查看我的领地");
|
||||
Line group = Line.create()
|
||||
.append(Button.create("权限组", "/dominion group"))
|
||||
.append("管理权限组");
|
||||
Line help = Line.create()
|
||||
.append(Button.create("指令帮助", "/dominion help"))
|
||||
.append("查看指令帮助");
|
||||
View view = View.create();
|
||||
view.title("Dominion 领地系统")
|
||||
.navigator(Line.create().append("主菜单"))
|
||||
.addLine(list)
|
||||
.addLine(group)
|
||||
.addLine(help)
|
||||
.showOn(player);
|
||||
}
|
||||
|
||||
public static void list(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
int page = getPage(args);
|
||||
ListView view = ListView.create(5, "/dominion list");
|
||||
List<String> dominions = playerDominions(sender);
|
||||
if (dominions.isEmpty()) {
|
||||
Notification.warn(sender, "你没有任何领地");
|
||||
return;
|
||||
}
|
||||
view.title("我的领地列表");
|
||||
view.navigator(Line.create().append(Button.create("主菜单", "/dominion menu")).append("我的领地"));
|
||||
for (String dominion : dominions) {
|
||||
TextComponent manage = Button.createGreen("管理", "/dominion manage " + dominion);
|
||||
TextComponent delete = Button.createRed("删除", "/dominion delete " + dominion);
|
||||
view.add(Line.create().append(dominion).append(manage).append(delete));
|
||||
}
|
||||
view.showOn(player, page);
|
||||
}
|
||||
|
||||
public static void flagInfo(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length < 2) {
|
||||
Notification.error(sender, "用法: /dominion flag_info <领地名称> [页码]");
|
||||
return;
|
||||
}
|
||||
DominionDTO dominion = DominionDTO.select(args[1]);
|
||||
if (dominion == null) {
|
||||
Notification.error(sender, "领地 " + args[1] + " 不存在");
|
||||
return;
|
||||
}
|
||||
int page = 1;
|
||||
if (args.length == 3) {
|
||||
try {
|
||||
page = Integer.parseInt(args[2]);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
ListView view = ListView.create(6, "/dominion flag_info " + dominion.getName());
|
||||
view.title("领地 " + dominion.getName() + " 默认权限")
|
||||
.navigator(Line.create()
|
||||
.append(Button.create("主菜单", "/dominion menu"))
|
||||
.append(Button.create("我的领地", "/dominion list"))
|
||||
.append(Button.create("管理界面", "/dominion manage " + dominion.getName()))
|
||||
.append("权限列表"));
|
||||
if (dominion.getAnchor()) {
|
||||
view.add(Line.create().append("重生锚").append(Button.createRed("禁用", "/dominion set anchor false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("重生锚").append(Button.createGreen("启用", "/dominion set anchor true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getAnimalKilling()) {
|
||||
view.add(Line.create().append("动物伤害").append(Button.createRed("禁用", "/dominion set animal_killing false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("动物伤害").append(Button.createGreen("启用", "/dominion set animal_killing true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getAnvil()) {
|
||||
view.add(Line.create().append("使用铁砧").append(Button.createRed("禁用", "/dominion set anvil false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("使用铁砧").append(Button.createGreen("启用", "/dominion set anvil true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getBeacon()) {
|
||||
view.add(Line.create().append("信标交互").append(Button.createRed("禁用", "/dominion set beacon false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("信标交互").append(Button.createGreen("启用", "/dominion set beacon true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getBed()) {
|
||||
view.add(Line.create().append("床交互").append(Button.createRed("禁用", "/dominion set bed false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("床交互").append(Button.createGreen("启用", "/dominion set bed true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getBrew()) {
|
||||
view.add(Line.create().append("使用酿造台").append(Button.createRed("禁用", "/dominion set brew false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("使用酿造台").append(Button.createGreen("启用", "/dominion set brew true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getButton()) {
|
||||
view.add(Line.create().append("使用按钮").append(Button.createRed("禁用", "/dominion set button false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("使用按钮").append(Button.createGreen("启用", "/dominion set button true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getCake()) {
|
||||
view.add(Line.create().append("使用蛋糕").append(Button.createRed("禁用", "/dominion set cake false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("使用蛋糕").append(Button.createGreen("启用", "/dominion set cake true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getContainer()) {
|
||||
view.add(Line.create().append("容器交互").append(Button.createRed("禁用", "/dominion set container false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("容器交互").append(Button.createGreen("启用", "/dominion set container true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getCraft()) {
|
||||
view.add(Line.create().append("合成").append(Button.createRed("禁用", "/dominion set craft false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("合成").append(Button.createGreen("启用", "/dominion set craft true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getCreeperExplode()) {
|
||||
view.add(Line.create().append("苦力怕爆炸").append(Button.createRed("禁用", "/dominion set creeper_explode false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("苦力怕爆炸").append(Button.createGreen("启用", "/dominion set creeper_explode true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getDiode()) {
|
||||
view.add(Line.create().append("中继器交互").append(Button.createRed("禁用", "/dominion set diode false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("中继器交互").append(Button.createGreen("启用", "/dominion set diode true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getDoor()) {
|
||||
view.add(Line.create().append("门交互").append(Button.createRed("禁用", "/dominion set door false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("门交互").append(Button.createGreen("启用", "/dominion set door true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getDye()) {
|
||||
view.add(Line.create().append("染色").append(Button.createRed("禁用", "/dominion set dye false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("染色").append(Button.createGreen("启用", "/dominion set dye true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getEgg()) {
|
||||
view.add(Line.create().append("投掷鸡蛋").append(Button.createRed("禁用", "/dominion set egg false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("投掷鸡蛋").append(Button.createGreen("启用", "/dominion set egg true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getEnchant()) {
|
||||
view.add(Line.create().append("附魔").append(Button.createRed("禁用", "/dominion set enchant false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("附魔").append(Button.createGreen("启用", "/dominion set enchant true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getEnderPearl()) {
|
||||
view.add(Line.create().append("末影珍珠").append(Button.createRed("禁用", "/dominion set ender_pearl false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("末影珍珠").append(Button.createGreen("启用", "/dominion set ender_pearl true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getFeed()) {
|
||||
view.add(Line.create().append("喂食").append(Button.createRed("禁用", "/dominion set feed false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("喂食").append(Button.createGreen("启用", "/dominion set feed true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getFireSpread()) {
|
||||
view.add(Line.create().append("火焰蔓延").append(Button.createRed("禁用", "/dominion set fire_spread false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("火焰蔓延").append(Button.createGreen("启用", "/dominion set fire_spread true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getFlowInProtection()) {
|
||||
view.add(Line.create().append("流体保护").append(Button.createRed("禁用", "/dominion set flow_in_protection false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("流体保护").append(Button.createGreen("启用", "/dominion set flow_in_protection true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getGlow()) {
|
||||
view.add(Line.create().append("发光").append(Button.createRed("禁用", "/dominion set glow false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("发光").append(Button.createGreen("启用", "/dominion set glow true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getGrow()) {
|
||||
view.add(Line.create().append("植物生长").append(Button.createRed("禁用", "/dominion set grow false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("植物生长").append(Button.createGreen("启用", "/dominion set grow true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getHoney()) {
|
||||
view.add(Line.create().append("蜂巢交互").append(Button.createRed("禁用", "/dominion set honey false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("蜂巢交互").append(Button.createGreen("启用", "/dominion set honey true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getHook()) {
|
||||
view.add(Line.create().append("钩子交互").append(Button.createRed("禁用", "/dominion set hook false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("钩子交互").append(Button.createGreen("启用", "/dominion set hook true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getIgnite()) {
|
||||
view.add(Line.create().append("点燃").append(Button.createRed("禁用", "/dominion set ignite false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("点燃").append(Button.createGreen("启用", "/dominion set ignite true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getMobKilling()) {
|
||||
view.add(Line.create().append("生物伤害").append(Button.createRed("禁用", "/dominion set mob_killing false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("生物伤害").append(Button.createGreen("启用", "/dominion set mob_killing true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getMove()) {
|
||||
view.add(Line.create().append("移动").append(Button.createRed("禁用", "/dominion set move false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("移动").append(Button.createGreen("启用", "/dominion set move true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getPlace()) {
|
||||
view.add(Line.create().append("放置").append(Button.createRed("禁用", "/dominion set place false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("放置").append(Button.createGreen("启用", "/dominion set place true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getPressure()) {
|
||||
view.add(Line.create().append("压力板交互").append(Button.createRed("禁用", "/dominion set pressure false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("压力板交互").append(Button.createGreen("启用", "/dominion set pressure true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getRiding()) {
|
||||
view.add(Line.create().append("骑乘").append(Button.createRed("禁用", "/dominion set riding false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("骑乘").append(Button.createGreen("启用", "/dominion set riding true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getShear()) {
|
||||
view.add(Line.create().append("剪羊毛").append(Button.createRed("禁用", "/dominion set shear false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("剪羊毛").append(Button.createGreen("启用", "/dominion set shear true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getShoot()) {
|
||||
view.add(Line.create().append("发射").append(Button.createRed("禁用", "/dominion set shoot false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("发射").append(Button.createGreen("启用", "/dominion set shoot true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getTntExplode()) {
|
||||
view.add(Line.create().append("TNT爆炸").append(Button.createRed("禁用", "/dominion set tnt_explode false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("TNT爆炸").append(Button.createGreen("启用", "/dominion set tnt_explode true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getTrade()) {
|
||||
view.add(Line.create().append("交易").append(Button.createRed("禁用", "/dominion set trade false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("交易").append(Button.createGreen("启用", "/dominion set trade true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getVehicleDestroy()) {
|
||||
view.add(Line.create().append("破坏载具").append(Button.createRed("禁用", "/dominion set vehicle_destroy false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("破坏载具").append(Button.createGreen("启用", "/dominion set vehicle_destroy true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getWitherSpawn()) {
|
||||
view.add(Line.create().append("凋零生成").append(Button.createRed("禁用", "/dominion set wither_spawn false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("凋零生成").append(Button.createGreen("启用", "/dominion set wither_spawn true " + dominion.getName())));
|
||||
}
|
||||
if (dominion.getHarvest()) {
|
||||
view.add(Line.create().append("收获").append(Button.createRed("禁用", "/dominion set harvest false " + dominion.getName())));
|
||||
} else {
|
||||
view.add(Line.create().append("收获").append(Button.createGreen("启用", "/dominion set harvest true " + dominion.getName())));
|
||||
}
|
||||
view.showOn(player, page);
|
||||
}
|
||||
|
||||
public static void manage(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
DominionDTO dominion = getDominion(player, args);
|
||||
if (dominion == null) {
|
||||
Notification.error(sender, "你不在任何领地内,请指定领地名称 /dominion manage <领地名称>");
|
||||
return;
|
||||
}
|
||||
if (noAuthToManage(player, dominion)) return;
|
||||
Line size_info = Line.create()
|
||||
.append(Button.create("尺寸信息", "/dominion info " + dominion.getName()))
|
||||
.append("查看领地尺寸信息");
|
||||
Line flag_info = Line.create()
|
||||
.append(Button.create("权限设置", "/dominion flag_info " + dominion.getName()))
|
||||
.append("管理领地默认权限");
|
||||
Line group_info = Line.create()
|
||||
.append(Button.create("权限组", "/dominion group_list " + dominion.getName()))
|
||||
.append("管理领地权限组");
|
||||
Line privilege_list = Line.create()
|
||||
.append(Button.create("玩家权限", "/dominion privilege_list " + dominion.getName()))
|
||||
.append("管理玩家特权");
|
||||
View view = View.create();
|
||||
view.title("领地 " + dominion.getName() + " 管理界面")
|
||||
.navigator(Line.create()
|
||||
.append(Button.create("主菜单", "/dominion menu"))
|
||||
.append(Button.create("我的领地", "/dominion list"))
|
||||
.append(dominion.getName()))
|
||||
.addLine(size_info)
|
||||
.addLine(flag_info)
|
||||
.addLine(group_info)
|
||||
.addLine(privilege_list)
|
||||
.showOn(player);
|
||||
}
|
||||
|
||||
public static void groupList(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length < 2) {
|
||||
Notification.error(sender, "用法: /dominion group_list <领地名称> [页码]");
|
||||
return;
|
||||
}
|
||||
DominionDTO dominion = DominionDTO.select(args[1]);
|
||||
if (dominion == null) {
|
||||
Notification.error(sender, "领地 " + args[1] + " 不存在");
|
||||
return;
|
||||
}
|
||||
if (noAuthToManage(player, dominion)) return;
|
||||
int page = 1;
|
||||
if (args.length == 3) {
|
||||
try {
|
||||
page = Integer.parseInt(args[2]);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
ListView view = ListView.create(6, "/dominion group_list " + dominion.getName());
|
||||
view.title("领地 " + dominion.getName() + " 权限组信息")
|
||||
.subtitle(Button.create("返回管理界面", "/dominion manage " + dominion.getName()));
|
||||
// todo
|
||||
view.showOn(player, page);
|
||||
}
|
||||
|
||||
public static void privilegeList(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length < 2) {
|
||||
Notification.error(sender, "用法: /dominion privilege_list <领地名称> [页码]");
|
||||
return;
|
||||
}
|
||||
DominionDTO dominion = DominionDTO.select(args[1]);
|
||||
if (dominion == null) {
|
||||
Notification.error(sender, "领地 " + args[1] + " 不存在");
|
||||
return;
|
||||
}
|
||||
if (noAuthToManage(player, dominion)) return;
|
||||
int page = 1;
|
||||
if (args.length == 3) {
|
||||
try {
|
||||
page = Integer.parseInt(args[2]);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
ListView view = ListView.create(6, "/dominion privilege_list " + dominion.getName());
|
||||
view.title("领地 " + dominion.getName() + " 玩家权限信息")
|
||||
.subtitle(Button.create("返回管理界面", "/dominion manage " + dominion.getName()));
|
||||
// todo
|
||||
view.showOn(player, page);
|
||||
}
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
package cn.lunadeer.dominion.commands;
|
||||
|
||||
import cn.lunadeer.dominion.controllers.DominionController;
|
||||
import cn.lunadeer.dominion.controllers.FlagsController;
|
||||
import cn.lunadeer.dominion.tuis.DominionFlagInfo;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -28,8 +28,19 @@ public class DominionFlag {
|
||||
if (FlagsController.setFlag(player, args[1], Boolean.parseBoolean(args[2]), args[3]) == null) {
|
||||
Notification.error(sender, "设置领地权限失败");
|
||||
}
|
||||
} else if (args.length == 5) {
|
||||
if (FlagsController.setFlag(player, args[1], Boolean.parseBoolean(args[2]), args[3]) == null) {
|
||||
Notification.error(sender, "设置领地权限失败");
|
||||
}
|
||||
String[] newArgs = new String[3];
|
||||
newArgs[0] = "flag_info";
|
||||
newArgs[1] = args[3];
|
||||
newArgs[2] = args[4];
|
||||
DominionFlagInfo.show(sender, newArgs);
|
||||
return;
|
||||
} else {
|
||||
Notification.error(sender, "用法: /dominion set <权限名称> <true/false> [领地名称]");
|
||||
return;
|
||||
}
|
||||
Notification.info(sender, "设置领地权限 " + args[1] + " 为 " + args[2]);
|
||||
}
|
||||
|
@ -4,16 +4,13 @@ import cn.lunadeer.dominion.Dominion;
|
||||
import cn.lunadeer.dominion.controllers.DominionController;
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.*;
|
||||
import static cn.lunadeer.dominion.controllers.Apis.getPlayerCurrentDominion;
|
||||
|
||||
public class DominionOperate {
|
||||
/**
|
||||
|
@ -1,17 +1,7 @@
|
||||
package cn.lunadeer.dominion.commands;
|
||||
|
||||
import cn.lunadeer.dominion.controllers.DominionController;
|
||||
import cn.lunadeer.dominion.controllers.GroupController;
|
||||
import cn.lunadeer.dominion.controllers.PlayerController;
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||
import cn.lunadeer.dominion.dtos.PrivilegeTemplateDTO;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import cn.lunadeer.dominion.utils.STUI.Button;
|
||||
import cn.lunadeer.dominion.utils.STUI.Line;
|
||||
import cn.lunadeer.dominion.utils.STUI.ListView;
|
||||
import cn.lunadeer.dominion.utils.STUI.View;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@ -20,7 +10,6 @@ import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
import static cn.lunadeer.dominion.controllers.Apis.getPlayerCurrentDominion;
|
||||
|
||||
public class Helper {
|
||||
|
||||
@ -33,20 +22,14 @@ public class Helper {
|
||||
"harvest");
|
||||
}
|
||||
|
||||
public static List<String> groupPrivileges() {
|
||||
public static List<String> playerPrivileges() {
|
||||
return Arrays.asList(
|
||||
"anchor", "animal_killing", "anvil", "beacon", "bed", "brew", "button", "cake", "container", "craft",
|
||||
"admin", "anchor", "animal_killing", "anvil", "beacon", "bed", "brew", "button", "cake", "container", "craft",
|
||||
"diode", "door", "dye", "egg", "enchant", "ender_pearl", "feed", "glow", "honey", "hook", "ignite",
|
||||
"mob_killing", "move", "place", "pressure", "riding", "shear", "shoot", "trade", "vehicle_destroy",
|
||||
"harvest");
|
||||
}
|
||||
|
||||
public static List<String> playerPrivileges() {
|
||||
List<String> privileges = new ArrayList<>(groupPrivileges());
|
||||
privileges.add("admin");
|
||||
return privileges;
|
||||
}
|
||||
|
||||
public static List<String> playerDominions(CommandSender sender) {
|
||||
List<String> dominions_name = new ArrayList<>();
|
||||
Player player = playerOnly(sender);
|
||||
@ -58,16 +41,5 @@ public class Helper {
|
||||
return dominions_name;
|
||||
}
|
||||
|
||||
public static List<String> playerGroups(CommandSender sender) {
|
||||
List<String> groups_name = new ArrayList<>();
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return groups_name;
|
||||
List<PrivilegeTemplateDTO> groups = GroupController.all(player);
|
||||
for (PrivilegeTemplateDTO group : groups) {
|
||||
groups_name.add(group.getName());
|
||||
}
|
||||
return groups_name;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
package cn.lunadeer.dominion.commands;
|
||||
|
||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||
import cn.lunadeer.dominion.tuis.PrivilegeInfo;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -21,20 +21,34 @@ public class PlayerPrivilege {
|
||||
public static void setPlayerPrivilege(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length != 4 && args.length != 5) {
|
||||
|
||||
if (args.length == 4) {
|
||||
if (!setPrivilege(player, args[1], args[2], Boolean.parseBoolean(args[3]))) {
|
||||
Notification.error(sender, "设置玩家权限失败");
|
||||
return;
|
||||
}
|
||||
} else if (args.length == 5) {
|
||||
if (!setPrivilege(player, args[1], args[2], Boolean.parseBoolean(args[3]), args[4])) {
|
||||
Notification.error(sender, "设置玩家权限失败");
|
||||
return;
|
||||
}
|
||||
} else if (args.length == 6) {
|
||||
if (!setPrivilege(player, args[1], args[2], Boolean.parseBoolean(args[3]), args[4])) {
|
||||
Notification.error(sender, "设置玩家权限失败");
|
||||
return;
|
||||
}
|
||||
String[] newArgs = new String[4];
|
||||
newArgs[0] = "privilege_info";
|
||||
newArgs[1] = args[1];
|
||||
newArgs[2] = args[4];
|
||||
newArgs[3] = args[5];
|
||||
PrivilegeInfo.show(sender, newArgs);
|
||||
return;
|
||||
} else {
|
||||
Notification.error(sender, "用法: /dominion set_privilege <玩家名称> <权限名称> <true/false> [领地名称]");
|
||||
return;
|
||||
}
|
||||
if (args.length == 4) {
|
||||
if (setPrivilege(player, args[1], args[2], Boolean.parseBoolean(args[3]))) {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (setPrivilege(player, args[1], args[2], Boolean.parseBoolean(args[3]), args[4])) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
Notification.error(sender, "设置玩家权限失败");
|
||||
Notification.info(sender, "设置玩家权限 " + args[1] + " 为 " + args[2]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,107 +0,0 @@
|
||||
package cn.lunadeer.dominion.commands;
|
||||
|
||||
import cn.lunadeer.dominion.controllers.FlagsController;
|
||||
import cn.lunadeer.dominion.controllers.GroupController;
|
||||
import cn.lunadeer.dominion.controllers.PlayerController;
|
||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
|
||||
public class PrivilegeGroup {
|
||||
|
||||
/**
|
||||
* 创建权限组
|
||||
* /dominion create_group <权限组名称>
|
||||
*
|
||||
* @param sender 命令发送者
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void createGroup(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length != 2) {
|
||||
Notification.error(sender, "用法: /dominion create_group <权限组名称>");
|
||||
return;
|
||||
}
|
||||
GroupController.create(player, args[1]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除权限组
|
||||
* /dominion delete_group <权限组名称>
|
||||
*
|
||||
* @param sender 命令发送者
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void deleteGroup(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length != 2) {
|
||||
Notification.error(sender, "用法: /dominion delete_group <权限组名称>");
|
||||
return;
|
||||
}
|
||||
GroupController.delete(player, args[1]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置权限组权限
|
||||
* /dominion set_group <权限组名称> <权限名称> <true/false>
|
||||
*
|
||||
* @param sender 命令发送者
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void setDominionFlag(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length != 4) {
|
||||
Notification.error(sender, "用法: /dominion set_group <权限组名称> <权限名称> <true/false>");
|
||||
return;
|
||||
}
|
||||
GroupController.setFlag(player, args[1], args[2], Boolean.parseBoolean(args[3]));
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置玩家在某个领地归属的权限组
|
||||
* /dominion add_player <玩家名称> <权限组名称> [领地名称]
|
||||
*
|
||||
* @param sender 命令发送者
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void addPlayer(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length != 3 && args.length != 4) {
|
||||
Notification.error(sender, "用法: /dominion add_player <玩家名称> <权限组名称> [领地名称]");
|
||||
return;
|
||||
}
|
||||
if (args.length == 3) {
|
||||
GroupController.addPlayer(player, args[1], args[2]);
|
||||
} else {
|
||||
GroupController.addPlayer(player, args[1], args[2], args[3]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除玩家在某个领地归属的权限组
|
||||
* /dominion remove_player <玩家名称> <权限组名称> [领地名称]
|
||||
*
|
||||
* @param sender 命令发送者
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void removePlayer(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length != 3 && args.length != 4) {
|
||||
Notification.error(sender, "用法: /dominion remove_player <玩家名称> <权限组名称> [领地名称]");
|
||||
return;
|
||||
}
|
||||
if (args.length == 3) {
|
||||
GroupController.removePlayer(player, args[1], args[2]);
|
||||
} else {
|
||||
GroupController.removePlayer(player, args[1], args[2], args[3]);
|
||||
}
|
||||
}
|
||||
}
|
@ -2,7 +2,6 @@ package cn.lunadeer.dominion.controllers;
|
||||
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||
import cn.lunadeer.dominion.dtos.PrivilegeTemplateDTO;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.BlockFace;
|
||||
@ -22,16 +21,14 @@ public class Apis {
|
||||
public static boolean noAuthToChangeFlags(Player player, DominionDTO dominion) {
|
||||
if (player.isOp()) return false;
|
||||
if (!dominion.getOwner().equals(player.getUniqueId())) {
|
||||
List<PlayerPrivilegeDTO> privileges = PlayerPrivilegeDTO.select(player.getUniqueId(), dominion.getId());
|
||||
for (PlayerPrivilegeDTO privilege : privileges) {
|
||||
if (privilege.getAdmin()) return false;
|
||||
}
|
||||
Notification.error(player, "你不是领地 " + dominion.getName() + " 的拥有者或管理员,无法执行此操作");
|
||||
PlayerPrivilegeDTO privileges = PlayerPrivilegeDTO.select(player.getUniqueId(), dominion.getId());
|
||||
if (privileges == null || !privileges.getAdmin()) {
|
||||
Notification.error(player, "你不是领地 " + dominion.getName() + " 的拥有者或管理员,无权修改权限");
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取玩家当前所在的领地
|
||||
@ -57,108 +54,6 @@ public class Apis {
|
||||
return getPlayerCurrentDominion(player, true);
|
||||
}
|
||||
|
||||
|
||||
public static boolean updateTemplateFlag(PrivilegeTemplateDTO privilege, String flag, boolean value) {
|
||||
switch (flag) {
|
||||
case "anchor":
|
||||
privilege.setAnchor(value);
|
||||
break;
|
||||
case "animal_killing":
|
||||
privilege.setAnimalKilling(value);
|
||||
break;
|
||||
case "anvil":
|
||||
privilege.setAnvil(value);
|
||||
break;
|
||||
case "beacon":
|
||||
privilege.setBeacon(value);
|
||||
break;
|
||||
case "bed":
|
||||
privilege.setBed(value);
|
||||
break;
|
||||
case "brew":
|
||||
privilege.setBrew(value);
|
||||
break;
|
||||
case "button":
|
||||
privilege.setButton(value);
|
||||
break;
|
||||
case "cake":
|
||||
privilege.setCake(value);
|
||||
break;
|
||||
case "container":
|
||||
privilege.setContainer(value);
|
||||
break;
|
||||
case "craft":
|
||||
privilege.setCraft(value);
|
||||
break;
|
||||
case "diode":
|
||||
privilege.setDiode(value);
|
||||
break;
|
||||
case "door":
|
||||
privilege.setDoor(value);
|
||||
break;
|
||||
case "dye":
|
||||
privilege.setDye(value);
|
||||
break;
|
||||
case "egg":
|
||||
privilege.setEgg(value);
|
||||
break;
|
||||
case "enchant":
|
||||
privilege.setEnchant(value);
|
||||
break;
|
||||
case "ender_pearl":
|
||||
privilege.setEnderPearl(value);
|
||||
break;
|
||||
case "feed":
|
||||
privilege.setFeed(value);
|
||||
break;
|
||||
case "glow":
|
||||
privilege.setGlow(value);
|
||||
break;
|
||||
case "honey":
|
||||
privilege.setHoney(value);
|
||||
break;
|
||||
case "hook":
|
||||
privilege.setHook(value);
|
||||
break;
|
||||
case "ignite":
|
||||
privilege.setIgnite(value);
|
||||
break;
|
||||
case "mob_killing":
|
||||
privilege.setMobKilling(value);
|
||||
break;
|
||||
case "move":
|
||||
privilege.setMove(value);
|
||||
break;
|
||||
case "place":
|
||||
privilege.setPlace(value);
|
||||
break;
|
||||
case "pressure":
|
||||
privilege.setPressure(value);
|
||||
break;
|
||||
case "riding":
|
||||
privilege.setRiding(value);
|
||||
break;
|
||||
case "shear":
|
||||
privilege.setShear(value);
|
||||
break;
|
||||
case "shoot":
|
||||
privilege.setShoot(value);
|
||||
break;
|
||||
case "trade":
|
||||
privilege.setTrade(value);
|
||||
break;
|
||||
case "vehicle_destroy":
|
||||
privilege.setVehicleDestroy(value);
|
||||
break;
|
||||
case "harvest":
|
||||
privilege.setHarvest(value);
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static BlockFace getFace(Player player) {
|
||||
float yaw = player.getYaw();
|
||||
float pitch = player.getPitch();
|
||||
|
@ -3,7 +3,6 @@ package cn.lunadeer.dominion.controllers;
|
||||
import cn.lunadeer.dominion.Dominion;
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import cn.lunadeer.dominion.utils.STUI.Pagination;
|
||||
import cn.lunadeer.dominion.utils.Time;
|
||||
import cn.lunadeer.dominion.utils.XLogger;
|
||||
import org.bukkit.Location;
|
||||
|
@ -1,166 +0,0 @@
|
||||
package cn.lunadeer.dominion.controllers;
|
||||
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||
import cn.lunadeer.dominion.dtos.PrivilegeTemplateDTO;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static cn.lunadeer.dominion.controllers.Apis.noAuthToChangeFlags;
|
||||
|
||||
public class GroupController {
|
||||
|
||||
public static List<PrivilegeTemplateDTO> all(Player owner) {
|
||||
return PrivilegeTemplateDTO.selectGroup(owner.getUniqueId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建权限组
|
||||
*
|
||||
* @param operator 操作者
|
||||
* @param name 权限组名称
|
||||
* @return 是否创建成功
|
||||
*/
|
||||
public static PrivilegeTemplateDTO create(Player operator, String name) {
|
||||
PrivilegeTemplateDTO template = new PrivilegeTemplateDTO(name, operator.getUniqueId(), true);
|
||||
template = PrivilegeTemplateDTO.insert(template);
|
||||
if (template == null) {
|
||||
Notification.error(operator, "创建权限组失败");
|
||||
return null;
|
||||
}
|
||||
return template;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除权限组
|
||||
*
|
||||
* @param operator 操作者
|
||||
* @param name 权限组名称
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
public static boolean delete(Player operator, String name) {
|
||||
PrivilegeTemplateDTO.delete(operator.getUniqueId(), name);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置权限组的权限
|
||||
*
|
||||
* @param operator 操作者
|
||||
* @param name 权限组名称
|
||||
* @param flag 权限名称
|
||||
* @param value 权限值
|
||||
* @return 是否设置成功
|
||||
*/
|
||||
public static boolean setFlag(Player operator, String name, String flag, boolean value) {
|
||||
PrivilegeTemplateDTO privilege = PrivilegeTemplateDTO.select(operator.getUniqueId(), name);
|
||||
if (privilege == null) {
|
||||
Notification.error(operator, "没有找到权限组 " + name);
|
||||
return false;
|
||||
}
|
||||
if (!Apis.updateTemplateFlag(privilege, flag, value)) {
|
||||
Notification.error(operator, "未知的权限组权限 " + flag);
|
||||
return false;
|
||||
}
|
||||
Notification.info(operator, "设置权限组 " + name + " 权限 " + flag + " 为 " + value);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加玩家到权限组
|
||||
*
|
||||
* @param operator 操作者
|
||||
* @param player_name 玩家
|
||||
* @param groupName 权限组名称
|
||||
* @return 是否添加成功
|
||||
*/
|
||||
public static boolean addPlayer(Player operator, String player_name, String groupName) {
|
||||
DominionDTO dominion = Apis.getPlayerCurrentDominion(operator);
|
||||
if (dominion == null) return false;
|
||||
return addPlayer(operator, player_name, groupName, dominion.getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加玩家到权限组
|
||||
*
|
||||
* @param operator 操作者
|
||||
* @param player_name 玩家
|
||||
* @param groupName 权限组名称
|
||||
* @param dominionName 领地名称
|
||||
* @return 是否添加成功
|
||||
*/
|
||||
public static boolean addPlayer(Player operator, String player_name, String groupName, String dominionName) {
|
||||
PrivilegeTemplateDTO template = PrivilegeTemplateDTO.select(operator.getUniqueId(), groupName);
|
||||
if (template == null) {
|
||||
Notification.error(operator, "没有找到权限组 " + groupName + " 或者需要先创建权限组");
|
||||
return false;
|
||||
}
|
||||
PlayerDTO player = PlayerDTO.select(player_name);
|
||||
if (player == null) {
|
||||
Notification.error(operator, "玩家 " + player_name + " 不存在或没有登录过");
|
||||
return false;
|
||||
}
|
||||
DominionDTO dominion = DominionDTO.select(dominionName);
|
||||
if (dominion == null) {
|
||||
Notification.error(operator, "领地 " + dominionName + " 不存在");
|
||||
return false;
|
||||
}
|
||||
if (noAuthToChangeFlags(operator, dominion)) return false;
|
||||
PlayerPrivilegeDTO privilege = new PlayerPrivilegeDTO(player.getUuid(), false, dominion.getId(), template.getId());
|
||||
privilege = PlayerPrivilegeDTO.insert(privilege);
|
||||
if (privilege == null) {
|
||||
Notification.error(operator, "设置玩家" + player.getLastKnownName() + "在领地 " + dominionName + " 归属权限组 " + groupName + " 失败");
|
||||
return false;
|
||||
}
|
||||
Notification.info(operator, "设置玩家" + player.getLastKnownName() + "在领地 " + dominionName + " 归属权限组 " + groupName);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 从权限组中移除玩家
|
||||
*
|
||||
* @param operator 操作者
|
||||
* @param player_name 玩家
|
||||
* @param groupName 权限组名称
|
||||
* @return 是否移除成功
|
||||
*/
|
||||
public static boolean removePlayer(Player operator, String player_name, String groupName) {
|
||||
DominionDTO dominion = Apis.getPlayerCurrentDominion(operator);
|
||||
if (dominion == null) return false;
|
||||
return removePlayer(operator, player_name, groupName, dominion.getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* 从权限组中移除玩家
|
||||
*
|
||||
* @param operator 操作者
|
||||
* @param player_name 玩家
|
||||
* @param groupName 权限组名称
|
||||
* @param dominionName 领地名称
|
||||
* @return 是否移除成功
|
||||
*/
|
||||
public static boolean removePlayer(Player operator, String player_name, String groupName, String dominionName) {
|
||||
PrivilegeTemplateDTO template = PrivilegeTemplateDTO.select(operator.getUniqueId(), groupName);
|
||||
if (template == null) {
|
||||
Notification.error(operator, "没有找到权限组 " + groupName);
|
||||
return false;
|
||||
}
|
||||
DominionDTO dominion = DominionDTO.select(dominionName);
|
||||
if (dominion == null) {
|
||||
Notification.error(operator, "领地 " + dominionName + " 不存在");
|
||||
return false;
|
||||
}
|
||||
if (noAuthToChangeFlags(operator, dominion)) return false;
|
||||
PlayerDTO player = PlayerDTO.select(player_name);
|
||||
if (player == null) {
|
||||
Notification.error(operator, "玩家 " + player_name + " 不存在或没有登录过");
|
||||
return false;
|
||||
}
|
||||
PlayerPrivilegeDTO.delete(player.getUuid(), dominion.getId(), template.getId());
|
||||
return true;
|
||||
}
|
||||
}
|
@ -3,14 +3,9 @@ package cn.lunadeer.dominion.controllers;
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||
import cn.lunadeer.dominion.dtos.PrivilegeTemplateDTO;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import cn.lunadeer.dominion.utils.XLogger;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
import static cn.lunadeer.dominion.controllers.Apis.noAuthToChangeFlags;
|
||||
@ -50,13 +45,7 @@ public class PrivilegeController {
|
||||
Notification.error(operator, "玩家 " + player_name + " 不存在或没有登录过");
|
||||
return false;
|
||||
}
|
||||
List<PrivilegeTemplateDTO> templates = getPlayerPrivilegeTemplates(player.getUuid(), dominion.getId());
|
||||
if (templates.size() < 1) {
|
||||
return true;
|
||||
}
|
||||
for (PrivilegeTemplateDTO template : templates) {
|
||||
PlayerPrivilegeDTO.delete(player.getUuid(), dominion.getId(), template.getId());
|
||||
}
|
||||
PlayerPrivilegeDTO.delete(player.getUuid(), dominion.getId());
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -97,69 +86,121 @@ public class PrivilegeController {
|
||||
Notification.error(operator, "玩家 " + player_name + " 不存在或没有登录过");
|
||||
return false;
|
||||
}
|
||||
List<PrivilegeTemplateDTO> templates = getPlayerPrivilegeTemplates(player.getUuid(), dominion.getId());
|
||||
if (templates.size() < 1) {
|
||||
PrivilegeTemplateDTO template = createPlayerPrivilege(operator, player.getUuid(), dominion.getId());
|
||||
if (template == null) return false;
|
||||
templates.add(template);
|
||||
PlayerPrivilegeDTO privilege = PlayerPrivilegeDTO.select(player.getUuid(), dominion.getId());
|
||||
if (privilege == null) {
|
||||
privilege = createPlayerPrivilege(operator, player.getUuid(), dominion.getId());
|
||||
if (privilege == null) return false;
|
||||
}
|
||||
if (templates.size() > 1) {
|
||||
Notification.error(operator, "玩家特权拥有多个权限模板,建议使用 clear_privilege 清空此玩家特权后重新设置");
|
||||
XLogger.warn("玩家特权拥有多个权限模板,使用搜索到的第一个 id: " + templates.get(0).getId() + " 进行操作,请检查数据库");
|
||||
XLogger.warn("其他权限模板如下:");
|
||||
for (int i = 1; i < templates.size(); i++) {
|
||||
XLogger.warn(" id: " + templates.get(i).getId());
|
||||
}
|
||||
}
|
||||
PrivilegeTemplateDTO privilege = templates.get(0);
|
||||
if (Objects.equals(flag, "admin")) {
|
||||
List<PlayerPrivilegeDTO> privileges = PlayerPrivilegeDTO.select(player.getUuid(), dominion.getId());
|
||||
for (PlayerPrivilegeDTO p : privileges) {
|
||||
if (p.getPrivilegeTemplateID().equals(privilege.getId())) {
|
||||
p = p.setAdmin(value);
|
||||
if (p == null) {
|
||||
Notification.error(operator, "更新玩家特权失败");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Notification.error(operator, "没有找到玩家权限关联数据");
|
||||
return false;
|
||||
}
|
||||
if (!Apis.updateTemplateFlag(privilege, flag, value)) {
|
||||
switch (flag) {
|
||||
case "anchor":
|
||||
privilege.setAnchor(value);
|
||||
break;
|
||||
case "animal_killing":
|
||||
privilege.setAnimalKilling(value);
|
||||
break;
|
||||
case "anvil":
|
||||
privilege.setAnvil(value);
|
||||
break;
|
||||
case "beacon":
|
||||
privilege.setBeacon(value);
|
||||
break;
|
||||
case "bed":
|
||||
privilege.setBed(value);
|
||||
break;
|
||||
case "brew":
|
||||
privilege.setBrew(value);
|
||||
break;
|
||||
case "button":
|
||||
privilege.setButton(value);
|
||||
break;
|
||||
case "cake":
|
||||
privilege.setCake(value);
|
||||
break;
|
||||
case "container":
|
||||
privilege.setContainer(value);
|
||||
break;
|
||||
case "craft":
|
||||
privilege.setCraft(value);
|
||||
break;
|
||||
case "diode":
|
||||
privilege.setDiode(value);
|
||||
break;
|
||||
case "door":
|
||||
privilege.setDoor(value);
|
||||
break;
|
||||
case "dye":
|
||||
privilege.setDye(value);
|
||||
break;
|
||||
case "egg":
|
||||
privilege.setEgg(value);
|
||||
break;
|
||||
case "enchant":
|
||||
privilege.setEnchant(value);
|
||||
break;
|
||||
case "ender_pearl":
|
||||
privilege.setEnderPearl(value);
|
||||
break;
|
||||
case "feed":
|
||||
privilege.setFeed(value);
|
||||
break;
|
||||
case "glow":
|
||||
privilege.setGlow(value);
|
||||
break;
|
||||
case "honey":
|
||||
privilege.setHoney(value);
|
||||
break;
|
||||
case "hook":
|
||||
privilege.setHook(value);
|
||||
break;
|
||||
case "ignite":
|
||||
privilege.setIgnite(value);
|
||||
break;
|
||||
case "mob_killing":
|
||||
privilege.setMobKilling(value);
|
||||
break;
|
||||
case "move":
|
||||
privilege.setMove(value);
|
||||
break;
|
||||
case "place":
|
||||
privilege.setPlace(value);
|
||||
break;
|
||||
case "pressure":
|
||||
privilege.setPressure(value);
|
||||
break;
|
||||
case "riding":
|
||||
privilege.setRiding(value);
|
||||
break;
|
||||
case "shear":
|
||||
privilege.setShear(value);
|
||||
break;
|
||||
case "shoot":
|
||||
privilege.setShoot(value);
|
||||
break;
|
||||
case "trade":
|
||||
privilege.setTrade(value);
|
||||
break;
|
||||
case "vehicle_destroy":
|
||||
privilege.setVehicleDestroy(value);
|
||||
break;
|
||||
case "harvest":
|
||||
privilege.setHarvest(value);
|
||||
break;
|
||||
default:
|
||||
Notification.error(operator, "未知的领地权限 " + flag);
|
||||
return false;
|
||||
}
|
||||
Notification.info(operator, "设置玩家在领地 " + dominionName + " 的权限 " + flag + " 为 " + value);
|
||||
return true;
|
||||
}
|
||||
|
||||
private static PrivilegeTemplateDTO createPlayerPrivilege(Player operator, UUID player, Integer domID) {
|
||||
PrivilegeTemplateDTO template = new PrivilegeTemplateDTO(player.toString(), operator.getUniqueId(), false);
|
||||
template = PrivilegeTemplateDTO.insert(template);
|
||||
if (template == null) {
|
||||
Notification.error(operator, "创建玩家特权失败");
|
||||
return null;
|
||||
}
|
||||
PlayerPrivilegeDTO privilege = new PlayerPrivilegeDTO(player, false, domID, template.getId());
|
||||
private static PlayerPrivilegeDTO createPlayerPrivilege(Player operator, UUID player, Integer domID) {
|
||||
PlayerPrivilegeDTO privilege = new PlayerPrivilegeDTO(player, false, domID);
|
||||
privilege = PlayerPrivilegeDTO.insert(privilege);
|
||||
if (privilege == null) {
|
||||
Notification.error(operator, "创建玩家特权关联玩家时失败");
|
||||
PrivilegeTemplateDTO.delete(template);
|
||||
return null;
|
||||
}
|
||||
return template;
|
||||
return privilege;
|
||||
}
|
||||
|
||||
private static List<PrivilegeTemplateDTO> getPlayerPrivilegeTemplates(UUID player, Integer domID) {
|
||||
List<PlayerPrivilegeDTO> privileges = PlayerPrivilegeDTO.select(player, domID);
|
||||
List<PrivilegeTemplateDTO> templates = new ArrayList<>();
|
||||
for (PlayerPrivilegeDTO privilege : privileges) {
|
||||
PrivilegeTemplateDTO template = PrivilegeTemplateDTO.select(privilege.getPrivilegeTemplateID());
|
||||
if (template == null) continue;
|
||||
if (template.getGroup()) continue; // 跳过组权限
|
||||
templates.add(template);
|
||||
}
|
||||
return templates;
|
||||
}
|
||||
}
|
||||
|
@ -11,52 +11,70 @@ import java.util.UUID;
|
||||
public class PlayerPrivilegeDTO {
|
||||
|
||||
public static PlayerPrivilegeDTO insert(PlayerPrivilegeDTO player) {
|
||||
String sql = "INSERT INTO player_privilege (player_uuid, admin, dom_id, privilege_template_id) VALUES (" +
|
||||
String sql = "INSERT INTO player_privilege (player_uuid, admin, dom_id) VALUES (" +
|
||||
"'" + player.getPlayerUUID() + "', " +
|
||||
player.getAdmin() + ", " +
|
||||
player.getDomID() + ", " +
|
||||
player.getPrivilegeTemplateID() + ")" +
|
||||
"RETURNING *;";
|
||||
player.getDomID() +
|
||||
") RETURNING *;";
|
||||
List<PlayerPrivilegeDTO> players = query(sql);
|
||||
if (players.size() == 0) return null;
|
||||
return players.get(0);
|
||||
}
|
||||
|
||||
public static List<PlayerPrivilegeDTO> select(UUID playerUUID, Integer dom_id) {
|
||||
public static PlayerPrivilegeDTO select(UUID playerUUID, Integer dom_id) {
|
||||
String sql = "SELECT * FROM player_privilege WHERE player_uuid = '" + playerUUID + "' " +
|
||||
"AND dom_id = " + dom_id + ";";
|
||||
return query(sql);
|
||||
List<PlayerPrivilegeDTO> p = query(sql);
|
||||
if (p.size() == 0) return null;
|
||||
return p.get(0);
|
||||
}
|
||||
|
||||
public static PlayerPrivilegeDTO select(Integer dom_id) {
|
||||
public static List<PlayerPrivilegeDTO> select(Integer dom_id) {
|
||||
String sql = "SELECT * FROM player_privilege WHERE dom_id = " + dom_id + ";";
|
||||
List<PlayerPrivilegeDTO> players = query(sql);
|
||||
if (players.size() == 0) return null;
|
||||
return players.get(0);
|
||||
}
|
||||
|
||||
public static void delete(UUID player, Integer domID, Integer privilegeTemplateID) {
|
||||
String sql = "DELETE FROM player_privilege WHERE player_uuid = '" + player + "' " +
|
||||
"AND dom_id = " + domID + " " +
|
||||
"AND privilege_template_id = " + privilegeTemplateID + ";";
|
||||
query(sql);
|
||||
}
|
||||
|
||||
public static void delete(UUID player) {
|
||||
String sql = "DELETE FROM player_privilege WHERE player_uuid = '" + player + "';";
|
||||
query(sql);
|
||||
}
|
||||
|
||||
public static List<PlayerPrivilegeDTO> selectAll() {
|
||||
String sql = "SELECT * FROM player_privilege;";
|
||||
return query(sql);
|
||||
}
|
||||
|
||||
public static void delete(UUID player, Integer domID) {
|
||||
String sql = "DELETE FROM player_privilege WHERE player_uuid = '" + player + "' " +
|
||||
"AND dom_id = " + domID + ";";
|
||||
query(sql);
|
||||
}
|
||||
|
||||
private final Integer id;
|
||||
private final UUID playerUUID;
|
||||
private Boolean admin;
|
||||
private final Integer domID;
|
||||
private final Integer privilegeTemplateID;
|
||||
private Boolean anchor;
|
||||
private Boolean animalKilling;
|
||||
private Boolean anvil;
|
||||
private Boolean beacon;
|
||||
private Boolean bed;
|
||||
private Boolean brew;
|
||||
private Boolean button;
|
||||
private Boolean cake;
|
||||
private Boolean container;
|
||||
private Boolean craft;
|
||||
private Boolean diode;
|
||||
private Boolean door;
|
||||
private Boolean dye;
|
||||
private Boolean egg;
|
||||
private Boolean enchant;
|
||||
private Boolean enderPearl;
|
||||
private Boolean feed;
|
||||
private Boolean glow;
|
||||
private Boolean honey;
|
||||
private Boolean hook;
|
||||
private Boolean ignite;
|
||||
private Boolean mobKilling;
|
||||
private Boolean move;
|
||||
private Boolean place;
|
||||
private Boolean pressure;
|
||||
private Boolean riding;
|
||||
private Boolean shear;
|
||||
private Boolean shoot;
|
||||
private Boolean trade;
|
||||
private Boolean vehicleDestroy;
|
||||
private Boolean harvest;
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
@ -74,8 +92,283 @@ public class PlayerPrivilegeDTO {
|
||||
return domID;
|
||||
}
|
||||
|
||||
public Integer getPrivilegeTemplateID() {
|
||||
return privilegeTemplateID;
|
||||
public Boolean getAnchor() {
|
||||
return anchor;
|
||||
}
|
||||
|
||||
public Boolean getAnimalKilling() {
|
||||
return animalKilling;
|
||||
}
|
||||
|
||||
public Boolean getAnvil() {
|
||||
return anvil;
|
||||
}
|
||||
|
||||
public Boolean getBeacon() {
|
||||
return beacon;
|
||||
}
|
||||
|
||||
public Boolean getBed() {
|
||||
return bed;
|
||||
}
|
||||
|
||||
public Boolean getBrew() {
|
||||
return brew;
|
||||
}
|
||||
|
||||
public Boolean getButton() {
|
||||
return button;
|
||||
}
|
||||
|
||||
public Boolean getCake() {
|
||||
return cake;
|
||||
}
|
||||
|
||||
public Boolean getContainer() {
|
||||
return container;
|
||||
}
|
||||
|
||||
public Boolean getCraft() {
|
||||
return craft;
|
||||
}
|
||||
|
||||
public Boolean getDiode() {
|
||||
return diode;
|
||||
}
|
||||
|
||||
public Boolean getDoor() {
|
||||
return door;
|
||||
}
|
||||
|
||||
public Boolean getDye() {
|
||||
return dye;
|
||||
}
|
||||
|
||||
public Boolean getEgg() {
|
||||
return egg;
|
||||
}
|
||||
|
||||
public Boolean getEnchant() {
|
||||
return enchant;
|
||||
}
|
||||
|
||||
public Boolean getEnderPearl() {
|
||||
return enderPearl;
|
||||
}
|
||||
|
||||
public Boolean getFeed() {
|
||||
return feed;
|
||||
}
|
||||
|
||||
public Boolean getGlow() {
|
||||
return glow;
|
||||
}
|
||||
|
||||
public Boolean getHoney() {
|
||||
return honey;
|
||||
}
|
||||
|
||||
public Boolean getHook() {
|
||||
return hook;
|
||||
}
|
||||
|
||||
public Boolean getIgnite() {
|
||||
return ignite;
|
||||
}
|
||||
|
||||
public Boolean getMobKilling() {
|
||||
return mobKilling;
|
||||
}
|
||||
|
||||
public Boolean getMove() {
|
||||
return move;
|
||||
}
|
||||
|
||||
public Boolean getPlace() {
|
||||
return place;
|
||||
}
|
||||
|
||||
public Boolean getPressure() {
|
||||
return pressure;
|
||||
}
|
||||
|
||||
public Boolean getRiding() {
|
||||
return riding;
|
||||
}
|
||||
|
||||
public Boolean getShear() {
|
||||
return shear;
|
||||
}
|
||||
|
||||
public Boolean getShoot() {
|
||||
return shoot;
|
||||
}
|
||||
|
||||
public Boolean getTrade() {
|
||||
return trade;
|
||||
}
|
||||
|
||||
public Boolean getVehicleDestroy() {
|
||||
return vehicleDestroy;
|
||||
}
|
||||
|
||||
public Boolean getHarvest() {
|
||||
return harvest;
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setAnchor(Boolean anchor) {
|
||||
this.anchor = anchor;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setAnimalKilling(Boolean animalKilling) {
|
||||
this.animalKilling = animalKilling;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setAnvil(Boolean anvil) {
|
||||
this.anvil = anvil;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setBeacon(Boolean beacon) {
|
||||
this.beacon = beacon;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setBed(Boolean bed) {
|
||||
this.bed = bed;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setBrew(Boolean brew) {
|
||||
this.brew = brew;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setButton(Boolean button) {
|
||||
this.button = button;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setCake(Boolean cake) {
|
||||
this.cake = cake;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setContainer(Boolean container) {
|
||||
this.container = container;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setCraft(Boolean craft) {
|
||||
this.craft = craft;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setDiode(Boolean diode) {
|
||||
this.diode = diode;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setDoor(Boolean door) {
|
||||
this.door = door;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setDye(Boolean dye) {
|
||||
this.dye = dye;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setEgg(Boolean egg) {
|
||||
this.egg = egg;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setEnchant(Boolean enchant) {
|
||||
this.enchant = enchant;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setEnderPearl(Boolean enderPearl) {
|
||||
this.enderPearl = enderPearl;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setFeed(Boolean feed) {
|
||||
this.feed = feed;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setGlow(Boolean glow) {
|
||||
this.glow = glow;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setHoney(Boolean honey) {
|
||||
this.honey = honey;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setHook(Boolean hook) {
|
||||
this.hook = hook;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setIgnite(Boolean ignite) {
|
||||
this.ignite = ignite;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setMobKilling(Boolean mobKilling) {
|
||||
this.mobKilling = mobKilling;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setMove(Boolean move) {
|
||||
this.move = move;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setPlace(Boolean place) {
|
||||
this.place = place;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setPressure(Boolean pressure) {
|
||||
this.pressure = pressure;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setRiding(Boolean riding) {
|
||||
this.riding = riding;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setShear(Boolean shear) {
|
||||
this.shear = shear;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setShoot(Boolean shoot) {
|
||||
this.shoot = shoot;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setTrade(Boolean trade) {
|
||||
this.trade = trade;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setVehicleDestroy(Boolean vehicleDestroy) {
|
||||
this.vehicleDestroy = vehicleDestroy;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setHarvest(Boolean harvest) {
|
||||
this.harvest = harvest;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO setAdmin(Boolean admin) {
|
||||
@ -83,16 +376,60 @@ public class PlayerPrivilegeDTO {
|
||||
return update(this);
|
||||
}
|
||||
|
||||
private PlayerPrivilegeDTO(Integer id, UUID playerUUID, Boolean admin, Integer domID, Integer privilegeTemplateID) {
|
||||
private PlayerPrivilegeDTO(Integer id, UUID playerUUID, Boolean admin, Integer domID,
|
||||
Boolean anchor, Boolean animalKilling, Boolean anvil,
|
||||
Boolean beacon, Boolean bed, Boolean brew, Boolean button, Boolean cake,
|
||||
Boolean container, Boolean craft, Boolean diode, Boolean door, Boolean dye,
|
||||
Boolean egg, Boolean enchant, Boolean enderPearl, Boolean feed, Boolean glow,
|
||||
Boolean honey, Boolean hook, Boolean ignite, Boolean mobKilling, Boolean move,
|
||||
Boolean place, Boolean pressure, Boolean riding, Boolean shear, Boolean shoot,
|
||||
Boolean trade, Boolean vehicleDestroy, Boolean harvest) {
|
||||
this.id = id;
|
||||
this.playerUUID = playerUUID;
|
||||
this.admin = admin;
|
||||
this.domID = domID;
|
||||
this.privilegeTemplateID = privilegeTemplateID;
|
||||
this.anchor = anchor;
|
||||
this.animalKilling = animalKilling;
|
||||
this.anvil = anvil;
|
||||
this.beacon = beacon;
|
||||
this.bed = bed;
|
||||
this.brew = brew;
|
||||
this.button = button;
|
||||
this.cake = cake;
|
||||
this.container = container;
|
||||
this.craft = craft;
|
||||
this.diode = diode;
|
||||
this.door = door;
|
||||
this.dye = dye;
|
||||
this.egg = egg;
|
||||
this.enchant = enchant;
|
||||
this.enderPearl = enderPearl;
|
||||
this.feed = feed;
|
||||
this.glow = glow;
|
||||
this.honey = honey;
|
||||
this.hook = hook;
|
||||
this.ignite = ignite;
|
||||
this.mobKilling = mobKilling;
|
||||
this.move = move;
|
||||
this.place = place;
|
||||
this.pressure = pressure;
|
||||
this.riding = riding;
|
||||
this.shear = shear;
|
||||
this.shoot = shoot;
|
||||
this.trade = trade;
|
||||
this.vehicleDestroy = vehicleDestroy;
|
||||
this.harvest = harvest;
|
||||
}
|
||||
|
||||
public PlayerPrivilegeDTO(UUID playerUUID, Boolean admin, Integer domID, Integer privilegeTemplateID) {
|
||||
this(null, playerUUID, admin, domID, privilegeTemplateID);
|
||||
public PlayerPrivilegeDTO(UUID playerUUID, Boolean admin, Integer domID) {
|
||||
this(null, playerUUID, admin, domID,
|
||||
false, false, false,
|
||||
false, false, false, false, false,
|
||||
false, false, false, false, false,
|
||||
false, false, false, false, false,
|
||||
false, false, false, false, false,
|
||||
false, false, false, false, false,
|
||||
false, false, false);
|
||||
}
|
||||
|
||||
private static List<PlayerPrivilegeDTO> query(String sql) {
|
||||
@ -100,12 +437,43 @@ public class PlayerPrivilegeDTO {
|
||||
try (ResultSet rs = Database.query(sql)) {
|
||||
if (rs == null) return players;
|
||||
while (rs.next()) {
|
||||
Integer id = rs.getInt("id");
|
||||
UUID uuid = UUID.fromString(rs.getString("player_uuid"));
|
||||
Boolean admin = rs.getBoolean("admin");
|
||||
Integer domID = rs.getInt("dom_id");
|
||||
Integer privilegeTemplateID = rs.getInt("privilege_template_id");
|
||||
PlayerPrivilegeDTO player = new PlayerPrivilegeDTO(id, uuid, admin, domID, privilegeTemplateID);
|
||||
PlayerPrivilegeDTO player = new PlayerPrivilegeDTO(
|
||||
rs.getInt("id"),
|
||||
UUID.fromString(rs.getString("player_uuid")),
|
||||
rs.getBoolean("admin"),
|
||||
rs.getInt("dom_id"),
|
||||
rs.getBoolean("anchor"),
|
||||
rs.getBoolean("animal_killing"),
|
||||
rs.getBoolean("anvil"),
|
||||
rs.getBoolean("beacon"),
|
||||
rs.getBoolean("bed"),
|
||||
rs.getBoolean("brew"),
|
||||
rs.getBoolean("button"),
|
||||
rs.getBoolean("cake"),
|
||||
rs.getBoolean("container"),
|
||||
rs.getBoolean("craft"),
|
||||
rs.getBoolean("diode"),
|
||||
rs.getBoolean("door"),
|
||||
rs.getBoolean("dye"),
|
||||
rs.getBoolean("egg"),
|
||||
rs.getBoolean("enchant"),
|
||||
rs.getBoolean("ender_pearl"),
|
||||
rs.getBoolean("feed"),
|
||||
rs.getBoolean("glow"),
|
||||
rs.getBoolean("honey"),
|
||||
rs.getBoolean("hook"),
|
||||
rs.getBoolean("ignite"),
|
||||
rs.getBoolean("mob_killing"),
|
||||
rs.getBoolean("move"),
|
||||
rs.getBoolean("place"),
|
||||
rs.getBoolean("pressure"),
|
||||
rs.getBoolean("riding"),
|
||||
rs.getBoolean("shear"),
|
||||
rs.getBoolean("shoot"),
|
||||
rs.getBoolean("trade"),
|
||||
rs.getBoolean("vehicle_destroy"),
|
||||
rs.getBoolean("harvest")
|
||||
);
|
||||
players.add(player);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
@ -119,8 +487,39 @@ public class PlayerPrivilegeDTO {
|
||||
String sql = "UPDATE player_privilege SET " +
|
||||
"admin = " + player.getAdmin() + ", " +
|
||||
"dom_id = " + player.getDomID() + ", " +
|
||||
"privilege_template_id = " + player.getPrivilegeTemplateID() + " " +
|
||||
"WHERE id = " + player.getId() + ";";
|
||||
"anchor = " + player.getAnchor() + ", " +
|
||||
"animal_killing = " + player.getAnimalKilling() + ", " +
|
||||
"anvil = " + player.getAnvil() + ", " +
|
||||
"beacon = " + player.getBeacon() + ", " +
|
||||
"bed = " + player.getBed() + ", " +
|
||||
"brew = " + player.getBrew() + ", " +
|
||||
"button = " + player.getButton() + ", " +
|
||||
"cake = " + player.getCake() + ", " +
|
||||
"container = " + player.getContainer() + ", " +
|
||||
"craft = " + player.getCraft() + ", " +
|
||||
"diode = " + player.getDiode() + ", " +
|
||||
"door = " + player.getDoor() + ", " +
|
||||
"dye = " + player.getDye() + ", " +
|
||||
"egg = " + player.getEgg() + ", " +
|
||||
"enchant = " + player.getEnchant() + ", " +
|
||||
"ender_pearl = " + player.getEnderPearl() + ", " +
|
||||
"feed = " + player.getFeed() + ", " +
|
||||
"glow = " + player.getGlow() + ", " +
|
||||
"honey = " + player.getHoney() + ", " +
|
||||
"hook = " + player.getHook() + ", " +
|
||||
"ignite = " + player.getIgnite() + ", " +
|
||||
"mob_killing = " + player.getMobKilling() + ", " +
|
||||
"move = " + player.getMove() + ", " +
|
||||
"place = " + player.getPlace() + ", " +
|
||||
"pressure = " + player.getPressure() + ", " +
|
||||
"riding = " + player.getRiding() + ", " +
|
||||
"shear = " + player.getShear() + ", " +
|
||||
"shoot = " + player.getShoot() + ", " +
|
||||
"trade = " + player.getTrade() + ", " +
|
||||
"vehicle_destroy = " + player.getVehicleDestroy() + ", " +
|
||||
"harvest = " + player.getHarvest() + " " +
|
||||
"WHERE id = " + player.getId() + " " +
|
||||
"RETURNING *;";
|
||||
List<PlayerPrivilegeDTO> players = query(sql);
|
||||
if (players.size() == 0) return null;
|
||||
return players.get(0);
|
||||
|
@ -1,561 +0,0 @@
|
||||
package cn.lunadeer.dominion.dtos;
|
||||
|
||||
import cn.lunadeer.dominion.utils.Database;
|
||||
import cn.lunadeer.dominion.utils.XLogger;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class PrivilegeTemplateDTO {
|
||||
|
||||
public static PrivilegeTemplateDTO insert(PrivilegeTemplateDTO privilege) {
|
||||
String sql = "INSERT INTO privilege_template (name, creator, team) " +
|
||||
"VALUES ('" +
|
||||
privilege.getName() + "', '" +
|
||||
privilege.getCreator().toString() + "', " +
|
||||
privilege.getGroup() + ") " +
|
||||
"RETURNING *;";
|
||||
List<PrivilegeTemplateDTO> templates = query(sql);
|
||||
if (templates.size() == 0) return null;
|
||||
return templates.get(0);
|
||||
}
|
||||
|
||||
public static List<PrivilegeTemplateDTO> selectAll() {
|
||||
String sql = "SELECT * FROM privilege_template;";
|
||||
return query(sql);
|
||||
}
|
||||
|
||||
public static List<PrivilegeTemplateDTO> searchGroup(String name){
|
||||
String sql = "SELECT * FROM privilege_template WHERE name LIKE '%" + name + "%' AND team = true;";
|
||||
return query(sql);
|
||||
}
|
||||
|
||||
public static List<PrivilegeTemplateDTO> selectGroup(UUID creator){
|
||||
String sql = "SELECT * FROM privilege_template WHERE creator = '" + creator.toString() + "' AND team = true;";
|
||||
return query(sql);
|
||||
}
|
||||
|
||||
public static PrivilegeTemplateDTO select(Integer id) {
|
||||
String sql = "SELECT * FROM privilege_template WHERE id = " + id + ";";
|
||||
List<PrivilegeTemplateDTO> templates = query(sql);
|
||||
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 = '" + creator.toString() + "' AND name = '" + name + "';";
|
||||
List<PrivilegeTemplateDTO> templates = query(sql);
|
||||
if (templates.size() == 0) return null;
|
||||
return templates.get(0);
|
||||
}
|
||||
|
||||
public static List<PrivilegeTemplateDTO> search(String name) {
|
||||
String sql = "SELECT * FROM privilege_template WHERE name LIKE '%" + name + "%';";
|
||||
return query(sql);
|
||||
}
|
||||
|
||||
public static List<PrivilegeTemplateDTO> search(UUID creator) {
|
||||
String sql = "SELECT * FROM privilege_template WHERE creator = '" + creator.toString() + "';";
|
||||
return query(sql);
|
||||
}
|
||||
|
||||
public static void delete(PrivilegeTemplateDTO privilege) {
|
||||
String sql = "DELETE FROM privilege_template WHERE id = " + privilege.getId() + ";";
|
||||
query(sql);
|
||||
}
|
||||
|
||||
public static void delete(UUID creator, String name) {
|
||||
String sql = "DELETE FROM privilege_template WHERE creator = '" + creator.toString() + "' AND name = '" + name + "';";
|
||||
query(sql);
|
||||
}
|
||||
|
||||
private static PrivilegeTemplateDTO update(PrivilegeTemplateDTO privilege) {
|
||||
String sql = "UPDATE privilege_template SET " +
|
||||
"name = '" + privilege.getName() + "', " +
|
||||
"creator = '" + privilege.getCreator().toString() + "', " +
|
||||
"team = " + privilege.getGroup() + ", " +
|
||||
"anchor = " + privilege.getAnchor() + ", " +
|
||||
"animal_killing = " + privilege.getAnimalKilling() + ", " +
|
||||
"anvil = " + privilege.getAnvil() + ", " +
|
||||
"beacon = " + privilege.getBeacon() + ", " +
|
||||
"bed = " + privilege.getBed() + ", " +
|
||||
"brew = " + privilege.getBrew() + ", " +
|
||||
"button = " + privilege.getButton() + ", " +
|
||||
"cake = " + privilege.getCake() + ", " +
|
||||
"container = " + privilege.getContainer() + ", " +
|
||||
"craft = " + privilege.getCraft() + ", " +
|
||||
"diode = " + privilege.getDiode() + ", " +
|
||||
"door = " + privilege.getDoor() + ", " +
|
||||
"dye = " + privilege.getDye() + ", " +
|
||||
"egg = " + privilege.getEgg() + ", " +
|
||||
"enchant = " + privilege.getEnchant() + ", " +
|
||||
"ender_pearl = " + privilege.getEnderPearl() + ", " +
|
||||
"feed = " + privilege.getFeed() + ", " +
|
||||
"glow = " + privilege.getGlow() + ", " +
|
||||
"honey = " + privilege.getHoney() + ", " +
|
||||
"hook = " + privilege.getHook() + ", " +
|
||||
"ignite = " + privilege.getIgnite() + ", " +
|
||||
"mob_killing = " + privilege.getMobKilling() + ", " +
|
||||
"move = " + privilege.getMove() + ", " +
|
||||
"place = " + privilege.getPlace() + ", " +
|
||||
"pressure = " + privilege.getPressure() + ", " +
|
||||
"riding = " + privilege.getRiding() + ", " +
|
||||
"shear = " + privilege.getShear() + ", " +
|
||||
"shoot = " + privilege.getShoot() + ", " +
|
||||
"trade = " + privilege.getTrade() + ", " +
|
||||
"vehicle_destroy = " + privilege.getVehicleDestroy() + ", " +
|
||||
"harvest = " + privilege.getHarvest() + " " +
|
||||
"WHERE id = " + privilege.getId() + " " +
|
||||
"RETURNING *;";
|
||||
List<PrivilegeTemplateDTO> templates = query(sql);
|
||||
if (templates.size() == 0) return null;
|
||||
return templates.get(0);
|
||||
}
|
||||
|
||||
private final Integer id;
|
||||
private String name;
|
||||
private final UUID creator;
|
||||
private final Boolean team;
|
||||
private Boolean anchor;
|
||||
private Boolean animalKilling;
|
||||
private Boolean anvil;
|
||||
private Boolean beacon;
|
||||
private Boolean bed;
|
||||
private Boolean brew;
|
||||
private Boolean button;
|
||||
private Boolean cake;
|
||||
private Boolean container;
|
||||
private Boolean craft;
|
||||
private Boolean diode;
|
||||
private Boolean door;
|
||||
private Boolean dye;
|
||||
private Boolean egg;
|
||||
private Boolean enchant;
|
||||
private Boolean enderPearl;
|
||||
private Boolean feed;
|
||||
private Boolean glow;
|
||||
private Boolean honey;
|
||||
private Boolean hook;
|
||||
private Boolean ignite;
|
||||
private Boolean mobKilling;
|
||||
private Boolean move;
|
||||
private Boolean place;
|
||||
private Boolean pressure;
|
||||
private Boolean riding;
|
||||
private Boolean shear;
|
||||
private Boolean shoot;
|
||||
private Boolean trade;
|
||||
private Boolean vehicleDestroy;
|
||||
private Boolean harvest;
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public UUID getCreator() {
|
||||
return creator;
|
||||
}
|
||||
|
||||
public Boolean getGroup() {
|
||||
return team;
|
||||
}
|
||||
|
||||
public Boolean getAnchor() {
|
||||
return anchor;
|
||||
}
|
||||
|
||||
public Boolean getAnimalKilling() {
|
||||
return animalKilling;
|
||||
}
|
||||
|
||||
public Boolean getAnvil() {
|
||||
return anvil;
|
||||
}
|
||||
|
||||
public Boolean getBeacon() {
|
||||
return beacon;
|
||||
}
|
||||
|
||||
public Boolean getBed() {
|
||||
return bed;
|
||||
}
|
||||
|
||||
public Boolean getBrew() {
|
||||
return brew;
|
||||
}
|
||||
|
||||
public Boolean getButton() {
|
||||
return button;
|
||||
}
|
||||
|
||||
public Boolean getCake() {
|
||||
return cake;
|
||||
}
|
||||
|
||||
public Boolean getContainer() {
|
||||
return container;
|
||||
}
|
||||
|
||||
public Boolean getCraft() {
|
||||
return craft;
|
||||
}
|
||||
|
||||
public Boolean getDiode() {
|
||||
return diode;
|
||||
}
|
||||
|
||||
public Boolean getDoor() {
|
||||
return door;
|
||||
}
|
||||
|
||||
public Boolean getDye() {
|
||||
return dye;
|
||||
}
|
||||
|
||||
public Boolean getEgg() {
|
||||
return egg;
|
||||
}
|
||||
|
||||
public Boolean getEnchant() {
|
||||
return enchant;
|
||||
}
|
||||
|
||||
public Boolean getEnderPearl() {
|
||||
return enderPearl;
|
||||
}
|
||||
|
||||
public Boolean getFeed() {
|
||||
return feed;
|
||||
}
|
||||
|
||||
public Boolean getGlow() {
|
||||
return glow;
|
||||
}
|
||||
|
||||
public Boolean getHoney() {
|
||||
return honey;
|
||||
}
|
||||
|
||||
public Boolean getHook() {
|
||||
return hook;
|
||||
}
|
||||
|
||||
public Boolean getIgnite() {
|
||||
return ignite;
|
||||
}
|
||||
|
||||
public Boolean getMobKilling() {
|
||||
return mobKilling;
|
||||
}
|
||||
|
||||
public Boolean getMove() {
|
||||
return move;
|
||||
}
|
||||
|
||||
public Boolean getPlace() {
|
||||
return place;
|
||||
}
|
||||
|
||||
public Boolean getPressure() {
|
||||
return pressure;
|
||||
}
|
||||
|
||||
public Boolean getRiding() {
|
||||
return riding;
|
||||
}
|
||||
|
||||
public Boolean getShear() {
|
||||
return shear;
|
||||
}
|
||||
|
||||
public Boolean getShoot() {
|
||||
return shoot;
|
||||
}
|
||||
|
||||
public Boolean getTrade() {
|
||||
return trade;
|
||||
}
|
||||
|
||||
public Boolean getVehicleDestroy() {
|
||||
return vehicleDestroy;
|
||||
}
|
||||
|
||||
public Boolean getHarvest() {
|
||||
return harvest;
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setName(String name) {
|
||||
this.name = name;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setAnchor(Boolean anchor) {
|
||||
this.anchor = anchor;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setAnimalKilling(Boolean animalKilling) {
|
||||
this.animalKilling = animalKilling;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setAnvil(Boolean anvil) {
|
||||
this.anvil = anvil;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setBeacon(Boolean beacon) {
|
||||
this.beacon = beacon;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setBed(Boolean bed) {
|
||||
this.bed = bed;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setBrew(Boolean brew) {
|
||||
this.brew = brew;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setButton(Boolean button) {
|
||||
this.button = button;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setCake(Boolean cake) {
|
||||
this.cake = cake;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setContainer(Boolean container) {
|
||||
this.container = container;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setCraft(Boolean craft) {
|
||||
this.craft = craft;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setDiode(Boolean diode) {
|
||||
this.diode = diode;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setDoor(Boolean door) {
|
||||
this.door = door;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setDye(Boolean dye) {
|
||||
this.dye = dye;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setEgg(Boolean egg) {
|
||||
this.egg = egg;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setEnchant(Boolean enchant) {
|
||||
this.enchant = enchant;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setEnderPearl(Boolean enderPearl) {
|
||||
this.enderPearl = enderPearl;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setFeed(Boolean feed) {
|
||||
this.feed = feed;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setGlow(Boolean glow) {
|
||||
this.glow = glow;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setHoney(Boolean honey) {
|
||||
this.honey = honey;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setHook(Boolean hook) {
|
||||
this.hook = hook;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setIgnite(Boolean ignite) {
|
||||
this.ignite = ignite;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setMobKilling(Boolean mobKilling) {
|
||||
this.mobKilling = mobKilling;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setMove(Boolean move) {
|
||||
this.move = move;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setPlace(Boolean place) {
|
||||
this.place = place;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setPressure(Boolean pressure) {
|
||||
this.pressure = pressure;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setRiding(Boolean riding) {
|
||||
this.riding = riding;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setShear(Boolean shear) {
|
||||
this.shear = shear;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setShoot(Boolean shoot) {
|
||||
this.shoot = shoot;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setTrade(Boolean trade) {
|
||||
this.trade = trade;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setVehicleDestroy(Boolean vehicleDestroy) {
|
||||
this.vehicleDestroy = vehicleDestroy;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO setHarvest(Boolean harvest) {
|
||||
this.harvest = harvest;
|
||||
return update(this);
|
||||
}
|
||||
|
||||
public PrivilegeTemplateDTO(String name, UUID creator, Boolean team) {
|
||||
this(null, name, creator, team,
|
||||
false, false, false,
|
||||
false, false, false, false, false,
|
||||
false, false, false, false, false,
|
||||
false, false, false, false, false,
|
||||
false, false, false, false, false,
|
||||
false, false, false, false, false,
|
||||
false, false, false);
|
||||
}
|
||||
|
||||
private PrivilegeTemplateDTO(Integer id, String name, UUID creator, Boolean team,
|
||||
Boolean anchor, Boolean animalKilling, Boolean anvil,
|
||||
Boolean beacon, Boolean bed, Boolean brew, Boolean button, Boolean cake,
|
||||
Boolean container, Boolean craft, Boolean diode, Boolean door, Boolean dye,
|
||||
Boolean egg, Boolean enchant, Boolean enderPearl, Boolean feed, Boolean glow,
|
||||
Boolean honey, Boolean hook, Boolean ignite, Boolean mobKilling, Boolean move,
|
||||
Boolean place, Boolean pressure, Boolean riding, Boolean shear, Boolean shoot,
|
||||
Boolean trade, Boolean vehicleDestroy, Boolean harvest) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.creator = creator;
|
||||
this.team = team;
|
||||
this.anchor = anchor;
|
||||
this.animalKilling = animalKilling;
|
||||
this.anvil = anvil;
|
||||
this.beacon = beacon;
|
||||
this.bed = bed;
|
||||
this.brew = brew;
|
||||
this.button = button;
|
||||
this.cake = cake;
|
||||
this.container = container;
|
||||
this.craft = craft;
|
||||
this.diode = diode;
|
||||
this.door = door;
|
||||
this.dye = dye;
|
||||
this.egg = egg;
|
||||
this.enchant = enchant;
|
||||
this.enderPearl = enderPearl;
|
||||
this.feed = feed;
|
||||
this.glow = glow;
|
||||
this.honey = honey;
|
||||
this.hook = hook;
|
||||
this.ignite = ignite;
|
||||
this.mobKilling = mobKilling;
|
||||
this.move = move;
|
||||
this.place = place;
|
||||
this.pressure = pressure;
|
||||
this.riding = riding;
|
||||
this.shear = shear;
|
||||
this.shoot = shoot;
|
||||
this.trade = trade;
|
||||
this.vehicleDestroy = vehicleDestroy;
|
||||
this.harvest = harvest;
|
||||
}
|
||||
|
||||
private static List<PrivilegeTemplateDTO> query(String sql) {
|
||||
List<PrivilegeTemplateDTO> privilegeTemplates = new ArrayList<>();
|
||||
try (ResultSet rs = Database.query(sql)) {
|
||||
if (rs == null) return privilegeTemplates;
|
||||
while (rs.next()) {
|
||||
PrivilegeTemplateDTO privilegeTemplate = new PrivilegeTemplateDTO(
|
||||
rs.getInt("id"),
|
||||
rs.getString("name"),
|
||||
UUID.fromString(rs.getString("creator")),
|
||||
rs.getBoolean("team"),
|
||||
rs.getBoolean("anchor"),
|
||||
rs.getBoolean("animal_killing"),
|
||||
rs.getBoolean("anvil"),
|
||||
rs.getBoolean("beacon"),
|
||||
rs.getBoolean("bed"),
|
||||
rs.getBoolean("brew"),
|
||||
rs.getBoolean("button"),
|
||||
rs.getBoolean("cake"),
|
||||
rs.getBoolean("container"),
|
||||
rs.getBoolean("craft"),
|
||||
rs.getBoolean("diode"),
|
||||
rs.getBoolean("door"),
|
||||
rs.getBoolean("dye"),
|
||||
rs.getBoolean("egg"),
|
||||
rs.getBoolean("enchant"),
|
||||
rs.getBoolean("ender_pearl"),
|
||||
rs.getBoolean("feed"),
|
||||
rs.getBoolean("glow"),
|
||||
rs.getBoolean("honey"),
|
||||
rs.getBoolean("hook"),
|
||||
rs.getBoolean("ignite"),
|
||||
rs.getBoolean("mob_killing"),
|
||||
rs.getBoolean("move"),
|
||||
rs.getBoolean("place"),
|
||||
rs.getBoolean("pressure"),
|
||||
rs.getBoolean("riding"),
|
||||
rs.getBoolean("shear"),
|
||||
rs.getBoolean("shoot"),
|
||||
rs.getBoolean("trade"),
|
||||
rs.getBoolean("vehicle_destroy"),
|
||||
rs.getBoolean("harvest")
|
||||
);
|
||||
privilegeTemplates.add(privilegeTemplate);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
XLogger.err("Database query failed: " + e.getMessage());
|
||||
XLogger.err("SQL: " + sql);
|
||||
}
|
||||
return privilegeTemplates;
|
||||
}
|
||||
|
||||
}
|
76
src/main/java/cn/lunadeer/dominion/tuis/Apis.java
Normal file
76
src/main/java/cn/lunadeer/dominion/tuis/Apis.java
Normal file
@ -0,0 +1,76 @@
|
||||
package cn.lunadeer.dominion.tuis;
|
||||
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import cn.lunadeer.dominion.utils.STUI.Button;
|
||||
import cn.lunadeer.dominion.utils.STUI.Line;
|
||||
import cn.lunadeer.dominion.utils.STUI.ListView;
|
||||
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 {
|
||||
|
||||
public static int getPage(String[] args) {
|
||||
int page = 1;
|
||||
if (args.length == 2) {
|
||||
try {
|
||||
page = Integer.parseInt(args[1]);
|
||||
} catch (Exception e) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return page;
|
||||
}
|
||||
|
||||
public static DominionDTO getDominion(Player player, String[] args) {
|
||||
if (args.length == 2) {
|
||||
return DominionDTO.select(args[1]);
|
||||
} else {
|
||||
return getPlayerCurrentDominion(player);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean noAuthToManage(Player player, DominionDTO dominion) {
|
||||
if (player.isOp()) return false;
|
||||
if (!dominion.getOwner().equals(player.getUniqueId())) {
|
||||
PlayerPrivilegeDTO privileges = PlayerPrivilegeDTO.select(player.getUniqueId(), dominion.getId());
|
||||
if (privileges == null || !privileges.getAdmin()) {
|
||||
Notification.error(player, "你不是领地 " + dominion.getName() + " 的拥有者或管理员,无权访问此页面");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void printHelp(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
int page = getPage(args);
|
||||
ListView view = ListView.create(5, "/dominion help");
|
||||
view.title("领地插件命令帮助")
|
||||
.add(Line.create().append("打开交互菜单").append(Button.create("/dominion menu", "/dominion menu")))
|
||||
.add(Line.create().append("列出所有领地").append(Button.create("/dominion list", "/dominion list")))
|
||||
.add(Line.create().append("查看帮助").append(Button.create("/dominion help [页码]", "/dominion help 1")))
|
||||
.add(Line.create().append("查看领地信息").append(Button.create("/dominion info [领地名称]", "/dominion info")))
|
||||
.add(Line.create().append("查看领地权限信息").append(Button.create("/dominion flag_info <领地名称> [页码]", "/dominion flag_info")))
|
||||
.add(Line.create().append("管理领地").append("/dominion manage <领地名称>"))
|
||||
.add(Line.create().append("创建领地").append("/dominion create <领地名称>"))
|
||||
.add(Line.create().append("自动创建领地").append("/dominion auto_create <领地名称>"))
|
||||
.add(Line.create().append("创建子领地").append("/dominion create_sub <子领地名称> [父领地名称]"))
|
||||
.add(Line.create().append("自动创建子领地").append("/dominion auto_create_sub <子领地名称> [父领地名称]"))
|
||||
.add(Line.create().append("扩张领地").append("/dominion expand [大小] [领地名称]"))
|
||||
.add(Line.create().append("缩小领地").append("/dominion contract [大小] [领地名称]"))
|
||||
.add(Line.create().append("删除领地").append("/dominion delete <领地名称> [force]"))
|
||||
.add(Line.create().append("设置领地权限").append("/dominion set <权限名称> <true/false> [领地名称]"))
|
||||
.add(Line.create().append("设置玩家权限").append("/dominion set_privilege <玩家名称> <权限名称> <true/false> [领地名称]"))
|
||||
.add(Line.create().append("重置玩家权限").append("/dominion clear_privilege <玩家名称> [领地名称]"))
|
||||
.add(Line.create().append("查看领地玩家特权列表").append("/dominion privilege_list [领地名称] [页码]"))
|
||||
.add(Line.create().append("查看玩家权限信息").append("/dominion privilege_info <玩家名称> [领地名称] [页码]"))
|
||||
.showOn(player, page);
|
||||
}
|
||||
|
||||
}
|
376
src/main/java/cn/lunadeer/dominion/tuis/DominionFlagInfo.java
Normal file
376
src/main/java/cn/lunadeer/dominion/tuis/DominionFlagInfo.java
Normal file
@ -0,0 +1,376 @@
|
||||
package cn.lunadeer.dominion.tuis;
|
||||
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import cn.lunadeer.dominion.utils.STUI.Button;
|
||||
import cn.lunadeer.dominion.utils.STUI.Line;
|
||||
import cn.lunadeer.dominion.utils.STUI.ListView;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
|
||||
public class DominionFlagInfo {
|
||||
|
||||
public static void show(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length < 2) {
|
||||
Notification.error(sender, "用法: /dominion flag_info <领地名称> [页码]");
|
||||
return;
|
||||
}
|
||||
DominionDTO dominion = DominionDTO.select(args[1]);
|
||||
if (dominion == null) {
|
||||
Notification.error(sender, "领地 " + args[1] + " 不存在");
|
||||
return;
|
||||
}
|
||||
int page = 1;
|
||||
if (args.length == 3) {
|
||||
try {
|
||||
page = Integer.parseInt(args[2]);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
ListView view = ListView.create(6, "/dominion flag_info " + dominion.getName());
|
||||
view.title("领地 " + dominion.getName() + " 默认权限")
|
||||
.navigator(Line.create()
|
||||
.append(Button.create("主菜单", "/dominion menu"))
|
||||
.append(Button.create("我的领地", "/dominion list"))
|
||||
.append(Button.create("管理界面", "/dominion manage " + dominion.getName()))
|
||||
.append("权限列表"));
|
||||
if (dominion.getAnchor()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set anchor false " + dominion.getName() + " " + page))
|
||||
.append("重生锚"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set anchor true " + dominion.getName() + " " + page))
|
||||
.append("重生锚"));
|
||||
}
|
||||
if (dominion.getAnimalKilling()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set animal_killing false " + dominion.getName() + " " + page))
|
||||
.append("动物伤害"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set animal_killing true " + dominion.getName() + " " + page))
|
||||
.append("动物伤害"));
|
||||
}
|
||||
if (dominion.getAnvil()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set anvil false " + dominion.getName() + " " + page))
|
||||
.append("使用铁砧"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set anvil true " + dominion.getName() + " " + page))
|
||||
.append("使用铁砧"));
|
||||
}
|
||||
if (dominion.getBeacon()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set beacon false " + dominion.getName() + " " + page))
|
||||
.append("信标交互"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set beacon true " + dominion.getName() + " " + page))
|
||||
.append("信标交互"));
|
||||
}
|
||||
if (dominion.getBed()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set bed false " + dominion.getName() + " " + page))
|
||||
.append("床交互"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set bed true " + dominion.getName() + " " + page))
|
||||
.append("床交互"));
|
||||
}
|
||||
if (dominion.getBrew()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set brew false " + dominion.getName() + " " + page))
|
||||
.append("使用酿造台"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set brew true " + dominion.getName() + " " + page))
|
||||
.append("使用酿造台"));
|
||||
}
|
||||
if (dominion.getButton()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set button false " + dominion.getName() + " " + page))
|
||||
.append("使用按钮"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set button true " + dominion.getName() + " " + page))
|
||||
.append("使用按钮"));
|
||||
}
|
||||
if (dominion.getCake()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set cake false " + dominion.getName() + " " + page))
|
||||
.append("使用蛋糕"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set cake true " + dominion.getName() + " " + page))
|
||||
.append("使用蛋糕"));
|
||||
}
|
||||
if (dominion.getContainer()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set container false " + dominion.getName() + " " + page))
|
||||
.append("容器交互"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set container true " + dominion.getName() + " " + page))
|
||||
.append("容器交互"));
|
||||
}
|
||||
if (dominion.getCraft()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set craft false " + dominion.getName() + " " + page))
|
||||
.append("合成"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set craft true " + dominion.getName() + " " + page))
|
||||
.append("合成"));
|
||||
}
|
||||
if (dominion.getCreeperExplode()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set creeper_explode false " + dominion.getName() + " " + page))
|
||||
.append("苦力怕爆炸"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set creeper_explode true " + dominion.getName() + " " + page))
|
||||
.append("苦力怕爆炸"));
|
||||
}
|
||||
if (dominion.getDiode()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set diode false " + dominion.getName() + " " + page))
|
||||
.append("中继器交互"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set diode true " + dominion.getName() + " " + page))
|
||||
.append("中继器交互"));
|
||||
}
|
||||
if (dominion.getDoor()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set door false " + dominion.getName() + " " + page))
|
||||
.append("门交互"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set door true " + dominion.getName() + " " + page))
|
||||
.append("门交互"));
|
||||
}
|
||||
if (dominion.getDye()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set dye false " + dominion.getName() + " " + page))
|
||||
.append("染色"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set dye true " + dominion.getName() + " " + page))
|
||||
.append("染色"));
|
||||
}
|
||||
if (dominion.getEgg()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set egg false " + dominion.getName() + " " + page))
|
||||
.append("投掷鸡蛋"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set egg true " + dominion.getName() + " " + page))
|
||||
.append("投掷鸡蛋"));
|
||||
}
|
||||
if (dominion.getEnchant()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set enchant false " + dominion.getName() + " " + page))
|
||||
.append("附魔"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set enchant true " + dominion.getName() + " " + page))
|
||||
.append("附魔"));
|
||||
}
|
||||
if (dominion.getEnderPearl()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set ender_pearl false " + dominion.getName() + " " + page))
|
||||
.append("末影珍珠"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set ender_pearl true " + dominion.getName() + " " + page))
|
||||
.append("末影珍珠"));
|
||||
}
|
||||
if (dominion.getFeed()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set feed false " + dominion.getName() + " " + page))
|
||||
.append("喂食"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set feed true " + dominion.getName() + " " + page))
|
||||
.append("喂食"));
|
||||
}
|
||||
if (dominion.getFireSpread()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set fire_spread false " + dominion.getName() + " " + page))
|
||||
.append("火焰蔓延"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set fire_spread true " + dominion.getName() + " " + page))
|
||||
.append("火焰蔓延"));
|
||||
}
|
||||
if (dominion.getFlowInProtection()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set flow_in_protection false " + dominion.getName() + " " + page))
|
||||
.append("流体保护"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set flow_in_protection true " + dominion.getName() + " " + page))
|
||||
.append("流体保护"));
|
||||
}
|
||||
if (dominion.getGlow()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set glow false " + dominion.getName() + " " + page))
|
||||
.append("发光"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set glow true " + dominion.getName() + " " + page))
|
||||
.append("发光"));
|
||||
}
|
||||
if (dominion.getGrow()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set grow false " + dominion.getName() + " " + page))
|
||||
.append("植物生长"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set grow true " + dominion.getName() + " " + page))
|
||||
.append("植物生长"));
|
||||
}
|
||||
if (dominion.getHoney()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set honey false " + dominion.getName() + " " + page))
|
||||
.append("蜂巢交互"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set honey true " + dominion.getName() + " " + page))
|
||||
.append("蜂巢交互"));
|
||||
}
|
||||
if (dominion.getHook()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set hook false " + dominion.getName() + " " + page))
|
||||
.append("钩子交互"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set hook true " + dominion.getName() + " " + page))
|
||||
.append("钩子交互"));
|
||||
}
|
||||
if (dominion.getIgnite()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set ignite false " + dominion.getName() + " " + page))
|
||||
.append("点燃"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set ignite true " + dominion.getName() + " " + page))
|
||||
.append("点燃"));
|
||||
}
|
||||
if (dominion.getMobKilling()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set mob_killing false " + dominion.getName() + " " + page))
|
||||
.append("生物伤害"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set mob_killing true " + dominion.getName() + " " + page))
|
||||
.append("生物伤害"));
|
||||
}
|
||||
if (dominion.getMove()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set move false " + dominion.getName() + " " + page))
|
||||
.append("移动"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set move true " + dominion.getName() + " " + page))
|
||||
.append("移动"));
|
||||
}
|
||||
if (dominion.getPlace()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set place false " + dominion.getName() + " " + page))
|
||||
.append("放置"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set place true " + dominion.getName() + " " + page))
|
||||
.append("放置"));
|
||||
}
|
||||
if (dominion.getPressure()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set pressure false " + dominion.getName() + " " + page))
|
||||
.append("压力板交互"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set pressure true " + dominion.getName() + " " + page))
|
||||
.append("压力板交互"));
|
||||
}
|
||||
if (dominion.getRiding()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set riding false " + dominion.getName() + " " + page))
|
||||
.append("骑乘"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set riding true " + dominion.getName() + " " + page))
|
||||
.append("骑乘"));
|
||||
}
|
||||
if (dominion.getShear()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set shear false " + dominion.getName() + " " + page))
|
||||
.append("剪羊毛"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set shear true " + dominion.getName() + " " + page))
|
||||
.append("剪羊毛"));
|
||||
}
|
||||
if (dominion.getShoot()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set shoot false " + dominion.getName() + " " + page))
|
||||
.append("发射"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set shoot true " + dominion.getName() + " " + page))
|
||||
.append("发射"));
|
||||
}
|
||||
if (dominion.getTntExplode()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set tnt_explode false " + dominion.getName() + " " + page))
|
||||
.append("TNT爆炸"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set tnt_explode true " + dominion.getName() + " " + page))
|
||||
.append("TNT爆炸"));
|
||||
}
|
||||
if (dominion.getTrade()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set trade false " + dominion.getName() + " " + page))
|
||||
.append("交易"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set trade true " + dominion.getName() + " " + page))
|
||||
.append("交易"));
|
||||
}
|
||||
if (dominion.getVehicleDestroy()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set vehicle_destroy false " + dominion.getName() + " " + page))
|
||||
.append("破坏载具"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set vehicle_destroy true " + dominion.getName() + " " + page))
|
||||
.append("破坏载具"));
|
||||
}
|
||||
if (dominion.getWitherSpawn()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set wither_spawn false " + dominion.getName() + " " + page))
|
||||
.append("凋零生成"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set wither_spawn true " + dominion.getName() + " " + page))
|
||||
.append("凋零生成"));
|
||||
}
|
||||
if (dominion.getHarvest()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set harvest false " + dominion.getName() + " " + page))
|
||||
.append("收获"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set harvest true " + dominion.getName() + " " + page))
|
||||
.append("收获"));
|
||||
}
|
||||
view.showOn(player, page);
|
||||
}
|
||||
}
|
45
src/main/java/cn/lunadeer/dominion/tuis/DominionManage.java
Normal file
45
src/main/java/cn/lunadeer/dominion/tuis/DominionManage.java
Normal file
@ -0,0 +1,45 @@
|
||||
package cn.lunadeer.dominion.tuis;
|
||||
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import cn.lunadeer.dominion.utils.STUI.Button;
|
||||
import cn.lunadeer.dominion.utils.STUI.Line;
|
||||
import cn.lunadeer.dominion.utils.STUI.View;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
import static cn.lunadeer.dominion.tuis.Apis.getDominion;
|
||||
import static cn.lunadeer.dominion.tuis.Apis.noAuthToManage;
|
||||
|
||||
public class DominionManage {
|
||||
public static void show(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
DominionDTO dominion = getDominion(player, args);
|
||||
if (dominion == null) {
|
||||
Notification.error(sender, "你不在任何领地内,请指定领地名称 /dominion manage <领地名称>");
|
||||
return;
|
||||
}
|
||||
if (noAuthToManage(player, dominion)) return;
|
||||
Line size_info = Line.create()
|
||||
.append(Button.create("尺寸信息", "/dominion info " + dominion.getName()))
|
||||
.append("查看领地尺寸信息");
|
||||
Line flag_info = Line.create()
|
||||
.append(Button.create("权限设置", "/dominion flag_info " + dominion.getName()))
|
||||
.append("管理领地默认权限");
|
||||
Line privilege_list = Line.create()
|
||||
.append(Button.create("玩家权限", "/dominion privilege_list " + dominion.getName()))
|
||||
.append("管理玩家特权");
|
||||
View view = View.create();
|
||||
view.title("领地 " + dominion.getName() + " 管理界面")
|
||||
.navigator(Line.create()
|
||||
.append(Button.create("主菜单", "/dominion menu"))
|
||||
.append(Button.create("我的领地", "/dominion list"))
|
||||
.append(dominion.getName()))
|
||||
.addLine(size_info)
|
||||
.addLine(flag_info)
|
||||
.addLine(privilege_list)
|
||||
.showOn(player);
|
||||
}
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
package cn.lunadeer.dominion.tuis;
|
||||
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import cn.lunadeer.dominion.utils.STUI.Button;
|
||||
import cn.lunadeer.dominion.utils.STUI.Line;
|
||||
import cn.lunadeer.dominion.utils.STUI.ListView;
|
||||
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.getDominion;
|
||||
import static cn.lunadeer.dominion.tuis.Apis.noAuthToManage;
|
||||
|
||||
public class DominionPrivilegeList {
|
||||
|
||||
public static void show(CommandSender sender, String[] args) {
|
||||
int page = 1;
|
||||
if (args.length == 3) {
|
||||
try {
|
||||
page = Integer.parseInt(args[2]);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
DominionDTO dominion = getDominion(player, args);
|
||||
if (dominion == null) {
|
||||
Notification.error(sender, "你不在任何领地内,请指定领地名称 /dominion privilege_list <领地名称>");
|
||||
return;
|
||||
}
|
||||
ListView view = ListView.create(5, "/dominion privilege_list " + dominion.getName());
|
||||
if (noAuthToManage(player, dominion)) return;
|
||||
List<PlayerPrivilegeDTO> privileges = PlayerPrivilegeDTO.select(dominion.getId());
|
||||
if (privileges.isEmpty()) {
|
||||
Notification.warn(sender, "领地 " + dominion.getName() + " 没有任何玩家拥有特权");
|
||||
return;
|
||||
}
|
||||
view.title("领地 " + dominion.getName() + " 玩家特权列表");
|
||||
view.navigator(
|
||||
Line.create()
|
||||
.append(Button.create("主菜单", "/dominion menu"))
|
||||
.append(Button.create("我的领地", "/dominion list"))
|
||||
.append(Button.create("管理界面", "/dominion manage " + dominion.getName()))
|
||||
.append("特权列表")
|
||||
);
|
||||
for (PlayerPrivilegeDTO privilege : privileges) {
|
||||
PlayerDTO p_player = PlayerDTO.select(privilege.getPlayerUUID());
|
||||
if (p_player == null) continue;
|
||||
view.add(Line.create()
|
||||
.append(p_player.getLastKnownName())
|
||||
.append(Button.createGreen("管理", "/dominion privilege_info " + p_player.getLastKnownName() + " " + dominion.getName()))
|
||||
.append(Button.createRed("清空", "/dominion clear_privilege " + p_player.getLastKnownName() + " " + dominion.getName()))
|
||||
);
|
||||
}
|
||||
view.showOn(player, page);
|
||||
}
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
package cn.lunadeer.dominion.tuis;
|
||||
|
||||
import cn.lunadeer.dominion.controllers.PlayerController;
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import cn.lunadeer.dominion.utils.STUI.Button;
|
||||
import cn.lunadeer.dominion.utils.STUI.Line;
|
||||
import cn.lunadeer.dominion.utils.STUI.View;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
import static cn.lunadeer.dominion.tuis.Apis.getDominion;
|
||||
|
||||
public class DominionSizeInfo {
|
||||
public static void show(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
DominionDTO dominion = getDominion(player, args);
|
||||
if (dominion == null) {
|
||||
Notification.error(sender, "你不在任何领地内,请指定领地名称 /dominion info <领地名称>");
|
||||
return;
|
||||
}
|
||||
PlayerDTO owner = PlayerController.getPlayerDTO(dominion.getOwner());
|
||||
Integer x1 = dominion.getX1();
|
||||
Integer y1 = dominion.getY1();
|
||||
Integer z1 = dominion.getZ1();
|
||||
Integer x2 = dominion.getX2();
|
||||
Integer y2 = dominion.getY2();
|
||||
Integer z2 = dominion.getZ2();
|
||||
View view = View.create();
|
||||
view.title("领地 " + dominion.getName() + " 的尺寸信息")
|
||||
.subtitle("领地归属:" + owner.getLastKnownName())
|
||||
.addLine(Line.create().append("领地大小:").append((x2 - x1) + " x" + (y2 - y1) + " x" + (z2 - z1)))
|
||||
.addLine(Line.create().append("中心坐标:").append((x1 + (x2 - x1) / 2) + " " + (y1 + (y2 - y1) / 2) + " " + (z1 + (z2 - z1) / 2)))
|
||||
.addLine(Line.create().append("垂直高度:").append(String.valueOf(y2 - y1)))
|
||||
.addLine(Line.create().append("水平面积:").append(String.valueOf((x2 - x1) * (z2 - z1))))
|
||||
.addLine(Line.create().append("领地体积:").append(String.valueOf((x2 - x1) * (y2 - y1) * (z2 - z1))))
|
||||
.actionBar(Line.create()
|
||||
.append(Button.create("管理界面", "/dominion manage " + dominion.getName()))
|
||||
.append(Button.create("权限列表", "/dominion flag_info " + dominion.getName())))
|
||||
.showOn(player);
|
||||
}
|
||||
}
|
37
src/main/java/cn/lunadeer/dominion/tuis/ListDominion.java
Normal file
37
src/main/java/cn/lunadeer/dominion/tuis/ListDominion.java
Normal file
@ -0,0 +1,37 @@
|
||||
package cn.lunadeer.dominion.tuis;
|
||||
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import cn.lunadeer.dominion.utils.STUI.Button;
|
||||
import cn.lunadeer.dominion.utils.STUI.Line;
|
||||
import cn.lunadeer.dominion.utils.STUI.ListView;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
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.commands.Helper.playerDominions;
|
||||
import static cn.lunadeer.dominion.tuis.Apis.getPage;
|
||||
|
||||
public class ListDominion {
|
||||
public static void show(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
int page = getPage(args);
|
||||
ListView view = ListView.create(5, "/dominion list");
|
||||
List<String> dominions = playerDominions(sender);
|
||||
if (dominions.isEmpty()) {
|
||||
Notification.warn(sender, "你没有任何领地");
|
||||
return;
|
||||
}
|
||||
view.title("我的领地列表");
|
||||
view.navigator(Line.create().append(Button.create("主菜单", "/dominion menu")).append("我的领地"));
|
||||
for (String dominion : dominions) {
|
||||
TextComponent manage = Button.createGreen("管理", "/dominion manage " + dominion);
|
||||
TextComponent delete = Button.createRed("删除", "/dominion delete " + dominion);
|
||||
view.add(Line.create().append(dominion).append(manage).append(delete));
|
||||
}
|
||||
view.showOn(player, page);
|
||||
}
|
||||
}
|
28
src/main/java/cn/lunadeer/dominion/tuis/Menu.java
Normal file
28
src/main/java/cn/lunadeer/dominion/tuis/Menu.java
Normal file
@ -0,0 +1,28 @@
|
||||
package cn.lunadeer.dominion.tuis;
|
||||
|
||||
import cn.lunadeer.dominion.utils.STUI.Button;
|
||||
import cn.lunadeer.dominion.utils.STUI.Line;
|
||||
import cn.lunadeer.dominion.utils.STUI.View;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
|
||||
public class Menu {
|
||||
public static void show(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
Line list = Line.create()
|
||||
.append(Button.create("我的领地", "/dominion list"))
|
||||
.append("查看我的领地");
|
||||
Line help = Line.create()
|
||||
.append(Button.create("指令帮助", "/dominion help"))
|
||||
.append("查看指令帮助");
|
||||
View view = View.create();
|
||||
view.title("Dominion 领地系统")
|
||||
.navigator(Line.create().append("主菜单"))
|
||||
.addLine(list)
|
||||
.addLine(help)
|
||||
.showOn(player);
|
||||
}
|
||||
}
|
337
src/main/java/cn/lunadeer/dominion/tuis/PrivilegeInfo.java
Normal file
337
src/main/java/cn/lunadeer/dominion/tuis/PrivilegeInfo.java
Normal file
@ -0,0 +1,337 @@
|
||||
package cn.lunadeer.dominion.tuis;
|
||||
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||
import cn.lunadeer.dominion.utils.Notification;
|
||||
import cn.lunadeer.dominion.utils.STUI.Button;
|
||||
import cn.lunadeer.dominion.utils.STUI.Line;
|
||||
import cn.lunadeer.dominion.utils.STUI.ListView;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
import static cn.lunadeer.dominion.tuis.Apis.getDominion;
|
||||
import static cn.lunadeer.dominion.tuis.Apis.noAuthToManage;
|
||||
|
||||
public class PrivilegeInfo {
|
||||
// /dominion privilege_info <玩家名称> [领地名称] [页码]
|
||||
public static void show(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
DominionDTO dominion = getDominion(player, args);
|
||||
int page = 1;
|
||||
if (args.length == 4) {
|
||||
try {
|
||||
page = Integer.parseInt(args[3]);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
String playerName = args[1];
|
||||
if (dominion == null) {
|
||||
Notification.error(sender, "你不在任何领地内,请指定领地名称 /dominion privilege_info <玩家名称> [领地名称]");
|
||||
return;
|
||||
}
|
||||
ListView view = ListView.create(5, "/dominion privilege_info " + playerName + " " + dominion.getName());
|
||||
if (noAuthToManage(player, dominion)) return;
|
||||
PlayerDTO playerDTO = PlayerDTO.select(playerName);
|
||||
if (playerDTO == null) {
|
||||
Notification.error(sender, "玩家 " + playerName + " 不存在");
|
||||
return;
|
||||
}
|
||||
PlayerPrivilegeDTO privilege = PlayerPrivilegeDTO.select(playerDTO.getUuid(), dominion.getId());
|
||||
if (privilege == null) {
|
||||
Notification.warn(sender, "玩家 " + playerName + " 没有任何特权");
|
||||
return;
|
||||
}
|
||||
view.title("玩家 " + playerName + " 在领地 " + dominion.getName() + " 的特权信息");
|
||||
view.navigator(
|
||||
Line.create()
|
||||
.append(Button.create("主菜单", "/dominion menu"))
|
||||
.append(Button.create("我的领地", "/dominion list"))
|
||||
.append(Button.create("管理界面", "/dominion manage " + dominion.getName()))
|
||||
.append(Button.create("特权列表", "/dominion privilege_list " + dominion.getName()))
|
||||
.append("特权信息")
|
||||
);
|
||||
if (privilege.getAnchor()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " anchor false " + dominion.getName() + " " + page))
|
||||
.append("重生锚"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " anchor true " + dominion.getName() + " " + page))
|
||||
.append("重生锚"));
|
||||
}
|
||||
if (privilege.getAnimalKilling()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " animal_killing false " + dominion.getName() + " " + page))
|
||||
.append("动物伤害"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " animal_killing true " + dominion.getName() + " " + page))
|
||||
.append("动物伤害"));
|
||||
}
|
||||
if (privilege.getAnvil()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " anvil false " + dominion.getName() + " " + page))
|
||||
.append("使用铁砧"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " anvil true " + dominion.getName() + " " + page))
|
||||
.append("使用铁砧"));
|
||||
}
|
||||
if (privilege.getBeacon()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " beacon false " + dominion.getName() + " " + page))
|
||||
.append("信标交互"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " beacon true " + dominion.getName() + " " + page))
|
||||
.append("信标交互"));
|
||||
}
|
||||
if (privilege.getBed()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " bed false " + dominion.getName() + " " + page))
|
||||
.append("床交互"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " bed true " + dominion.getName() + " " + page))
|
||||
.append("床交互"));
|
||||
}
|
||||
if (privilege.getBrew()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " brew false " + dominion.getName() + " " + page))
|
||||
.append("使用酿造台"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " brew true " + dominion.getName() + " " + page))
|
||||
.append("使用酿造台"));
|
||||
}
|
||||
if (privilege.getButton()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " button false " + dominion.getName() + " " + page))
|
||||
.append("使用按钮"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " button true " + dominion.getName() + " " + page))
|
||||
.append("使用按钮"));
|
||||
}
|
||||
if (privilege.getCake()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " cake false " + dominion.getName() + " " + page))
|
||||
.append("使用蛋糕"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " cake true " + dominion.getName() + " " + page))
|
||||
.append("使用蛋糕"));
|
||||
}
|
||||
if (privilege.getContainer()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " container false " + dominion.getName() + " " + page))
|
||||
.append("容器交互"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " container true " + dominion.getName() + " " + page))
|
||||
.append("容器交互"));
|
||||
}
|
||||
if (privilege.getCraft()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " craft false " + dominion.getName() + " " + page))
|
||||
.append("合成"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " craft true " + dominion.getName() + " " + page))
|
||||
.append("合成"));
|
||||
}
|
||||
if (privilege.getDiode()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " diode false " + dominion.getName() + " " + page))
|
||||
.append("中继器交互"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " diode true " + dominion.getName() + " " + page))
|
||||
.append("中继器交互"));
|
||||
}
|
||||
if (privilege.getDoor()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " door false " + dominion.getName() + " " + page))
|
||||
.append("门交互"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " door true " + dominion.getName() + " " + page))
|
||||
.append("门交互"));
|
||||
}
|
||||
if (privilege.getDye()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " dye false " + dominion.getName() + " " + page))
|
||||
.append("染色"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " dye true " + dominion.getName() + " " + page))
|
||||
.append("染色"));
|
||||
}
|
||||
if (privilege.getEgg()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " egg false " + dominion.getName() + " " + page))
|
||||
.append("投掷鸡蛋"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " egg true " + dominion.getName() + " " + page))
|
||||
.append("投掷鸡蛋"));
|
||||
}
|
||||
if (privilege.getEnchant()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " enchant false " + dominion.getName() + " " + page))
|
||||
.append("附魔"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " enchant true " + dominion.getName() + " " + page))
|
||||
.append("附魔"));
|
||||
}
|
||||
if (privilege.getEnderPearl()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " ender_pearl false " + dominion.getName() + " " + page))
|
||||
.append("末影珍珠"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " ender_pearl true " + dominion.getName() + " " + page))
|
||||
.append("末影珍珠"));
|
||||
}
|
||||
if (privilege.getFeed()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " feed false " + dominion.getName() + " " + page))
|
||||
.append("喂食"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " feed true " + dominion.getName() + " " + page))
|
||||
.append("喂食"));
|
||||
}
|
||||
if (privilege.getGlow()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " glow false " + dominion.getName() + " " + page))
|
||||
.append("发光"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " glow true " + dominion.getName() + " " + page))
|
||||
.append("发光"));
|
||||
}
|
||||
if (privilege.getHoney()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " honey false " + dominion.getName() + " " + page))
|
||||
.append("蜂巢交互"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " honey true " + dominion.getName() + " " + page))
|
||||
.append("蜂巢交互"));
|
||||
}
|
||||
if (privilege.getHook()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " hook false " + dominion.getName() + " " + page))
|
||||
.append("钩子交互"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " hook true " + dominion.getName() + " " + page))
|
||||
.append("钩子交互"));
|
||||
}
|
||||
if (privilege.getIgnite()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " ignite false " + dominion.getName() + " " + page))
|
||||
.append("点燃"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " ignite true " + dominion.getName() + " " + page))
|
||||
.append("点燃"));
|
||||
}
|
||||
if (privilege.getMobKilling()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " mob_killing false " + dominion.getName() + " " + page))
|
||||
.append("生物伤害"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " mob_killing true " + dominion.getName() + " " + page))
|
||||
.append("生物伤害"));
|
||||
}
|
||||
if (privilege.getMove()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " move false " + dominion.getName() + " " + page))
|
||||
.append("移动"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " move true " + dominion.getName() + " " + page))
|
||||
.append("移动"));
|
||||
}
|
||||
if (privilege.getPlace()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " place false " + dominion.getName() + " " + page))
|
||||
.append("放置"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " place true " + dominion.getName() + " " + page))
|
||||
.append("放置"));
|
||||
}
|
||||
if (privilege.getPressure()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " pressure false " + dominion.getName() + " " + page))
|
||||
.append("压力板交互"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " pressure true " + dominion.getName() + " " + page))
|
||||
.append("压力板交互"));
|
||||
}
|
||||
if (privilege.getRiding()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " riding false " + dominion.getName() + " " + page))
|
||||
.append("骑乘"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " riding true " + dominion.getName() + " " + page))
|
||||
.append("骑乘"));
|
||||
}
|
||||
if (privilege.getShear()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " shear false " + dominion.getName() + " " + page))
|
||||
.append("剪羊毛"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " shear true " + dominion.getName() + " " + page))
|
||||
.append("剪羊毛"));
|
||||
}
|
||||
if (privilege.getShoot()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " shoot false " + dominion.getName() + " " + page))
|
||||
.append("发射"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " shoot true " + dominion.getName() + " " + page))
|
||||
.append("发射"));
|
||||
}
|
||||
if (privilege.getTrade()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " trade false " + dominion.getName() + " " + page))
|
||||
.append("交易"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " trade true " + dominion.getName() + " " + page))
|
||||
.append("交易"));
|
||||
}
|
||||
if (privilege.getVehicleDestroy()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " vehicle_destroy false " + dominion.getName() + " " + page))
|
||||
.append("破坏载具"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " vehicle_destroy true " + dominion.getName() + " " + page))
|
||||
.append("破坏载具"));
|
||||
}
|
||||
if (privilege.getHarvest()) {
|
||||
view.add(Line.create()
|
||||
.append(Button.createGreen("☑", "/dominion set_privilege " + playerName + " harvest false " + dominion.getName() + " " + page))
|
||||
.append("收获"));
|
||||
} else {
|
||||
view.add(Line.create()
|
||||
.append(Button.createRed("☐", "/dominion set_privilege " + playerName + " harvest true " + dominion.getName() + " " + page))
|
||||
.append("收获"));
|
||||
}
|
||||
view.showOn(player, page);
|
||||
}
|
||||
}
|
@ -105,13 +105,13 @@ public class Database {
|
||||
" FOREIGN KEY (parent_dom_id) REFERENCES dominion(id)" +
|
||||
");";
|
||||
|
||||
// privilege template
|
||||
sql += "CREATE TABLE IF NOT EXISTS privilege_template (" +
|
||||
// player privilege
|
||||
sql += "CREATE TABLE IF NOT EXISTS player_privilege (" +
|
||||
" id SERIAL PRIMARY KEY," +
|
||||
" name TEXT NOT NULL," +
|
||||
" creator VARCHAR(36) NOT NULL," +
|
||||
" team BOOLEAN NOT NULL DEFAULT TRUE," +
|
||||
" player_uuid VARCHAR(36) NOT NULL," +
|
||||
" dom_id INT NOT NULL," +
|
||||
|
||||
" admin BOOLEAN NOT NULL DEFAULT FALSE," +
|
||||
" anchor BOOLEAN NOT NULL DEFAULT FALSE," +
|
||||
" animal_killing BOOLEAN NOT NULL DEFAULT FALSE," +
|
||||
" anvil BOOLEAN NOT NULL DEFAULT FALSE," +
|
||||
@ -143,20 +143,9 @@ public class Database {
|
||||
" trade BOOLEAN NOT NULL DEFAULT FALSE," +
|
||||
" vehicle_destroy BOOLEAN NOT NULL DEFAULT FALSE," +
|
||||
" harvest BOOLEAN NOT NULL DEFAULT FALSE," +
|
||||
" UNIQUE (name, creator)," +
|
||||
" FOREIGN KEY (creator) REFERENCES player_name(uuid)" +
|
||||
");";
|
||||
|
||||
// player dominion privilege
|
||||
sql += "CREATE TABLE IF NOT EXISTS player_dom_privilege (" +
|
||||
" id SERIAL PRIMARY KEY," +
|
||||
" player_uuid VARCHAR(36) NOT NULL," +
|
||||
" admin BOOLEAN NOT NULL DEFAULT FALSE," +
|
||||
" dom_id INT NOT NULL," +
|
||||
" privilege_template_id INT NOT NULL," +
|
||||
" FOREIGN KEY (player_uuid) REFERENCES player_name(uuid)," +
|
||||
" FOREIGN KEY (dom_id) REFERENCES dominion(id)," +
|
||||
" FOREIGN KEY (privilege_template_id) REFERENCES privilege_template(id)" +
|
||||
" FOREIGN KEY (dom_id) REFERENCES dominion(id)" +
|
||||
");";
|
||||
|
||||
sql += "INSERT INTO player_name (" +
|
||||
|
@ -10,7 +10,6 @@ import java.util.List;
|
||||
import static cn.lunadeer.dominion.utils.STUI.ViewStyles.main_color;
|
||||
|
||||
public class View {
|
||||
protected TextComponent title_decorate = Component.text("━", main_color);
|
||||
protected TextComponent space = Component.text(" ");
|
||||
protected TextComponent sub_title_decorate = Component.text("- ", main_color);
|
||||
protected TextComponent line_decorate = Component.text("⌗ ", main_color);
|
||||
@ -23,18 +22,11 @@ public class View {
|
||||
protected TextComponent divide_line = Component.text("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━", main_color);
|
||||
|
||||
public void showOn(Player player) {
|
||||
player.sendMessage(edge);
|
||||
// player.sendMessage(edge);
|
||||
TextComponent.Builder builder = Component.text();
|
||||
int title_length = title.content().length();
|
||||
int title_width = title_length * 2 + 2;
|
||||
int decorate_count = divide_line.content().length() - title_width;
|
||||
for (int i = 0; i < decorate_count / 2; i++) {
|
||||
builder.append(title_decorate);
|
||||
}
|
||||
builder.append(Component.text("__/", main_color));
|
||||
builder.append(space).append(title).append(space);
|
||||
for (int i = 0; i < decorate_count / 2; i++) {
|
||||
builder.append(title_decorate);
|
||||
}
|
||||
builder.append(Component.text("\\__", main_color));
|
||||
player.sendMessage(builder.build());
|
||||
if (subtitle != null) {
|
||||
player.sendMessage(divide_line);
|
||||
|
Loading…
Reference in New Issue
Block a user