diff --git a/pom.xml b/pom.xml
index 8a0777c..f22091e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
cn.lunadeer
Dominion
- 1.41.0-beta
+ 1.42.0-beta
jar
Dominion
diff --git a/src/main/java/cn/lunadeer/dominion/commands/Apis.java b/src/main/java/cn/lunadeer/dominion/commands/Apis.java
index c166312..01f52b4 100644
--- a/src/main/java/cn/lunadeer/dominion/commands/Apis.java
+++ b/src/main/java/cn/lunadeer/dominion/commands/Apis.java
@@ -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);
}
diff --git a/src/main/java/cn/lunadeer/dominion/commands/DominionFlag.java b/src/main/java/cn/lunadeer/dominion/commands/DominionFlag.java
index 3b25b3c..f2122d7 100644
--- a/src/main/java/cn/lunadeer/dominion/commands/DominionFlag.java
+++ b/src/main/java/cn/lunadeer/dominion/commands/DominionFlag.java
@@ -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) {
diff --git a/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java b/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java
index 22b3a4a..63ac695 100644
--- a/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java
+++ b/src/main/java/cn/lunadeer/dominion/commands/DominionOperate.java
@@ -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 {
diff --git a/src/main/java/cn/lunadeer/dominion/commands/Group.java b/src/main/java/cn/lunadeer/dominion/commands/Group.java
index f8110d0..d3f558f 100644
--- a/src/main/java/cn/lunadeer/dominion/commands/Group.java
+++ b/src/main/java/cn/lunadeer/dominion/commands/Group.java
@@ -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 <领地名称> <权限组名称> <权限名称> ");
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];
diff --git a/src/main/java/cn/lunadeer/dominion/commands/Member.java b/src/main/java/cn/lunadeer/dominion/commands/Member.java
index a6e9136..d39a3fd 100644
--- a/src/main/java/cn/lunadeer/dominion/commands/Member.java
+++ b/src/main/java/cn/lunadeer/dominion/commands/Member.java
@@ -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 <领地名称> <玩家名称> <权限名称> ");
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];
diff --git a/src/main/java/cn/lunadeer/dominion/commands/Migration.java b/src/main/java/cn/lunadeer/dominion/commands/Migration.java
index 3a7df89..226e51a 100644
--- a/src/main/java/cn/lunadeer/dominion/commands/Migration.java
+++ b/src/main/java/cn/lunadeer/dominion/commands/Migration.java
@@ -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;
diff --git a/src/main/java/cn/lunadeer/dominion/commands/Operator.java b/src/main/java/cn/lunadeer/dominion/commands/Operator.java
index 1a0b538..69fd9bf 100644
--- a/src/main/java/cn/lunadeer/dominion/commands/Operator.java
+++ b/src/main/java/cn/lunadeer/dominion/commands/Operator.java
@@ -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> 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();
diff --git a/src/main/java/cn/lunadeer/dominion/commands/SetConfig.java b/src/main/java/cn/lunadeer/dominion/commands/SetConfig.java
index 127736d..3556cfe 100644
--- a/src/main/java/cn/lunadeer/dominion/commands/SetConfig.java
+++ b/src/main/java/cn/lunadeer/dominion/commands/SetConfig.java
@@ -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;
diff --git a/src/main/java/cn/lunadeer/dominion/commands/Template.java b/src/main/java/cn/lunadeer/dominion/commands/Template.java
index a844ad5..fe5e05b 100644
--- a/src/main/java/cn/lunadeer/dominion/commands/Template.java
+++ b/src/main/java/cn/lunadeer/dominion/commands/Template.java
@@ -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 <模板名称> <权限名称> ");
return;
diff --git a/src/main/java/cn/lunadeer/dominion/controllers/AbstractOperator.java b/src/main/java/cn/lunadeer/dominion/controllers/AbstractOperator.java
index c66d81c..ea486b7 100644
--- a/src/main/java/cn/lunadeer/dominion/controllers/AbstractOperator.java
+++ b/src/main/java/cn/lunadeer/dominion/controllers/AbstractOperator.java
@@ -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 getResponse();
}
diff --git a/src/main/java/cn/lunadeer/dominion/controllers/Apis.java b/src/main/java/cn/lunadeer/dominion/controllers/Apis.java
index 082f700..71e00f4 100644
--- a/src/main/java/cn/lunadeer/dominion/controllers/Apis.java
+++ b/src/main/java/cn/lunadeer/dominion/controllers/Apis.java
@@ -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()) {
diff --git a/src/main/java/cn/lunadeer/dominion/controllers/BukkitPlayerOperator.java b/src/main/java/cn/lunadeer/dominion/controllers/BukkitPlayerOperator.java
index ef88d6f..c06e3ad 100644
--- a/src/main/java/cn/lunadeer/dominion/controllers/BukkitPlayerOperator.java
+++ b/src/main/java/cn/lunadeer/dominion/controllers/BukkitPlayerOperator.java
@@ -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 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)) {
diff --git a/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java b/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java
index 4de6033..9c86c69 100644
--- a/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java
+++ b/src/main/java/cn/lunadeer/dominion/controllers/DominionController.java
@@ -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();
diff --git a/src/main/java/cn/lunadeer/dominion/controllers/FlagsController.java b/src/main/java/cn/lunadeer/dominion/controllers/FlagsController.java
index 1788651..7ed6463 100644
--- a/src/main/java/cn/lunadeer/dominion/controllers/FlagsController.java
+++ b/src/main/java/cn/lunadeer/dominion/controllers/FlagsController.java
@@ -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);
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 0ac2024..88d991c 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -11,4 +11,11 @@ commands:
Dominion:
description: 领地插件命令
usage: /dominion
- aliases: [dominion, dom]
\ No newline at end of file
+ aliases: [ dominion, dom ]
+permission:
+ dominion.admin:
+ description: 领地插件管理员权限
+ default: op
+ dominion.default:
+ description: 领地插件用户权限
+ default: true