mirror of
https://github.com/ColdeZhang/Dominion.git
synced 2024-10-19 00:36:40 +08:00
将tnt爆炸、火焰蔓延等领地独有的(非玩家行为)控制从“访客权限”移动到“环境设置”,避免歧义
This commit is contained in:
parent
4bd817bd84
commit
2299630e15
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.31.6-beta</version>
|
<version>1.32.0-beta</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>Dominion</name>
|
<name>Dominion</name>
|
||||||
|
@ -177,6 +177,9 @@ public class Commands implements TabExecutor {
|
|||||||
case "set_map_color":
|
case "set_map_color":
|
||||||
DominionOperate.setMapColor(sender, args);
|
DominionOperate.setMapColor(sender, args);
|
||||||
break;
|
break;
|
||||||
|
case "env_info":
|
||||||
|
DominionEnvInfo.show(sender, args);
|
||||||
|
break;
|
||||||
// ---=== CUI ===---
|
// ---=== CUI ===---
|
||||||
case "cui_rename":
|
case "cui_rename":
|
||||||
RenameDominion.open(sender, args);
|
RenameDominion.open(sender, args);
|
||||||
|
@ -2,6 +2,8 @@ package cn.lunadeer.dominion.commands;
|
|||||||
|
|
||||||
import cn.lunadeer.dominion.controllers.BukkitPlayerOperator;
|
import cn.lunadeer.dominion.controllers.BukkitPlayerOperator;
|
||||||
import cn.lunadeer.dominion.controllers.FlagsController;
|
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.dominion.tuis.DominionFlagInfo;
|
||||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@ -29,10 +31,15 @@ public class DominionFlag {
|
|||||||
} else if (args.length == 5) {
|
} else if (args.length == 5) {
|
||||||
FlagsController.setFlag(operator, args[1], Boolean.parseBoolean(args[2]), args[3]);
|
FlagsController.setFlag(operator, args[1], Boolean.parseBoolean(args[2]), args[3]);
|
||||||
String[] newArgs = new String[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[1] = args[3];
|
||||||
newArgs[2] = args[4];
|
newArgs[2] = args[4];
|
||||||
DominionFlagInfo.show(sender, newArgs);
|
if (Flag.isDominionOnlyFlag(args[1])) {
|
||||||
|
DominionEnvInfo.show(sender, newArgs);
|
||||||
|
} else {
|
||||||
|
DominionFlagInfo.show(sender, newArgs);
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Notification.error(sender, "用法: /dominion set <权限名称> <true/false> [领地名称]");
|
Notification.error(sender, "用法: /dominion set <权限名称> <true/false> [领地名称]");
|
||||||
}
|
}
|
||||||
|
@ -120,6 +120,26 @@ public enum Flag {
|
|||||||
return Arrays.asList(Flag.values());
|
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() {
|
public static List<Flag> getDominionFlagsEnabled() {
|
||||||
List<Flag> flags = new ArrayList<>();
|
List<Flag> flags = new ArrayList<>();
|
||||||
for (Flag flag : Flag.values()) {
|
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 list").build())
|
||||||
.append(Button.create("管理界面").setExecuteCommand("/dominion manage " + dominion.getName()).build())
|
.append(Button.create("管理界面").setExecuteCommand("/dominion manage " + dominion.getName()).build())
|
||||||
.append("访客权限"));
|
.append("访客权限"));
|
||||||
for (Flag flag : Flag.getDominionFlagsEnabled()) {
|
for (Flag flag : Flag.getPrivilegeFlagsEnabled()) {
|
||||||
view.add(createOption(flag, dominion.getFlagValue(flag), dominion.getName(), page));
|
view.add(createOption(flag, dominion.getFlagValue(flag), dominion.getName(), page));
|
||||||
}
|
}
|
||||||
view.showOn(player, page);
|
view.showOn(player, page);
|
||||||
|
@ -28,6 +28,9 @@ public class DominionManage {
|
|||||||
Line size_info = Line.create()
|
Line size_info = Line.create()
|
||||||
.append(Button.create("详细信息").setExecuteCommand("/dominion info " + dominion.getName()).build())
|
.append(Button.create("详细信息").setExecuteCommand("/dominion info " + dominion.getName()).build())
|
||||||
.append("查看领地详细信息");
|
.append("查看领地详细信息");
|
||||||
|
Line env_info = Line.create()
|
||||||
|
.append(Button.create("环境设置").setExecuteCommand("/dominion env_info " + dominion.getName()).build())
|
||||||
|
.append("设置领地内的一些非玩家相关效果");
|
||||||
Line flag_info = Line.create()
|
Line flag_info = Line.create()
|
||||||
.append(Button.create("访客权限").setExecuteCommand("/dominion flag_info " + dominion.getName()).build())
|
.append(Button.create("访客权限").setExecuteCommand("/dominion flag_info " + dominion.getName()).build())
|
||||||
.append("访客在此领地的权限");
|
.append("访客在此领地的权限");
|
||||||
@ -58,6 +61,7 @@ public class DominionManage {
|
|||||||
.append(Button.create("我的领地").setExecuteCommand("/dominion list").build())
|
.append(Button.create("我的领地").setExecuteCommand("/dominion list").build())
|
||||||
.append(dominion.getName()))
|
.append(dominion.getName()))
|
||||||
.add(size_info)
|
.add(size_info)
|
||||||
|
.add(env_info)
|
||||||
.add(flag_info)
|
.add(flag_info)
|
||||||
.add(privilege_list)
|
.add(privilege_list)
|
||||||
.add(set_tp)
|
.add(set_tp)
|
||||||
|
Loading…
Reference in New Issue
Block a user