mirror of
https://github.com/ColdeZhang/Dominion.git
synced 2024-10-19 03:26:40 +08:00
finish PlayerPrivilege commands, DominionFlag commands
This commit is contained in:
parent
ee967fbb4d
commit
fe9dabf7a0
@ -1,10 +1,15 @@
|
|||||||
package cn.lunadeer.dominion.commands;
|
package cn.lunadeer.dominion.commands;
|
||||||
|
|
||||||
|
import cn.lunadeer.dominion.Dominion;
|
||||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||||
import cn.lunadeer.dominion.utils.Notification;
|
import cn.lunadeer.dominion.utils.Notification;
|
||||||
|
import org.bukkit.Location;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class Apis {
|
public class Apis {
|
||||||
public static Player playerOnly(CommandSender sender) {
|
public static Player playerOnly(CommandSender sender) {
|
||||||
if (!(sender instanceof Player)) {
|
if (!(sender instanceof Player)) {
|
||||||
@ -30,4 +35,15 @@ public class Apis {
|
|||||||
Notification.info(sender, " 领地的对角点坐标为 x1=" + x1 + " y1=" + y1 + " z1=" + z1 + " x2=" + x2 + " y2=" + y2 + " z2=" + z2);
|
Notification.info(sender, " 领地的对角点坐标为 x1=" + x1 + " y1=" + y1 + " z1=" + z1 + " x2=" + x2 + " y2=" + y2 + " z2=" + z2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void autoPoints(Player player) {
|
||||||
|
Integer size = Dominion.config.getAutoCreateRadius();
|
||||||
|
Location location = player.getLocation();
|
||||||
|
Location location1 = new Location(location.getWorld(), location.getX() - size, location.getY() - size, location.getZ() - size);
|
||||||
|
Location location2 = new Location(location.getWorld(), location.getX() + size, location.getY() + size, location.getZ() + size);
|
||||||
|
List<Location> points = new ArrayList<>();
|
||||||
|
points.add(location1);
|
||||||
|
points.add(location2);
|
||||||
|
Dominion.pointsSelect.put(player.getUniqueId(), points);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
package cn.lunadeer.dominion.commands;
|
||||||
|
|
||||||
|
import cn.lunadeer.dominion.controllers.DominionController;
|
||||||
|
import cn.lunadeer.dominion.controllers.FlagsController;
|
||||||
|
import cn.lunadeer.dominion.utils.Notification;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||||
|
|
||||||
|
public class DominionFlag {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置领地权限
|
||||||
|
* /dominion set <权限名称> <true/false> [领地名称]
|
||||||
|
*
|
||||||
|
* @param sender 命令发送者
|
||||||
|
* @param args 命令参数
|
||||||
|
*/
|
||||||
|
public static void setDominionFlag(CommandSender sender, String[] args) {
|
||||||
|
Player player = playerOnly(sender);
|
||||||
|
if (player == null) return;
|
||||||
|
if (args.length == 3) {
|
||||||
|
if (FlagsController.setFlag(player, args[1], Boolean.parseBoolean(args[2])) == null) {
|
||||||
|
Notification.error(sender, "设置领地权限失败");
|
||||||
|
}
|
||||||
|
} else if (args.length == 4) {
|
||||||
|
if (FlagsController.setFlag(player, args[1], Boolean.parseBoolean(args[2]), args[3]) == null) {
|
||||||
|
Notification.error(sender, "设置领地权限失败");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Notification.error(sender, "用法: /dominion set <权限名称> <true/false> [领地名称]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -9,14 +9,16 @@ import org.bukkit.Location;
|
|||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
import static cn.lunadeer.dominion.commands.Apis.*;
|
||||||
import static cn.lunadeer.dominion.commands.Apis.sizeInfo;
|
import static cn.lunadeer.dominion.controllers.Apis.getPlayerCurrentDominion;
|
||||||
|
|
||||||
public class DominionOperate {
|
public class DominionOperate {
|
||||||
/**
|
/**
|
||||||
* 创建领地
|
* 创建领地
|
||||||
|
* /dominion create <领地名称>
|
||||||
*
|
*
|
||||||
* @param sender 命令发送者
|
* @param sender 命令发送者
|
||||||
* @param args 命令参数
|
* @param args 命令参数
|
||||||
@ -34,22 +36,50 @@ public class DominionOperate {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String name = args[1];
|
String name = args[1];
|
||||||
DominionDTO dominionDTO = DominionDTO.select(name);
|
if (DominionController.create(player, name, points.get(0), points.get(1)) == null) {
|
||||||
if (dominionDTO != null) {
|
|
||||||
Notification.error(sender, "已经存在名称为 " + name + " 的领地");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
dominionDTO = DominionController.create(player, name, points.get(0), points.get(1));
|
|
||||||
if (dominionDTO == null) {
|
|
||||||
Notification.error(sender, "创建领地失败");
|
Notification.error(sender, "创建领地失败");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Notification.info(sender, "成功创建领地: " + name);
|
Notification.info(sender, "成功创建: " + name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建子领地
|
||||||
|
* /dominion create_sub <子领地名称> [父领地名称]
|
||||||
|
*
|
||||||
|
* @param sender 命令发送者
|
||||||
|
* @param args 命令参数
|
||||||
|
*/
|
||||||
|
public static void createSubDominion(CommandSender sender, String[] args) {
|
||||||
|
Player player = playerOnly(sender);
|
||||||
|
if (player == null) return;
|
||||||
|
if (args.length != 2 && args.length != 3) {
|
||||||
|
Notification.error(sender, "用法: /dominion create_sub <子领地名称> [父领地名称]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<Location> points = Dominion.pointsSelect.get(player.getUniqueId());
|
||||||
|
if (points == null || points.size() != 2) {
|
||||||
|
Notification.error(sender, "请先使用木棍选择子领地的对角线两点,或使用 /dominion auto_create_sub <子领地名称> [父领地名称] 创建自动子领地");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (args.length == 2) {
|
||||||
|
if (DominionController.create(player, args[1], points.get(0), points.get(1)) != null) {
|
||||||
|
Notification.info(sender, "成功创建子领地: " + args[1]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (DominionController.create(player, args[1], points.get(0), points.get(1), args[2]) != null) {
|
||||||
|
Notification.info(sender, "成功创建子领地: " + args[1]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Notification.error(sender, "创建子领地失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自动创建领地
|
* 自动创建领地
|
||||||
* 会在玩家当前位置的周围创建一个 20x20x20 的领地
|
* 会在玩家当前位置的周围创建一个领地
|
||||||
|
* /dominion auto_create <领地名称>
|
||||||
*
|
*
|
||||||
* @param sender 命令发送者
|
* @param sender 命令发送者
|
||||||
* @param args 命令参数
|
* @param args 命令参数
|
||||||
@ -61,23 +91,36 @@ public class DominionOperate {
|
|||||||
Notification.error(sender, "用法: /dominion auto_create <领地名称>");
|
Notification.error(sender, "用法: /dominion auto_create <领地名称>");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String name = args[1];
|
autoPoints(player);
|
||||||
DominionDTO dominionDTO = DominionDTO.select(name);
|
createDominion(sender, args);
|
||||||
if (dominionDTO != null) {
|
|
||||||
Notification.error(sender, "已经存在名称为 " + name + " 的领地");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Location location = player.getLocation();
|
|
||||||
Location location1 = new Location(location.getWorld(), location.getX() - 10, location.getY() - 10, location.getZ() - 10);
|
|
||||||
Location location2 = new Location(location.getWorld(), location.getX() + 10, location.getY() + 10, location.getZ() + 10);
|
|
||||||
dominionDTO = DominionController.create(player, name, location1, location2);
|
|
||||||
if (dominionDTO == null) {
|
|
||||||
Notification.error(sender, "创建领地失败");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Notification.info(sender, "成功创建领地: " + name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自动创建子领地
|
||||||
|
* 会在玩家当前位置的周围创建一个子领地
|
||||||
|
* /dominion auto_create_sub <子领地名称> [父领地名称]
|
||||||
|
*
|
||||||
|
* @param sender 命令发送者
|
||||||
|
* @param args 命令参数
|
||||||
|
*/
|
||||||
|
public static void autoCreateSubDominion(CommandSender sender, String[] args) {
|
||||||
|
Player player = playerOnly(sender);
|
||||||
|
if (player == null) return;
|
||||||
|
if (args.length != 2 && args.length != 3) {
|
||||||
|
Notification.error(sender, "用法: /dominion auto_create_sub <子领地名称> [父领地名称]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
autoPoints(player);
|
||||||
|
createSubDominion(sender, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 扩张领地
|
||||||
|
* /dominion expand [大小] [领地名称]
|
||||||
|
*
|
||||||
|
* @param sender 命令发送者
|
||||||
|
* @param args 命令参数
|
||||||
|
*/
|
||||||
public static void expandDominion(CommandSender sender, String[] args) {
|
public static void expandDominion(CommandSender sender, String[] args) {
|
||||||
Player player = playerOnly(sender);
|
Player player = playerOnly(sender);
|
||||||
if (player == null) return;
|
if (player == null) return;
|
||||||
@ -111,4 +154,70 @@ public class DominionOperate {
|
|||||||
sizeInfo(sender, dominionDTO);
|
sizeInfo(sender, dominionDTO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 缩小领地
|
||||||
|
* /dominion contract [大小] [领地名称]
|
||||||
|
*
|
||||||
|
* @param sender 命令发送者
|
||||||
|
* @param args 命令参数
|
||||||
|
*/
|
||||||
|
public static void contractDominion(CommandSender sender, String[] args) {
|
||||||
|
Player player = playerOnly(sender);
|
||||||
|
if (player == null) return;
|
||||||
|
if (args.length != 2 && args.length != 3) {
|
||||||
|
Notification.error(sender, "用法: /dominion contract [大小] [领地名称]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int size = 10;
|
||||||
|
String name = "";
|
||||||
|
if (args.length == 2) {
|
||||||
|
try {
|
||||||
|
size = Integer.parseInt(args[1]);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Notification.error(sender, "大小格式错误");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (args.length == 3) {
|
||||||
|
name = args[2];
|
||||||
|
}
|
||||||
|
DominionDTO dominionDTO;
|
||||||
|
if (name.isEmpty()) {
|
||||||
|
dominionDTO = DominionController.contract(player, size);
|
||||||
|
} else {
|
||||||
|
dominionDTO = DominionController.contract(player, size, name);
|
||||||
|
}
|
||||||
|
if (dominionDTO == null) {
|
||||||
|
Notification.error(sender, "缩小领地失败");
|
||||||
|
} else {
|
||||||
|
Notification.info(sender, "成功缩小领地: " + dominionDTO.getName() + " " + size);
|
||||||
|
sizeInfo(sender, dominionDTO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除领地
|
||||||
|
* /dominion delete <领地名称> [force]
|
||||||
|
*
|
||||||
|
* @param sender 命令发送者
|
||||||
|
* @param args 命令参数
|
||||||
|
*/
|
||||||
|
public static void deleteDominion(CommandSender sender, String[] args) {
|
||||||
|
Player player = playerOnly(sender);
|
||||||
|
if (player == null) return;
|
||||||
|
if (args.length == 2) {
|
||||||
|
String name = args[1];
|
||||||
|
DominionController.delete(player, name, false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (args.length == 3) {
|
||||||
|
String name = args[1];
|
||||||
|
if (args[2].equals("force")) {
|
||||||
|
DominionController.delete(player, name, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Notification.error(sender, "用法: /dominion delete <领地名称> [force]");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,66 @@
|
|||||||
|
package cn.lunadeer.dominion.commands;
|
||||||
|
|
||||||
|
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||||
|
import cn.lunadeer.dominion.utils.Notification;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import static cn.lunadeer.dominion.commands.Apis.playerOnly;
|
||||||
|
import static cn.lunadeer.dominion.controllers.PrivilegeController.clearPrivilege;
|
||||||
|
import static cn.lunadeer.dominion.controllers.PrivilegeController.setPrivilege;
|
||||||
|
|
||||||
|
public class PlayerPrivilege {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置玩家权限
|
||||||
|
* /dominion set_privilege <玩家名称> <权限名称> <true/false> [领地名称]
|
||||||
|
*
|
||||||
|
* @param sender 命令发送者
|
||||||
|
* @param args 命令参数
|
||||||
|
*/
|
||||||
|
public static void setPlayerPrivilege(CommandSender sender, String[] args) {
|
||||||
|
Player player = playerOnly(sender);
|
||||||
|
if (player == null) return;
|
||||||
|
if (args.length != 4 && args.length != 5) {
|
||||||
|
Notification.error(sender, "用法: /dominion set_privilege <玩家名称> <权限名称> <true/false> [领地名称]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (args.length == 4) {
|
||||||
|
if (setPrivilege(player, args[1], args[2], Boolean.parseBoolean(args[3]))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (setPrivilege(player, args[1], args[2], Boolean.parseBoolean(args[3]), args[4])) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Notification.error(sender, "设置玩家权限失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重置玩家权限
|
||||||
|
* /dominion clear_privilege <玩家名称> [领地名称]
|
||||||
|
*
|
||||||
|
* @param sender 命令发送者
|
||||||
|
* @param args 命令参数
|
||||||
|
*/
|
||||||
|
public static void clearPlayerPrivilege(CommandSender sender, String[] args) {
|
||||||
|
Player player = playerOnly(sender);
|
||||||
|
if (player == null) return;
|
||||||
|
if (args.length != 2 && args.length != 3) {
|
||||||
|
Notification.error(sender, "用法: /dominion clear_privilege <玩家名称> [领地名称]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (args.length == 2) {
|
||||||
|
if (clearPrivilege(player, args[1])) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (clearPrivilege(player, args[1], args[2])) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Notification.error(sender, "重置玩家权限失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -25,7 +25,12 @@ public class DominionController {
|
|||||||
* @return 创建的领地
|
* @return 创建的领地
|
||||||
*/
|
*/
|
||||||
public static DominionDTO create(Player owner, String name, Location loc1, Location loc2) {
|
public static DominionDTO create(Player owner, String name, Location loc1, Location loc2) {
|
||||||
|
DominionDTO parent = getPlayerCurrentDominion(owner);
|
||||||
|
if (parent == null) {
|
||||||
return create(owner, name, loc1, loc2, "");
|
return create(owner, name, loc1, loc2, "");
|
||||||
|
} else {
|
||||||
|
return create(owner, name, loc1, loc2, parent.getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -41,6 +46,10 @@ public class DominionController {
|
|||||||
public static DominionDTO create(Player owner, String name,
|
public static DominionDTO create(Player owner, String name,
|
||||||
Location loc1, Location loc2,
|
Location loc1, Location loc2,
|
||||||
String parent_dominion_name) {
|
String parent_dominion_name) {
|
||||||
|
if (DominionDTO.select(name) != null) {
|
||||||
|
Notification.error(owner, "已经存在名称为 " + name + " 的领地");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
if (!loc1.getWorld().equals(loc2.getWorld())) {
|
if (!loc1.getWorld().equals(loc2.getWorld())) {
|
||||||
Notification.error(owner, "禁止跨世界操作");
|
Notification.error(owner, "禁止跨世界操作");
|
||||||
return null;
|
return null;
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
package cn.lunadeer.dominion.controllers;
|
||||||
|
|
||||||
|
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class PlayerController {
|
||||||
|
|
||||||
|
public static PlayerDTO getPlayerDTO(String playerName) {
|
||||||
|
return PlayerDTO.select(playerName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<PlayerDTO> searchPlayer(String playerName) {
|
||||||
|
return PlayerDTO.search(playerName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<PlayerDTO> allPlayers() {
|
||||||
|
return PlayerDTO.all();
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package cn.lunadeer.dominion.controllers;
|
package cn.lunadeer.dominion.controllers;
|
||||||
|
|
||||||
import cn.lunadeer.dominion.dtos.DominionDTO;
|
import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||||
|
import cn.lunadeer.dominion.dtos.PlayerDTO;
|
||||||
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
|
||||||
import cn.lunadeer.dominion.dtos.PrivilegeTemplateDTO;
|
import cn.lunadeer.dominion.dtos.PrivilegeTemplateDTO;
|
||||||
import cn.lunadeer.dominion.utils.Notification;
|
import cn.lunadeer.dominion.utils.Notification;
|
||||||
@ -20,37 +21,41 @@ public class PrivilegeController {
|
|||||||
* 清空玩家特权
|
* 清空玩家特权
|
||||||
*
|
*
|
||||||
* @param operator 操作者
|
* @param operator 操作者
|
||||||
* @param player 玩家
|
* @param player_name 玩家
|
||||||
* @return 是否清空成功
|
* @return 是否清空成功
|
||||||
*/
|
*/
|
||||||
public static boolean clearPrivilege(Player operator, UUID player) {
|
public static boolean clearPrivilege(Player operator, String player_name) {
|
||||||
DominionDTO dominion = Apis.getPlayerCurrentDominion(operator);
|
DominionDTO dominion = Apis.getPlayerCurrentDominion(operator);
|
||||||
if (dominion == null) return false;
|
if (dominion == null) return false;
|
||||||
return clearPrivilege(operator, player, dominion.getName());
|
return clearPrivilege(operator, player_name, dominion.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 清空玩家特权
|
* 清空玩家特权
|
||||||
*
|
*
|
||||||
* @param operator 操作者
|
* @param operator 操作者
|
||||||
* @param player 玩家
|
* @param player_name 玩家
|
||||||
* @param dominionName 领地名称
|
* @param dominionName 领地名称
|
||||||
* @return 是否清空成功
|
* @return 是否清空成功
|
||||||
*/
|
*/
|
||||||
public static boolean clearPrivilege(Player operator, UUID player, String dominionName) {
|
public static boolean clearPrivilege(Player operator, String player_name, String dominionName) {
|
||||||
DominionDTO dominion = DominionDTO.select(dominionName);
|
DominionDTO dominion = DominionDTO.select(dominionName);
|
||||||
if (dominion == null) {
|
if (dominion == null) {
|
||||||
Notification.error(operator, "领地 " + dominionName + " 不存在");
|
Notification.error(operator, "领地 " + dominionName + " 不存在");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (noAuthToChangeFlags(operator, dominion)) return false;
|
if (noAuthToChangeFlags(operator, dominion)) return false;
|
||||||
List<PlayerPrivilegeDTO> privileges = PlayerPrivilegeDTO.select(player, dominion.getId());
|
PlayerDTO player = PlayerController.getPlayerDTO(player_name);
|
||||||
List<PrivilegeTemplateDTO> templates = getPlayerPrivilegeTemplates(player, dominion.getId());
|
if (player == null) {
|
||||||
|
Notification.error(operator, "玩家 " + player_name + " 不存在或没有登录过");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
List<PrivilegeTemplateDTO> templates = getPlayerPrivilegeTemplates(player.getUuid(), dominion.getId());
|
||||||
if (templates.size() < 1) {
|
if (templates.size() < 1) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
for (PrivilegeTemplateDTO template : templates) {
|
for (PrivilegeTemplateDTO template : templates) {
|
||||||
PlayerPrivilegeDTO.delete(player, dominion.getId(), template.getId());
|
PlayerPrivilegeDTO.delete(player.getUuid(), dominion.getId(), template.getId());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -59,37 +64,42 @@ public class PrivilegeController {
|
|||||||
* 设置玩家特权
|
* 设置玩家特权
|
||||||
*
|
*
|
||||||
* @param operator 操作者
|
* @param operator 操作者
|
||||||
* @param player 玩家
|
* @param player_name 玩家
|
||||||
* @param flag 权限名称
|
* @param flag 权限名称
|
||||||
* @param value 权限值
|
* @param value 权限值
|
||||||
* @return 是否设置成功
|
* @return 是否设置成功
|
||||||
*/
|
*/
|
||||||
public static boolean setPrivilege(Player operator, UUID player, String flag, boolean value) {
|
public static boolean setPrivilege(Player operator, String player_name, String flag, boolean value) {
|
||||||
DominionDTO dominion = Apis.getPlayerCurrentDominion(operator);
|
DominionDTO dominion = Apis.getPlayerCurrentDominion(operator);
|
||||||
if (dominion == null) return false;
|
if (dominion == null) return false;
|
||||||
return setPrivilege(operator, player, flag, value, dominion.getName());
|
return setPrivilege(operator, player_name, flag, value, dominion.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置玩家特权
|
* 设置玩家特权
|
||||||
*
|
*
|
||||||
* @param operator 操作者
|
* @param operator 操作者
|
||||||
* @param player 玩家
|
* @param player_name 玩家
|
||||||
* @param flag 权限名称
|
* @param flag 权限名称
|
||||||
* @param value 权限值
|
* @param value 权限值
|
||||||
* @param dominionName 领地名称
|
* @param dominionName 领地名称
|
||||||
* @return 是否设置成功
|
* @return 是否设置成功
|
||||||
*/
|
*/
|
||||||
public static boolean setPrivilege(Player operator, UUID player, String flag, boolean value, String dominionName) {
|
public static boolean setPrivilege(Player operator, String player_name, String flag, boolean value, String dominionName) {
|
||||||
DominionDTO dominion = DominionDTO.select(dominionName);
|
DominionDTO dominion = DominionDTO.select(dominionName);
|
||||||
if (dominion == null) {
|
if (dominion == null) {
|
||||||
Notification.error(operator, "领地 " + dominionName + " 不存在");
|
Notification.error(operator, "领地 " + dominionName + " 不存在");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (noAuthToChangeFlags(operator, dominion)) return false;
|
if (noAuthToChangeFlags(operator, dominion)) return false;
|
||||||
List<PrivilegeTemplateDTO> templates = getPlayerPrivilegeTemplates(player, dominion.getId());
|
PlayerDTO player = PlayerController.getPlayerDTO(player_name);
|
||||||
|
if (player == null) {
|
||||||
|
Notification.error(operator, "玩家 " + player_name + " 不存在或没有登录过");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
List<PrivilegeTemplateDTO> templates = getPlayerPrivilegeTemplates(player.getUuid(), dominion.getId());
|
||||||
if (templates.size() < 1) {
|
if (templates.size() < 1) {
|
||||||
PrivilegeTemplateDTO template = createPlayerPrivilege(operator, player, dominion.getId());
|
PrivilegeTemplateDTO template = createPlayerPrivilege(operator, player.getUuid(), dominion.getId());
|
||||||
if (template == null) return false;
|
if (template == null) return false;
|
||||||
templates.add(template);
|
templates.add(template);
|
||||||
}
|
}
|
||||||
@ -103,7 +113,7 @@ public class PrivilegeController {
|
|||||||
}
|
}
|
||||||
PrivilegeTemplateDTO privilege = templates.get(0);
|
PrivilegeTemplateDTO privilege = templates.get(0);
|
||||||
if (Objects.equals(flag, "admin")) {
|
if (Objects.equals(flag, "admin")) {
|
||||||
List<PlayerPrivilegeDTO> privileges = PlayerPrivilegeDTO.select(player, dominion.getId());
|
List<PlayerPrivilegeDTO> privileges = PlayerPrivilegeDTO.select(player.getUuid(), dominion.getId());
|
||||||
for (PlayerPrivilegeDTO p : privileges) {
|
for (PlayerPrivilegeDTO p : privileges) {
|
||||||
if (p.getPrivilegeTemplateID().equals(privilege.getId())) {
|
if (p.getPrivilegeTemplateID().equals(privilege.getId())) {
|
||||||
p = p.setAdmin(value);
|
p = p.setAdmin(value);
|
||||||
@ -117,7 +127,7 @@ public class PrivilegeController {
|
|||||||
Notification.error(operator, "没有找到玩家权限关联数据");
|
Notification.error(operator, "没有找到玩家权限关联数据");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!Apis.updateTemplateFlag(privilege, flag, value)){
|
if (!Apis.updateTemplateFlag(privilege, flag, value)) {
|
||||||
Notification.error(operator, "未知的领地权限 " + flag);
|
Notification.error(operator, "未知的领地权限 " + flag);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -20,12 +20,13 @@ public class PlayerDTO {
|
|||||||
return re;
|
return re;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlayerDTO onJoin() {
|
public static List<PlayerDTO> all() {
|
||||||
return update(this);
|
String sql = "SELECT * FROM player_name";
|
||||||
|
return query(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<PlayerDTO> search(String name) {
|
public PlayerDTO onJoin() {
|
||||||
return select(name);
|
return update(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<PlayerDTO> query(String sql) {
|
private static List<PlayerDTO> query(String sql) {
|
||||||
@ -54,7 +55,14 @@ public class PlayerDTO {
|
|||||||
return players.get(0);
|
return players.get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<PlayerDTO> select(String name) {
|
public static PlayerDTO select(String name) {
|
||||||
|
String sql = "SELECT * FROM player_name WHERE last_known_name = '" + name + "'";
|
||||||
|
List<PlayerDTO> players = query(sql);
|
||||||
|
if (players.size() == 0) return null;
|
||||||
|
return players.get(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<PlayerDTO> search(String name) {
|
||||||
// 模糊搜索
|
// 模糊搜索
|
||||||
String sql = "SELECT * FROM player_name WHERE last_known_name LIKE '%" + name + "%'";
|
String sql = "SELECT * FROM player_name WHERE last_known_name LIKE '%" + name + "%'";
|
||||||
return query(sql);
|
return query(sql);
|
||||||
|
@ -20,6 +20,7 @@ public class ConfigManager {
|
|||||||
_db_name = _file.getString("Database.Name", "dominion");
|
_db_name = _file.getString("Database.Name", "dominion");
|
||||||
_db_user = _file.getString("Database.User", "postgres");
|
_db_user = _file.getString("Database.User", "postgres");
|
||||||
_db_pass = _file.getString("Database.Pass", "postgres");
|
_db_pass = _file.getString("Database.Pass", "postgres");
|
||||||
|
_auto_create_radius = _file.getInt("AutoCreateRadius", 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Boolean isDebug() {
|
public Boolean isDebug() {
|
||||||
@ -50,7 +51,6 @@ public class ConfigManager {
|
|||||||
return _db_user;
|
return _db_user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setDbPass(String db_pass) {
|
public void setDbPass(String db_pass) {
|
||||||
_db_pass = db_pass;
|
_db_pass = db_pass;
|
||||||
_file.set("Database.Pass", db_pass);
|
_file.set("Database.Pass", db_pass);
|
||||||
@ -64,6 +64,16 @@ public class ConfigManager {
|
|||||||
return _db_pass;
|
return _db_pass;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Integer getAutoCreateRadius() {
|
||||||
|
return _auto_create_radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAutoCreateRadius(Integer radius) {
|
||||||
|
_auto_create_radius = radius;
|
||||||
|
_file.set("AutoCreateRadius", radius);
|
||||||
|
_plugin.saveConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private final Dominion _plugin;
|
private final Dominion _plugin;
|
||||||
private FileConfiguration _file;
|
private FileConfiguration _file;
|
||||||
@ -74,4 +84,6 @@ public class ConfigManager {
|
|||||||
private String _db_user;
|
private String _db_user;
|
||||||
private String _db_pass;
|
private String _db_pass;
|
||||||
private String _db_name;
|
private String _db_name;
|
||||||
|
|
||||||
|
private Integer _auto_create_radius;
|
||||||
}
|
}
|
||||||
|
@ -5,4 +5,6 @@ Database:
|
|||||||
User: dominion
|
User: dominion
|
||||||
Pass: dominion
|
Pass: dominion
|
||||||
|
|
||||||
|
AutoCreateRadius: 10
|
||||||
|
|
||||||
Debug: false
|
Debug: false
|
Loading…
Reference in New Issue
Block a user