mirror of
https://github.com/ColdeZhang/Dominion.git
synced 2025-02-04 22:49:41 +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>
|
||||
<artifactId>Dominion</artifactId>
|
||||
<version>1.30.5-beta</version>
|
||||
<version>1.30.6-beta</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Dominion</name>
|
||||
|
@ -235,6 +235,14 @@ public class Cache {
|
||||
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
|
||||
|
@ -149,6 +149,9 @@ public class Commands implements TabExecutor {
|
||||
case "set_config":
|
||||
SetConfig.handler(sender, args);
|
||||
break;
|
||||
case "all_dominion":
|
||||
AllDominion.show(sender, args);
|
||||
break;
|
||||
// ---=== CUI ===---
|
||||
case "cui_rename":
|
||||
OpenCUI.RenameDominion(sender, args);
|
||||
|
@ -350,15 +350,30 @@ public class DominionOperate {
|
||||
Notification.error(sender, "用法: /dominion tp <领地名称>");
|
||||
return;
|
||||
}
|
||||
if (!Dominion.config.getTpEnable()) {
|
||||
Notification.error(sender, "管理员没有开启领地传送功能");
|
||||
return;
|
||||
}
|
||||
DominionDTO dominionDTO = DominionDTO.select(args[1]);
|
||||
if (dominionDTO == null) {
|
||||
Notification.error(sender, "领地不存在");
|
||||
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());
|
||||
if (privilegeDTO == null) {
|
||||
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;
|
||||
}
|
||||
|
||||
public static boolean notOp(CommandSender sender) {
|
||||
if (!sender.isOp()) {
|
||||
Notification.error(sender, "你没有权限访问此页面");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void printHelp(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
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.tuis.Apis.getPage;
|
||||
import static cn.lunadeer.dominion.tuis.Apis.notOp;
|
||||
|
||||
public class DominionConfig {
|
||||
public static void show(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (notOp(player)) return;
|
||||
int page = getPage(args);
|
||||
ListView view = ListView.create(10, "/dominion config");
|
||||
view.title("系统配置");
|
||||
|
@ -1,12 +1,18 @@
|
||||
package cn.lunadeer.dominion.tuis;
|
||||
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.Flag;
|
||||
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.ListView;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
|
||||
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.entity.Player;
|
||||
|
||||
@ -48,8 +54,19 @@ public class DominionPrivilegeList {
|
||||
for (PlayerPrivilegeDTO privilege : privileges) {
|
||||
PlayerDTO p_player = PlayerDTO.select(privilege.getPlayerUUID());
|
||||
if (p_player == null) continue;
|
||||
Line line = Line.create()
|
||||
.append(p_player.getLastKnownName())
|
||||
Line line = Line.create();
|
||||
|
||||
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());
|
||||
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());
|
||||
@ -57,4 +74,11 @@ public class DominionPrivilegeList {
|
||||
}
|
||||
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;
|
||||
int page = getPage(args);
|
||||
ListView view = ListView.create(10, "/dominion list");
|
||||
// 根据id从小到大排序
|
||||
List<String> admin_dominions = playerAdminDominions(sender);
|
||||
|
||||
view.title("我的领地列表");
|
||||
view.navigator(Line.create().append(Button.create("主菜单").setExecuteCommand("/dominion menu").build()).append("我的领地"));
|
||||
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) {
|
||||
TextComponent manage = Button.createGreen("管理").setExecuteCommand("/dominion manage " + dominion).build();
|
||||
view.add(Line.create().append(manage).append(dominion));
|
||||
@ -38,7 +40,7 @@ public class ListDominion {
|
||||
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<>();
|
||||
StringBuilder prefix = new StringBuilder();
|
||||
for (int i = 0; i < depth; i++) {
|
||||
|
@ -1,8 +1,10 @@
|
||||
package cn.lunadeer.dominion.tuis;
|
||||
|
||||
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.Line;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@ -24,6 +26,9 @@ public class Menu {
|
||||
Line link = Line.create()
|
||||
.append(Button.create("使用文档").setOpenURL("https://ssl.lunadeer.cn:14448/doc/23/").build())
|
||||
.append("在浏览器中打开使用文档");
|
||||
Line all = Line.create()
|
||||
.append(Button.create("所有领地").setExecuteCommand("/dominion all_dominion").build())
|
||||
.append("查看所有领地");
|
||||
Line config = Line.create()
|
||||
.append(Button.create("系统配置").setExecuteCommand("/dominion config").build())
|
||||
.append("查看/修改系统配置");
|
||||
@ -42,7 +47,8 @@ public class Menu {
|
||||
.add(link);
|
||||
if (player.isOp()) {
|
||||
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(reload_cache);
|
||||
view.add(reload_config);
|
||||
|
Loading…
Reference in New Issue
Block a user