mirror of
https://github.com/ColdeZhang/Dominion.git
synced 2024-10-19 04:46:40 +08:00
新增所有领地界面、成员新增tag便于标识身份
This commit is contained in:
parent
033b103d35
commit
5c3e0d847b
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>cn.lunadeer</groupId>
|
<groupId>cn.lunadeer</groupId>
|
||||||
<artifactId>Dominion</artifactId>
|
<artifactId>Dominion</artifactId>
|
||||||
<version>1.30.5-beta</version>
|
<version>1.30.6-beta</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>Dominion</name>
|
<name>Dominion</name>
|
||||||
|
@ -235,6 +235,14 @@ public class Cache {
|
|||||||
return dominionTree;
|
return dominionTree;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<DominionNode> getAllDominionTree() {
|
||||||
|
List<DominionNode> dominionTree = new ArrayList<>();
|
||||||
|
for (List<DominionNode> tree : world_dominion_tree.values()) {
|
||||||
|
dominionTree.addAll(tree);
|
||||||
|
}
|
||||||
|
return dominionTree;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取玩家在指定领地的特权
|
* 获取玩家在指定领地的特权
|
||||||
* 如果玩家不存在特权,则返回null
|
* 如果玩家不存在特权,则返回null
|
||||||
|
@ -149,6 +149,9 @@ public class Commands implements TabExecutor {
|
|||||||
case "set_config":
|
case "set_config":
|
||||||
SetConfig.handler(sender, args);
|
SetConfig.handler(sender, args);
|
||||||
break;
|
break;
|
||||||
|
case "all_dominion":
|
||||||
|
AllDominion.show(sender, args);
|
||||||
|
break;
|
||||||
// ---=== CUI ===---
|
// ---=== CUI ===---
|
||||||
case "cui_rename":
|
case "cui_rename":
|
||||||
OpenCUI.RenameDominion(sender, args);
|
OpenCUI.RenameDominion(sender, args);
|
||||||
|
@ -350,15 +350,30 @@ public class DominionOperate {
|
|||||||
Notification.error(sender, "用法: /dominion tp <领地名称>");
|
Notification.error(sender, "用法: /dominion tp <领地名称>");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!Dominion.config.getTpEnable()) {
|
|
||||||
Notification.error(sender, "管理员没有开启领地传送功能");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
DominionDTO dominionDTO = DominionDTO.select(args[1]);
|
DominionDTO dominionDTO = DominionDTO.select(args[1]);
|
||||||
if (dominionDTO == null) {
|
if (dominionDTO == null) {
|
||||||
Notification.error(sender, "领地不存在");
|
Notification.error(sender, "领地不存在");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (player.isOp() && Dominion.config.getLimitOpBypass()) {
|
||||||
|
Notification.warn(sender, "你是OP,将忽略领地传送限制");
|
||||||
|
Location location = dominionDTO.getTpLocation();
|
||||||
|
if (location == null) {
|
||||||
|
int x = (dominionDTO.getX1() + dominionDTO.getX2()) / 2;
|
||||||
|
int z = (dominionDTO.getZ1() + dominionDTO.getZ2()) / 2;
|
||||||
|
World world = Dominion.instance.getServer().getWorld(dominionDTO.getWorld());
|
||||||
|
location = new Location(world, x, player.getLocation().getY(), z);
|
||||||
|
XLogger.warn("领地 %s 没有设置传送点,将尝试传送到中心点", dominionDTO.getName());
|
||||||
|
}
|
||||||
|
Teleport.doTeleportSafely(player, location);
|
||||||
|
Notification.info(player, "已将你传送到 " + dominionDTO.getName());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!Dominion.config.getTpEnable()) {
|
||||||
|
Notification.error(sender, "管理员没有开启领地传送功能");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
PlayerPrivilegeDTO privilegeDTO = PlayerPrivilegeDTO.select(player.getUniqueId(), dominionDTO.getId());
|
PlayerPrivilegeDTO privilegeDTO = PlayerPrivilegeDTO.select(player.getUniqueId(), dominionDTO.getId());
|
||||||
if (privilegeDTO == null) {
|
if (privilegeDTO == null) {
|
||||||
if (!dominionDTO.getFlagValue(Flag.TELEPORT)) {
|
if (!dominionDTO.getFlagValue(Flag.TELEPORT)) {
|
||||||
|
35
src/main/java/cn/lunadeer/dominion/tuis/AllDominion.java
Normal file
35
src/main/java/cn/lunadeer/dominion/tuis/AllDominion.java
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
package cn.lunadeer.dominion.tuis;
|
||||||
|
|
||||||
|
import cn.lunadeer.dominion.Cache;
|
||||||
|
import cn.lunadeer.dominion.DominionNode;
|
||||||
|
import cn.lunadeer.minecraftpluginutils.stui.ListView;
|
||||||
|
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
|
||||||
|
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||||
|
import static cn.lunadeer.dominion.tuis.Apis.getPage;
|
||||||
|
import static cn.lunadeer.dominion.tuis.Apis.notOp;
|
||||||
|
import static cn.lunadeer.dominion.tuis.ListDominion.BuildTreeLines;
|
||||||
|
|
||||||
|
public class AllDominion {
|
||||||
|
|
||||||
|
public static void show(CommandSender sender, String[] args) {
|
||||||
|
Player player = playerOnly(sender);
|
||||||
|
if (player == null) return;
|
||||||
|
if (notOp(player)) return;
|
||||||
|
int page = getPage(args);
|
||||||
|
|
||||||
|
List<DominionNode> allDominions = Cache.instance.getAllDominionTree();
|
||||||
|
|
||||||
|
ListView view = ListView.create(10, "/dominion all_dominion");
|
||||||
|
|
||||||
|
view.title("所有领地");
|
||||||
|
view.navigator(Line.create().append(Button.create("主菜单").setExecuteCommand("/dominion menu").build()).append("所有领地"));
|
||||||
|
view.addLines(BuildTreeLines(allDominions, 0));
|
||||||
|
view.showOn(player, page);
|
||||||
|
}
|
||||||
|
}
|
@ -71,6 +71,14 @@ public class Apis {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean notOp(CommandSender sender) {
|
||||||
|
if (!sender.isOp()) {
|
||||||
|
Notification.error(sender, "你没有权限访问此页面");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public static void printHelp(CommandSender sender, String[] args) {
|
public static void printHelp(CommandSender sender, String[] args) {
|
||||||
Player player = playerOnly(sender);
|
Player player = playerOnly(sender);
|
||||||
if (player == null) return;
|
if (player == null) return;
|
||||||
|
@ -13,11 +13,13 @@ import org.bukkit.entity.Player;
|
|||||||
|
|
||||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||||
import static cn.lunadeer.dominion.tuis.Apis.getPage;
|
import static cn.lunadeer.dominion.tuis.Apis.getPage;
|
||||||
|
import static cn.lunadeer.dominion.tuis.Apis.notOp;
|
||||||
|
|
||||||
public class DominionConfig {
|
public class DominionConfig {
|
||||||
public static void show(CommandSender sender, String[] args) {
|
public static void show(CommandSender sender, String[] args) {
|
||||||
Player player = playerOnly(sender);
|
Player player = playerOnly(sender);
|
||||||
if (player == null) return;
|
if (player == null) return;
|
||||||
|
if (notOp(player)) return;
|
||||||
int page = getPage(args);
|
int page = getPage(args);
|
||||||
ListView view = ListView.create(10, "/dominion config");
|
ListView view = ListView.create(10, "/dominion config");
|
||||||
view.title("系统配置");
|
view.title("系统配置");
|
||||||
|
@ -1,12 +1,18 @@
|
|||||||
package cn.lunadeer.dominion.tuis;
|
package cn.lunadeer.dominion.tuis;
|
||||||
|
|
||||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||||
|
import cn.lunadeer.dominion.dtos.Flag;
|
||||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||||
import cn.lunadeer.minecraftpluginutils.stui.ListView;
|
import cn.lunadeer.minecraftpluginutils.stui.ListView;
|
||||||
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
|
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
|
||||||
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
|
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.TextComponent;
|
||||||
|
import net.kyori.adventure.text.format.Style;
|
||||||
|
import net.kyori.adventure.text.format.TextColor;
|
||||||
|
import net.kyori.adventure.text.format.TextDecoration;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@ -48,8 +54,19 @@ public class DominionPrivilegeList {
|
|||||||
for (PlayerPrivilegeDTO privilege : privileges) {
|
for (PlayerPrivilegeDTO privilege : privileges) {
|
||||||
PlayerDTO p_player = PlayerDTO.select(privilege.getPlayerUUID());
|
PlayerDTO p_player = PlayerDTO.select(privilege.getPlayerUUID());
|
||||||
if (p_player == null) continue;
|
if (p_player == null) continue;
|
||||||
Line line = Line.create()
|
Line line = Line.create();
|
||||||
.append(p_player.getLastKnownName())
|
|
||||||
|
if (privilege.getAdmin()) {
|
||||||
|
line.append(adminTag);
|
||||||
|
} else {
|
||||||
|
if (!privilege.getFlagValue(Flag.MOVE)) {
|
||||||
|
line.append(banTag);
|
||||||
|
} else {
|
||||||
|
line.append(normalTag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
line.append(p_player.getLastKnownName())
|
||||||
.append(Button.createGreen("配置权限").setExecuteCommand("/dominion privilege_info " + p_player.getLastKnownName() + " " + dominion.getName()).build());
|
.append(Button.createGreen("配置权限").setExecuteCommand("/dominion privilege_info " + p_player.getLastKnownName() + " " + dominion.getName()).build());
|
||||||
if ((!player.getName().equals(p_player.getLastKnownName()) && !privilege.getAdmin()) || dominion.getOwner().equals(player.getUniqueId()))
|
if ((!player.getName().equals(p_player.getLastKnownName()) && !privilege.getAdmin()) || dominion.getOwner().equals(player.getUniqueId()))
|
||||||
line.append(Button.createRed("移除成员").setExecuteCommand("/dominion clear_privilege " + p_player.getLastKnownName() + " " + dominion.getName() + " b").build());
|
line.append(Button.createRed("移除成员").setExecuteCommand("/dominion clear_privilege " + p_player.getLastKnownName() + " " + dominion.getName() + " b").build());
|
||||||
@ -57,4 +74,11 @@ public class DominionPrivilegeList {
|
|||||||
}
|
}
|
||||||
view.showOn(player, page);
|
view.showOn(player, page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final TextComponent adminTag = Component.text("[A]", Style.style(TextColor.color(97, 97, 210)))
|
||||||
|
.hoverEvent(Component.text("这是一个管理员"));
|
||||||
|
private static final TextComponent normalTag = Component.text("[N]", Style.style(TextColor.color(255, 255, 255)))
|
||||||
|
.hoverEvent(Component.text("这是一个普通成员"));
|
||||||
|
private static final TextComponent banTag = Component.text("[B]", Style.style(TextColor.color(255, 67, 0)))
|
||||||
|
.hoverEvent(Component.text("这是一个黑名单成员"));
|
||||||
}
|
}
|
||||||
|
@ -24,13 +24,15 @@ public class ListDominion {
|
|||||||
if (player == null) return;
|
if (player == null) return;
|
||||||
int page = getPage(args);
|
int page = getPage(args);
|
||||||
ListView view = ListView.create(10, "/dominion list");
|
ListView view = ListView.create(10, "/dominion list");
|
||||||
// 根据id从小到大排序
|
|
||||||
List<String> admin_dominions = playerAdminDominions(sender);
|
|
||||||
|
|
||||||
view.title("我的领地列表");
|
view.title("我的领地列表");
|
||||||
view.navigator(Line.create().append(Button.create("主菜单").setExecuteCommand("/dominion menu").build()).append("我的领地"));
|
view.navigator(Line.create().append(Button.create("主菜单").setExecuteCommand("/dominion menu").build()).append("我的领地"));
|
||||||
view.addLines(BuildTreeLines(Cache.instance.getDominionTreeByPlayer(player.getName()), 0));
|
view.addLines(BuildTreeLines(Cache.instance.getDominionTreeByPlayer(player.getName()), 0));
|
||||||
view.add(Line.create().append(Component.text("-= 以下为你拥有管理员权限的领地 =-", ViewStyles.main_color)));
|
List<String> admin_dominions = playerAdminDominions(sender);
|
||||||
|
if (admin_dominions.size() != 0) {
|
||||||
|
view.add(Line.create().append(""));
|
||||||
|
view.add(Line.create().append(Component.text("--- 以下为你拥有管理员权限的领地 ---", ViewStyles.main_color)));
|
||||||
|
}
|
||||||
for (String dominion : admin_dominions) {
|
for (String dominion : admin_dominions) {
|
||||||
TextComponent manage = Button.createGreen("管理").setExecuteCommand("/dominion manage " + dominion).build();
|
TextComponent manage = Button.createGreen("管理").setExecuteCommand("/dominion manage " + dominion).build();
|
||||||
view.add(Line.create().append(manage).append(dominion));
|
view.add(Line.create().append(manage).append(dominion));
|
||||||
@ -38,7 +40,7 @@ public class ListDominion {
|
|||||||
view.showOn(player, page);
|
view.showOn(player, page);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<Line> BuildTreeLines(List<DominionNode> dominionTree, Integer depth) {
|
public static List<Line> BuildTreeLines(List<DominionNode> dominionTree, Integer depth) {
|
||||||
List<Line> lines = new ArrayList<>();
|
List<Line> lines = new ArrayList<>();
|
||||||
StringBuilder prefix = new StringBuilder();
|
StringBuilder prefix = new StringBuilder();
|
||||||
for (int i = 0; i < depth; i++) {
|
for (int i = 0; i < depth; i++) {
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
package cn.lunadeer.dominion.tuis;
|
package cn.lunadeer.dominion.tuis;
|
||||||
|
|
||||||
import cn.lunadeer.minecraftpluginutils.stui.ListView;
|
import cn.lunadeer.minecraftpluginutils.stui.ListView;
|
||||||
|
import cn.lunadeer.minecraftpluginutils.stui.ViewStyles;
|
||||||
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
|
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
|
||||||
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
|
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@ -24,6 +26,9 @@ public class Menu {
|
|||||||
Line link = Line.create()
|
Line link = Line.create()
|
||||||
.append(Button.create("使用文档").setOpenURL("https://ssl.lunadeer.cn:14448/doc/23/").build())
|
.append(Button.create("使用文档").setOpenURL("https://ssl.lunadeer.cn:14448/doc/23/").build())
|
||||||
.append("在浏览器中打开使用文档");
|
.append("在浏览器中打开使用文档");
|
||||||
|
Line all = Line.create()
|
||||||
|
.append(Button.create("所有领地").setExecuteCommand("/dominion all_dominion").build())
|
||||||
|
.append("查看所有领地");
|
||||||
Line config = Line.create()
|
Line config = Line.create()
|
||||||
.append(Button.create("系统配置").setExecuteCommand("/dominion config").build())
|
.append(Button.create("系统配置").setExecuteCommand("/dominion config").build())
|
||||||
.append("查看/修改系统配置");
|
.append("查看/修改系统配置");
|
||||||
@ -42,7 +47,8 @@ public class Menu {
|
|||||||
.add(link);
|
.add(link);
|
||||||
if (player.isOp()) {
|
if (player.isOp()) {
|
||||||
view.add(Line.create().append(""));
|
view.add(Line.create().append(""));
|
||||||
view.add(Line.create().append("---以下选项仅OP可见---"));
|
view.add(Line.create().append(Component.text("--- 以下选项仅OP可见 ---", ViewStyles.main_color)));
|
||||||
|
view.add(all);
|
||||||
view.add(config);
|
view.add(config);
|
||||||
view.add(reload_cache);
|
view.add(reload_cache);
|
||||||
view.add(reload_config);
|
view.add(reload_config);
|
||||||
|
Loading…
Reference in New Issue
Block a user