将tnt爆炸、火焰蔓延等领地独有的(非玩家行为)控制从“访客权限”移动到“环境设置”,避免歧义
All checks were successful
Java CI-CD with Maven / build (push) Successful in 7m34s
All checks were successful
Java CI-CD with Maven / build (push) Successful in 7m34s
This commit is contained in:
parent
4bd817bd84
commit
2299630e15
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>cn.lunadeer</groupId>
|
||||
<artifactId>Dominion</artifactId>
|
||||
<version>1.31.6-beta</version>
|
||||
<version>1.32.0-beta</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Dominion</name>
|
||||
|
@ -177,6 +177,9 @@ public class Commands implements TabExecutor {
|
||||
case "set_map_color":
|
||||
DominionOperate.setMapColor(sender, args);
|
||||
break;
|
||||
case "env_info":
|
||||
DominionEnvInfo.show(sender, args);
|
||||
break;
|
||||
// ---=== CUI ===---
|
||||
case "cui_rename":
|
||||
RenameDominion.open(sender, args);
|
||||
|
@ -2,6 +2,8 @@ package cn.lunadeer.dominion.commands;
|
||||
|
||||
import cn.lunadeer.dominion.controllers.BukkitPlayerOperator;
|
||||
import cn.lunadeer.dominion.controllers.FlagsController;
|
||||
import cn.lunadeer.dominion.dtos.Flag;
|
||||
import cn.lunadeer.dominion.tuis.DominionEnvInfo;
|
||||
import cn.lunadeer.dominion.tuis.DominionFlagInfo;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@ -29,10 +31,15 @@ public class DominionFlag {
|
||||
} else if (args.length == 5) {
|
||||
FlagsController.setFlag(operator, args[1], Boolean.parseBoolean(args[2]), args[3]);
|
||||
String[] newArgs = new String[3];
|
||||
newArgs[0] = "flag_info";
|
||||
newArgs[0] = Flag.isDominionOnlyFlag(args[1]) ? "env_info" : "flag_info";
|
||||
newArgs[1] = args[3];
|
||||
newArgs[2] = args[4];
|
||||
DominionFlagInfo.show(sender, newArgs);
|
||||
if (Flag.isDominionOnlyFlag(args[1])) {
|
||||
DominionEnvInfo.show(sender, newArgs);
|
||||
} else {
|
||||
DominionFlagInfo.show(sender, newArgs);
|
||||
}
|
||||
|
||||
} else {
|
||||
Notification.error(sender, "用法: /dominion set <权限名称> <true/false> [领地名称]");
|
||||
}
|
||||
|
@ -120,6 +120,26 @@ public enum Flag {
|
||||
return Arrays.asList(Flag.values());
|
||||
}
|
||||
|
||||
public static List<Flag> getDominionOnlyFlagsEnabled() {
|
||||
List<Flag> flags = new ArrayList<>();
|
||||
for (Flag flag : Flag.values()) {
|
||||
if (!flag.dominion_only) {
|
||||
continue;
|
||||
}
|
||||
if (!flag.enable) {
|
||||
continue;
|
||||
}
|
||||
flags.add(flag);
|
||||
}
|
||||
Comparator<Object> comparator = Collator.getInstance(java.util.Locale.CHINA);
|
||||
flags.sort((o1, o2) -> comparator.compare(o1.getDisplayName(), o2.getDisplayName()));
|
||||
return flags;
|
||||
}
|
||||
|
||||
public static boolean isDominionOnlyFlag(String flagName) {
|
||||
return getFlag(flagName).dominion_only;
|
||||
}
|
||||
|
||||
public static List<Flag> getDominionFlagsEnabled() {
|
||||
List<Flag> flags = new ArrayList<>();
|
||||
for (Flag flag : Flag.values()) {
|
||||
|
61
src/main/java/cn/lunadeer/dominion/tuis/DominionEnvInfo.java
Normal file
61
src/main/java/cn/lunadeer/dominion/tuis/DominionEnvInfo.java
Normal file
@ -0,0 +1,61 @@
|
||||
package cn.lunadeer.dominion.tuis;
|
||||
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.Flag;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.ListView;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
|
||||
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
|
||||
public class DominionEnvInfo {
|
||||
|
||||
public static void show(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length < 2) {
|
||||
Notification.error(sender, "用法: /dominion env_info <领地名称> [页码]");
|
||||
return;
|
||||
}
|
||||
DominionDTO dominion = DominionDTO.select(args[1]);
|
||||
if (dominion == null) {
|
||||
Notification.error(sender, "领地 %s 不存在", args[1]);
|
||||
return;
|
||||
}
|
||||
int page = 1;
|
||||
if (args.length == 3) {
|
||||
try {
|
||||
page = Integer.parseInt(args[2]);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
ListView view = ListView.create(10, "/dominion env_info " + dominion.getName());
|
||||
view.title("领地 " + dominion.getName() + " 环境设置")
|
||||
.navigator(Line.create()
|
||||
.append(Button.create("主菜单").setExecuteCommand("/dominion menu").build())
|
||||
.append(Button.create("我的领地").setExecuteCommand("/dominion list").build())
|
||||
.append(Button.create("管理界面").setExecuteCommand("/dominion manage " + dominion.getName()).build())
|
||||
.append("环境设置"));
|
||||
for (Flag flag : Flag.getDominionOnlyFlagsEnabled()) {
|
||||
view.add(createOption(flag, dominion.getFlagValue(flag), dominion.getName(), page));
|
||||
}
|
||||
view.showOn(player, page);
|
||||
}
|
||||
|
||||
private static Line createOption(Flag flag, boolean value, String dominion_name, int page) {
|
||||
if (value) {
|
||||
return Line.create()
|
||||
.append(Button.createGreen("☑").setExecuteCommand("/dominion set " + flag.getFlagName() + " false " + dominion_name + " " + page).build())
|
||||
.append(Component.text(flag.getDisplayName()).hoverEvent(Component.text(flag.getDescription())));
|
||||
} else {
|
||||
return Line.create()
|
||||
.append(Button.createRed("☐").setExecuteCommand("/dominion set " + flag.getFlagName() + " true " + dominion_name + " " + page).build())
|
||||
.append(Component.text(flag.getDisplayName()).hoverEvent(Component.text(flag.getDescription())));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -40,7 +40,7 @@ public class DominionFlagInfo {
|
||||
.append(Button.create("我的领地").setExecuteCommand("/dominion list").build())
|
||||
.append(Button.create("管理界面").setExecuteCommand("/dominion manage " + dominion.getName()).build())
|
||||
.append("访客权限"));
|
||||
for (Flag flag : Flag.getDominionFlagsEnabled()) {
|
||||
for (Flag flag : Flag.getPrivilegeFlagsEnabled()) {
|
||||
view.add(createOption(flag, dominion.getFlagValue(flag), dominion.getName(), page));
|
||||
}
|
||||
view.showOn(player, page);
|
||||
|
@ -28,6 +28,9 @@ public class DominionManage {
|
||||
Line size_info = Line.create()
|
||||
.append(Button.create("详细信息").setExecuteCommand("/dominion info " + dominion.getName()).build())
|
||||
.append("查看领地详细信息");
|
||||
Line env_info = Line.create()
|
||||
.append(Button.create("环境设置").setExecuteCommand("/dominion env_info " + dominion.getName()).build())
|
||||
.append("设置领地内的一些非玩家相关效果");
|
||||
Line flag_info = Line.create()
|
||||
.append(Button.create("访客权限").setExecuteCommand("/dominion flag_info " + dominion.getName()).build())
|
||||
.append("访客在此领地的权限");
|
||||
@ -58,6 +61,7 @@ public class DominionManage {
|
||||
.append(Button.create("我的领地").setExecuteCommand("/dominion list").build())
|
||||
.append(dominion.getName()))
|
||||
.add(size_info)
|
||||
.add(env_info)
|
||||
.add(flag_info)
|
||||
.add(privilege_list)
|
||||
.add(set_tp)
|
||||
|
Reference in New Issue
Block a user