新增权限节点功能
This commit is contained in:
parent
d348ee76f9
commit
ee2cc157d0
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>cn.lunadeer</groupId>
|
||||
<artifactId>Dominion</artifactId>
|
||||
<version>1.41.0-beta</version>
|
||||
<version>1.42.0-beta</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Dominion</name>
|
||||
|
@ -19,6 +19,14 @@ public class Apis {
|
||||
return (Player) sender;
|
||||
}
|
||||
|
||||
public static boolean hasPermission(CommandSender sender, String permission) {
|
||||
if (!sender.hasPermission(permission)) {
|
||||
Notification.error(sender, "你没有 %s 权限执行此命令", permission);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void sizeInfo(CommandSender sender, DominionDTO dominionDTO) {
|
||||
Integer x1 = dominionDTO.getX1();
|
||||
Integer y1 = dominionDTO.getY1();
|
||||
@ -52,17 +60,6 @@ public class Apis {
|
||||
return points;
|
||||
}
|
||||
|
||||
public static boolean notOpOrConsole(CommandSender sender) {
|
||||
if (sender instanceof Player) {
|
||||
Player player = (Player) sender;
|
||||
if (!player.isOp()) {
|
||||
Notification.warn(player, "你没有权限使用此命令");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static String CommandParser(String command, Object... args) {
|
||||
return String.format(command, args);
|
||||
}
|
||||
|
@ -7,9 +7,8 @@ import cn.lunadeer.dominion.tuis.dominion.manage.EnvSetting;
|
||||
import cn.lunadeer.dominion.tuis.dominion.manage.GuestSetting;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
import static cn.lunadeer.dominion.commands.Apis.hasPermission;
|
||||
|
||||
public class DominionFlag {
|
||||
|
||||
@ -21,9 +20,10 @@ public class DominionFlag {
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void setDominionFlag(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
if (args.length == 3) {
|
||||
FlagsController.setFlag(operator, args[1], Boolean.parseBoolean(args[2]));
|
||||
} else if (args.length == 4) {
|
||||
|
@ -21,8 +21,7 @@ import java.time.LocalDateTime;
|
||||
import java.util.Map;
|
||||
|
||||
import static cn.lunadeer.dominion.DominionNode.isInDominion;
|
||||
import static cn.lunadeer.dominion.commands.Apis.autoPoints;
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
import static cn.lunadeer.dominion.commands.Apis.*;
|
||||
|
||||
public class DominionOperate {
|
||||
/**
|
||||
@ -33,6 +32,9 @@ public class DominionOperate {
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void createDominion(CommandSender sender, String[] args) {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length != 2) {
|
||||
@ -57,6 +59,9 @@ public class DominionOperate {
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void createSubDominion(CommandSender sender, String[] args) {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length != 2 && args.length != 3) {
|
||||
@ -85,6 +90,9 @@ public class DominionOperate {
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void autoCreateDominion(CommandSender sender, String[] args) {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length != 2) {
|
||||
@ -108,6 +116,9 @@ public class DominionOperate {
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void autoCreateSubDominion(CommandSender sender, String[] args) {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length != 2 && args.length != 3) {
|
||||
@ -130,6 +141,9 @@ public class DominionOperate {
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void expandDominion(CommandSender sender, String[] args) {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length != 2 && args.length != 3) {
|
||||
@ -167,6 +181,9 @@ public class DominionOperate {
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void contractDominion(CommandSender sender, String[] args) {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length != 2 && args.length != 3) {
|
||||
@ -204,9 +221,10 @@ public class DominionOperate {
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void deleteDominion(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
if (args.length == 2) {
|
||||
String name = args[1];
|
||||
DominionController.delete(operator, name, false);
|
||||
@ -230,9 +248,10 @@ public class DominionOperate {
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void setEnterMessage(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
if (args.length == 2) {
|
||||
DominionController.setJoinMessage(operator, args[1]);
|
||||
return;
|
||||
@ -252,9 +271,10 @@ public class DominionOperate {
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void setLeaveMessage(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
if (args.length == 2) {
|
||||
DominionController.setLeaveMessage(operator, args[1]);
|
||||
return;
|
||||
@ -274,6 +294,9 @@ public class DominionOperate {
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void setTpLocation(CommandSender sender, String[] args) {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
@ -299,9 +322,10 @@ public class DominionOperate {
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void renameDominion(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
if (args.length != 3) {
|
||||
Notification.error(sender, "用法: /dominion rename <原领地名称> <新领地名称>");
|
||||
return;
|
||||
@ -317,9 +341,10 @@ public class DominionOperate {
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void giveDominion(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
if (args.length == 3) {
|
||||
String dom_name = args[1];
|
||||
String player_name = args[2];
|
||||
@ -345,6 +370,9 @@ public class DominionOperate {
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void teleportToDominion(CommandSender sender, String[] args) {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (args.length != 2) {
|
||||
@ -457,13 +485,14 @@ public class DominionOperate {
|
||||
* @param args 命令参数
|
||||
*/
|
||||
public static void setMapColor(CommandSender sender, String[] args) {
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
if (args.length < 2) {
|
||||
Notification.error(sender, "用法: /dominion set_map_color <颜色> [领地名称]");
|
||||
return;
|
||||
}
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
if (args.length == 2) {
|
||||
DominionController.setMapColor(operator, args[1]);
|
||||
} else {
|
||||
|
@ -7,7 +7,6 @@ import cn.lunadeer.dominion.tuis.dominion.manage.group.GroupSetting;
|
||||
import cn.lunadeer.dominion.tuis.dominion.manage.group.SelectMember;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@ -16,7 +15,7 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.lunadeer.dominion.Commands.boolOptions;
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
import static cn.lunadeer.dominion.commands.Apis.hasPermission;
|
||||
import static cn.lunadeer.dominion.commands.Helper.*;
|
||||
import static cn.lunadeer.dominion.tuis.Apis.getPage;
|
||||
|
||||
@ -30,13 +29,14 @@ public class Group {
|
||||
*/
|
||||
public static void createGroup(CommandSender sender, String[] args) {
|
||||
try {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
if (args.length < 4) {
|
||||
Notification.error(sender, "用法: /dominion group create <领地名称> <权限组名称>");
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
String dominionName = args[2];
|
||||
String groupName = args[3];
|
||||
GroupController.createGroup(operator, dominionName, groupName);
|
||||
@ -54,13 +54,14 @@ public class Group {
|
||||
*/
|
||||
public static void deleteGroup(CommandSender sender, String[] args) {
|
||||
try {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
if (args.length < 4) {
|
||||
Notification.error(sender, "用法: /dominion group delete <领地名称> <权限组名称>");
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
String dominionName = args[2];
|
||||
String groupName = args[3];
|
||||
GroupController.deleteGroup(operator, dominionName, groupName);
|
||||
@ -78,13 +79,14 @@ public class Group {
|
||||
*/
|
||||
public static void renameGroup(CommandSender sender, String[] args) {
|
||||
try {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
if (args.length < 5) {
|
||||
Notification.error(sender, "用法: /dominion group rename <领地名称> <权限组旧名称> <新名称>");
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
String dominionName = args[2];
|
||||
String oldGroupName = args[3];
|
||||
String newGroupName = args[4];
|
||||
@ -103,13 +105,14 @@ public class Group {
|
||||
*/
|
||||
public static void setGroupFlag(CommandSender sender, String[] args) {
|
||||
try {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
if (args.length < 6) {
|
||||
Notification.error(sender, "用法: /dominion group set_flag <领地名称> <权限组名称> <权限名称> <true|false>");
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
String dominionName = args[2];
|
||||
String groupName = args[3];
|
||||
String flag = args[4];
|
||||
@ -130,13 +133,14 @@ public class Group {
|
||||
*/
|
||||
public static void addMember(CommandSender sender, String[] args) {
|
||||
try {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
if (args.length < 5) {
|
||||
Notification.error(sender, "用法: /dominion group add_member <领地名称> <权限组名称> <玩家名称>");
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
String dominionName = args[2];
|
||||
String groupName = args[3];
|
||||
String playerName = args[4];
|
||||
@ -156,13 +160,14 @@ public class Group {
|
||||
*/
|
||||
public static void removeMember(CommandSender sender, String[] args) {
|
||||
try {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
if (args.length < 5) {
|
||||
Notification.error(sender, "用法: /dominion group remove_member <领地名称> <权限组名称> <玩家名称>");
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
String dominionName = args[2];
|
||||
String groupName = args[3];
|
||||
String playerName = args[4];
|
||||
|
@ -8,7 +8,6 @@ import cn.lunadeer.dominion.tuis.dominion.manage.member.SelectPlayer;
|
||||
import cn.lunadeer.dominion.tuis.dominion.manage.member.SelectTemplate;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@ -18,7 +17,7 @@ import java.util.List;
|
||||
|
||||
import static cn.lunadeer.dominion.Commands.boolOptions;
|
||||
import static cn.lunadeer.dominion.Commands.playerNames;
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
import static cn.lunadeer.dominion.commands.Apis.hasPermission;
|
||||
import static cn.lunadeer.dominion.commands.Helper.*;
|
||||
|
||||
public class Member {
|
||||
@ -32,13 +31,14 @@ public class Member {
|
||||
*/
|
||||
public static void member_add(CommandSender sender, String[] args) {
|
||||
try {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
if (args.length < 4) {
|
||||
Notification.error(sender, "用法: /dominion member add <领地名称> <玩家名称>");
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
String dominionName = args[2];
|
||||
String playerName = args[3];
|
||||
MemberController.memberAdd(operator, dominionName, playerName);
|
||||
@ -57,13 +57,14 @@ public class Member {
|
||||
*/
|
||||
public static void member_set_flag(CommandSender sender, String[] args) {
|
||||
try {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
if (args.length < 6) {
|
||||
Notification.error(sender, "用法: /dominion member set_flag <领地名称> <玩家名称> <权限名称> <true/false>");
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
String dominionName = args[2];
|
||||
String playerName = args[3];
|
||||
String flagName = args[4];
|
||||
@ -85,13 +86,14 @@ public class Member {
|
||||
*/
|
||||
public static void member_remove(CommandSender sender, String[] args) {
|
||||
try {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
if (args.length < 4) {
|
||||
Notification.error(sender, "用法: /dominion member remove <领地名称> <玩家名称>");
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
String dominionName = args[2];
|
||||
String playerName = args[3];
|
||||
MemberController.memberRemove(operator, dominionName, playerName);
|
||||
@ -110,13 +112,14 @@ public class Member {
|
||||
*/
|
||||
public static void member_apply_template(CommandSender sender, String[] args) {
|
||||
try {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
if (args.length < 5) {
|
||||
Notification.error(sender, "用法: /dominion member apply_template <领地名称> <玩家名称> <模板名称>");
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(player);
|
||||
BukkitPlayerOperator operator = BukkitPlayerOperator.create(sender);
|
||||
String dominionName = args[2];
|
||||
String playerName = args[3];
|
||||
String templateName = args[4];
|
||||
|
@ -14,12 +14,16 @@ import org.bukkit.entity.Player;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.hasPermission;
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
|
||||
public class Migration {
|
||||
|
||||
public static void migrate(CommandSender sender, String[] args) {
|
||||
try {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
Player player = playerOnly(sender);
|
||||
if (player == null) return;
|
||||
|
||||
|
@ -15,12 +15,15 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.notOpOrConsole;
|
||||
import static cn.lunadeer.dominion.commands.Apis.hasPermission;
|
||||
|
||||
|
||||
public class Operator {
|
||||
|
||||
public static void reloadCache(CommandSender sender, String[] args) {
|
||||
if (notOpOrConsole(sender)) return;
|
||||
if (!hasPermission(sender, "dominion.admin")) {
|
||||
return;
|
||||
}
|
||||
Scheduler.runTaskAsync(() -> {
|
||||
Notification.info(sender, "正在从数据库重新加载领地缓存...");
|
||||
Cache.instance.loadDominions();
|
||||
@ -39,7 +42,9 @@ public class Operator {
|
||||
}
|
||||
|
||||
public static void exportMca(CommandSender sender, String[] args) {
|
||||
if (notOpOrConsole(sender)) return;
|
||||
if (!hasPermission(sender, "dominion.admin")) {
|
||||
return;
|
||||
}
|
||||
Scheduler.runTaskAsync(() -> {
|
||||
Notification.info(sender, "正在导出拥有领地的MCA文件列表...");
|
||||
Map<String, List<String>> mca_cords = new HashMap<>();
|
||||
@ -110,7 +115,9 @@ public class Operator {
|
||||
}
|
||||
|
||||
public static void reloadConfig(CommandSender sender, String[] args) {
|
||||
if (notOpOrConsole(sender)) return;
|
||||
if (!hasPermission(sender, "dominion.admin")) {
|
||||
return;
|
||||
}
|
||||
Scheduler.runTaskAsync(() -> {
|
||||
Notification.info(sender, "正在重新加载配置文件...");
|
||||
Dominion.config.reload();
|
||||
|
@ -5,12 +5,14 @@ import cn.lunadeer.dominion.tuis.SysConfig;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import static cn.lunadeer.dominion.commands.Apis.notOpOrConsole;
|
||||
import static cn.lunadeer.dominion.commands.Apis.hasPermission;
|
||||
|
||||
public class SetConfig {
|
||||
|
||||
public static void handler(CommandSender sender, String[] args) {
|
||||
if (notOpOrConsole(sender)) return;
|
||||
if (!hasPermission(sender, "dominion.admin")) {
|
||||
return;
|
||||
}
|
||||
if (args.length < 2) {
|
||||
Notification.error(sender, "参数错误");
|
||||
return;
|
||||
|
@ -15,6 +15,7 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.lunadeer.dominion.Commands.boolOptions;
|
||||
import static cn.lunadeer.dominion.commands.Apis.hasPermission;
|
||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||
import static cn.lunadeer.dominion.commands.Helper.allTemplates;
|
||||
import static cn.lunadeer.dominion.commands.Helper.playerPrivileges;
|
||||
@ -31,6 +32,9 @@ public class Template {
|
||||
*/
|
||||
public static void createTemplate(CommandSender sender, String[] args) {
|
||||
try {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
if (args.length < 3) {
|
||||
Notification.error(sender, "用法: /dominion template create <模板名称>");
|
||||
return;
|
||||
@ -54,6 +58,9 @@ public class Template {
|
||||
*/
|
||||
public static void deleteTemplate(CommandSender sender, String[] args) {
|
||||
try {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
if (args.length < 3) {
|
||||
Notification.error(sender, "用法: /dominion template delete <模板名称>");
|
||||
return;
|
||||
@ -77,6 +84,9 @@ public class Template {
|
||||
*/
|
||||
public static void setTemplateFlag(CommandSender sender, String[] args) {
|
||||
try {
|
||||
if (!hasPermission(sender, "dominion.default")) {
|
||||
return;
|
||||
}
|
||||
if (args.length < 5) {
|
||||
Notification.error(sender, "用法: /dominion template set_flag <模板名称> <权限名称> <true/false>");
|
||||
return;
|
||||
|
@ -48,9 +48,9 @@ public interface AbstractOperator {
|
||||
|
||||
public @Nullable Location getLocation();
|
||||
|
||||
public Player getPlayer();
|
||||
public @Nullable Player getPlayer();
|
||||
|
||||
public BlockFace getDirection();
|
||||
public @Nullable BlockFace getDirection();
|
||||
|
||||
public CompletableFuture<Result> getResponse();
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package cn.lunadeer.dominion.controllers;
|
||||
|
||||
import cn.lunadeer.dominion.Cache;
|
||||
import cn.lunadeer.dominion.Dominion;
|
||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.MemberDTO;
|
||||
import org.bukkit.Location;
|
||||
@ -8,12 +9,12 @@ import org.bukkit.Location;
|
||||
public class Apis {
|
||||
|
||||
public static boolean notOwner(AbstractOperator player, DominionDTO dominion) {
|
||||
if (player.isOp()) return false;
|
||||
if (player.isOp() && Dominion.config.getLimitOpBypass()) return false;
|
||||
return !dominion.getOwner().equals(player.getUniqueId());
|
||||
}
|
||||
|
||||
public static boolean noAuthToChangeFlags(AbstractOperator player, DominionDTO dominion) {
|
||||
if (player.isOp()) return false;
|
||||
if (player.isOp() && Dominion.config.getLimitOpBypass()) return false;
|
||||
if (!dominion.getOwner().equals(player.getUniqueId())) {
|
||||
MemberDTO privileges = MemberDTO.select(player.getUniqueId(), dominion.getId());
|
||||
if (privileges == null || !privileges.getAdmin()) {
|
||||
|
@ -3,29 +3,43 @@ package cn.lunadeer.dominion.controllers;
|
||||
import cn.lunadeer.minecraftpluginutils.Notification;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public class BukkitPlayerOperator implements AbstractOperator {
|
||||
|
||||
private final org.bukkit.entity.Player player;
|
||||
private final CommandSender player;
|
||||
private final CompletableFuture<Result> response = new CompletableFuture<>();
|
||||
|
||||
public BukkitPlayerOperator(org.bukkit.entity.Player player) {
|
||||
public BukkitPlayerOperator(CommandSender player) {
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
public boolean isConsole() {
|
||||
return !(player instanceof Player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UUID getUniqueId() {
|
||||
return player.getUniqueId();
|
||||
if (isConsole()) {
|
||||
return UUID.randomUUID();
|
||||
} else {
|
||||
return ((Player) player).getUniqueId();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOp() {
|
||||
return player.isOp();
|
||||
if (isConsole()) {
|
||||
return true;
|
||||
} else {
|
||||
return ((Player) player).isOp();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -34,19 +48,30 @@ public class BukkitPlayerOperator implements AbstractOperator {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Location getLocation() {
|
||||
return player.getLocation();
|
||||
public @Nullable Location getLocation() {
|
||||
if (isConsole()) {
|
||||
return null;
|
||||
} else {
|
||||
return ((Player) player).getLocation();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Player getPlayer() {
|
||||
return player;
|
||||
public @Nullable Player getPlayer() {
|
||||
if (isConsole()) {
|
||||
return null;
|
||||
} else {
|
||||
return (Player) player;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockFace getDirection() {
|
||||
float yaw = player.getLocation().getYaw();
|
||||
float pitch = player.getLocation().getPitch();
|
||||
public @Nullable BlockFace getDirection() {
|
||||
if (isConsole() || getLocation() == null) {
|
||||
return null;
|
||||
}
|
||||
float yaw = getLocation().getYaw();
|
||||
float pitch = getLocation().getPitch();
|
||||
if (pitch > -45 && pitch < 45) {
|
||||
if (yaw > -45 && yaw < 45) {
|
||||
return BlockFace.SOUTH;
|
||||
@ -69,7 +94,7 @@ public class BukkitPlayerOperator implements AbstractOperator {
|
||||
return response;
|
||||
}
|
||||
|
||||
public static BukkitPlayerOperator create(org.bukkit.entity.Player player) {
|
||||
public static BukkitPlayerOperator create(CommandSender player) {
|
||||
BukkitPlayerOperator operator = new BukkitPlayerOperator(player);
|
||||
operator.getResponse().thenAccept(result -> {
|
||||
if (Objects.equals(result.getStatus(), BukkitPlayerOperator.Result.SUCCESS)) {
|
||||
|
@ -859,6 +859,10 @@ public class DominionController {
|
||||
|
||||
private static int[] expandContractSizeChange(AbstractOperator operator, @NotNull DominionDTO dominion, boolean expand, int size, AbstractOperator.Result FAIL) {
|
||||
BlockFace face = operator.getDirection();
|
||||
if (face == null) {
|
||||
operator.setResponse(FAIL.addMessage("无法获取你的方向"));
|
||||
return null;
|
||||
}
|
||||
int[] result = new int[6];
|
||||
result[0] = dominion.getX1();
|
||||
result[1] = dominion.getY1();
|
||||
|
@ -13,7 +13,6 @@ public class FlagsController {
|
||||
* @param operator 操作者
|
||||
* @param flag 权限名称
|
||||
* @param value 权限值
|
||||
* @return 设置后的领地信息
|
||||
*/
|
||||
public static void setFlag(AbstractOperator operator, String flag, boolean value) {
|
||||
DominionDTO dominion = Apis.getPlayerCurrentDominion(operator);
|
||||
@ -29,7 +28,6 @@ public class FlagsController {
|
||||
* @param flag 权限名称
|
||||
* @param value 权限值
|
||||
* @param dominionName 领地名称
|
||||
* @return 设置后的领地信息
|
||||
*/
|
||||
public static void setFlag(AbstractOperator operator, String flag, boolean value, String dominionName) {
|
||||
DominionDTO dominion = DominionDTO.select(dominionName);
|
||||
|
@ -12,3 +12,10 @@ commands:
|
||||
description: 领地插件命令
|
||||
usage: /dominion <cmd>
|
||||
aliases: [ dominion, dom ]
|
||||
permission:
|
||||
dominion.admin:
|
||||
description: 领地插件管理员权限
|
||||
default: op
|
||||
dominion.default:
|
||||
description: 领地插件用户权限
|
||||
default: true
|
||||
|
Reference in New Issue
Block a user