优化了错误处理框架

This commit is contained in:
zhangyuheng 2024-06-01 12:39:00 +08:00
parent c30e5d9d66
commit 08d6e93e7e
5 changed files with 73 additions and 74 deletions

View File

@ -6,7 +6,7 @@
<groupId>cn.lunadeer</groupId> <groupId>cn.lunadeer</groupId>
<artifactId>Dominion</artifactId> <artifactId>Dominion</artifactId>
<version>1.30.11-beta</version> <version>1.30.12-beta</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>Dominion</name> <name>Dominion</name>

View File

@ -5,6 +5,8 @@ import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@ -16,21 +18,16 @@ public interface AbstractOperator {
public static final Integer FAILURE = 2; public static final Integer FAILURE = 2;
private Integer success; private Integer success;
private String message; private List<String> messages;
public Result(Integer success, String message, Object... args) { public Result(Integer success, String message, Object... args) {
this.success = success; this.success = success;
this.message = String.format(message, args); this.messages = new ArrayList<>();
this.messages.add(String.format(message, args));
} }
public Result setMessage(String message, Object... args) { public Result addMessage(String message, Object... args) {
this.message = String.format(message, args); this.messages.add(String.format(message, args));
return this;
}
public Result appendMessage(String message, Object... args) {
this.message += " ";
this.message += String.format(message, args);
return this; return this;
} }
@ -38,8 +35,8 @@ public interface AbstractOperator {
return success; return success;
} }
public String getMessage() { public List<String> getMessages() {
return message; return messages;
} }
} }

View File

@ -73,11 +73,17 @@ public class BukkitPlayerOperator implements AbstractOperator {
BukkitPlayerOperator operator = new BukkitPlayerOperator(player); BukkitPlayerOperator operator = new BukkitPlayerOperator(player);
operator.getResponse().thenAccept(result -> { operator.getResponse().thenAccept(result -> {
if (Objects.equals(result.getStatus(), BukkitPlayerOperator.Result.SUCCESS)) { if (Objects.equals(result.getStatus(), BukkitPlayerOperator.Result.SUCCESS)) {
Notification.info(player, result.getMessage()); for (String msg : result.getMessages()) {
Notification.info(player, msg);
}
} else if (Objects.equals(result.getStatus(), BukkitPlayerOperator.Result.WARNING)) { } else if (Objects.equals(result.getStatus(), BukkitPlayerOperator.Result.WARNING)) {
Notification.warn(player, result.getMessage()); for (String msg : result.getMessages()) {
Notification.warn(player, msg);
}
} else { } else {
Notification.error(player, result.getMessage()); for (String msg : result.getMessages()) {
Notification.error(player, msg);
}
} }
}); });
return operator; return operator;

View File

@ -64,29 +64,29 @@ public class DominionController {
String parent_dominion_name) { String parent_dominion_name) {
AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "创建领地失败"); AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "创建领地失败");
if (name.isEmpty()) { if (name.isEmpty()) {
operator.setResponse(FAIL.appendMessage("领地名称不能为空")); operator.setResponse(FAIL.addMessage("领地名称不能为空"));
return; return;
} }
if (name.contains(" ")) { if (name.contains(" ")) {
operator.setResponse(FAIL.appendMessage("领地名称不能包含空格")); operator.setResponse(FAIL.addMessage("领地名称不能包含空格"));
return; return;
} }
if (DominionDTO.select(name) != null) { if (DominionDTO.select(name) != null) {
operator.setResponse(FAIL.appendMessage("已经存在名称为 %s 的领地", name)); operator.setResponse(FAIL.addMessage("已经存在名称为 %s 的领地", name));
return; return;
} }
if (!loc1.getWorld().equals(loc2.getWorld())) { if (!loc1.getWorld().equals(loc2.getWorld())) {
operator.setResponse(FAIL.appendMessage("选点世界不一致")); operator.setResponse(FAIL.addMessage("选点世界不一致"));
return; return;
} }
// 检查世界是否可以创建 // 检查世界是否可以创建
if (worldNotValid(operator, loc1.getWorld().getName())) { if (worldNotValid(operator, loc1.getWorld().getName())) {
operator.setResponse(FAIL.appendMessage("禁止在世界 %s 创建领地", loc1.getWorld().getName())); operator.setResponse(FAIL.addMessage("禁止在世界 %s 创建领地", loc1.getWorld().getName()));
return; return;
} }
// 检查领地数量是否达到上限 // 检查领地数量是否达到上限
if (amountNotValid(operator)) { if (amountNotValid(operator)) {
operator.setResponse(FAIL.appendMessage("你的领地数量已达上限(%d个)", Dominion.config.getLimitAmount())); operator.setResponse(FAIL.addMessage("你的领地数量已达上限(%d个)", Dominion.config.getLimitAmount()));
return; return;
} }
// 检查领地大小是否合法 // 检查领地大小是否合法
@ -106,7 +106,7 @@ public class DominionController {
parent_dominion = DominionDTO.select(parent_dominion_name); parent_dominion = DominionDTO.select(parent_dominion_name);
} }
if (parent_dominion == null) { if (parent_dominion == null) {
operator.setResponse(FAIL.appendMessage("父领地 %s 不存在", parent_dominion_name)); operator.setResponse(FAIL.addMessage("父领地 %s 不存在", parent_dominion_name));
if (parent_dominion_name.isEmpty()) { if (parent_dominion_name.isEmpty()) {
XLogger.err("根领地丢失!"); XLogger.err("根领地丢失!");
} }
@ -115,13 +115,13 @@ public class DominionController {
// 是否是父领地的拥有者 // 是否是父领地的拥有者
if (parent_dominion.getId() != -1) { if (parent_dominion.getId() != -1) {
if (notOwner(operator, parent_dominion)) { if (notOwner(operator, parent_dominion)) {
operator.setResponse(FAIL.appendMessage("你不是父领地 %s 的拥有者,无法创建子领地", parent_dominion_name)); operator.setResponse(FAIL.addMessage("你不是父领地 %s 的拥有者,无法创建子领地", parent_dominion_name));
return; return;
} }
} }
// 如果parent_dominion不为-1 检查是否在同一世界 // 如果parent_dominion不为-1 检查是否在同一世界
if (parent_dominion.getId() != -1 && !parent_dominion.getWorld().equals(dominion.getWorld())) { if (parent_dominion.getId() != -1 && !parent_dominion.getWorld().equals(dominion.getWorld())) {
operator.setResponse(FAIL.appendMessage("父领地与子领地不在同一世界。")); operator.setResponse(FAIL.addMessage("父领地与子领地不在同一世界。"));
return; return;
} }
// 检查深度是否达到上限 // 检查深度是否达到上限
@ -130,7 +130,7 @@ public class DominionController {
} }
// 检查是否超出父领地范围 // 检查是否超出父领地范围
if (!isContained(dominion, parent_dominion)) { if (!isContained(dominion, parent_dominion)) {
operator.setResponse(FAIL.appendMessage("超出父领地 %s 范围", parent_dominion.getName())); operator.setResponse(FAIL.addMessage("超出父领地 %s 范围", parent_dominion.getName()));
return; return;
} }
// 获取此领地的所有同级领地 // 获取此领地的所有同级领地
@ -138,7 +138,7 @@ public class DominionController {
// 检查是否与其他子领地冲突 // 检查是否与其他子领地冲突
for (DominionDTO sub_dominion : sub_dominions) { for (DominionDTO sub_dominion : sub_dominions) {
if (isIntersect(sub_dominion, dominion)) { if (isIntersect(sub_dominion, dominion)) {
operator.setResponse(FAIL.appendMessage("与领地 %s 冲突", sub_dominion.getName())); operator.setResponse(FAIL.addMessage("与领地 %s 冲突", sub_dominion.getName()));
return; return;
} }
} }
@ -152,7 +152,7 @@ public class DominionController {
} }
float price = count * Dominion.config.getEconomyPrice(); float price = count * Dominion.config.getEconomyPrice();
if (Dominion.vault.getEconomy().getBalance(operator.getPlayer()) < price) { if (Dominion.vault.getEconomy().getBalance(operator.getPlayer()) < price) {
operator.setResponse(FAIL.appendMessage("你的余额不足,创建此领地需要 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural())); operator.setResponse(FAIL.addMessage("你的余额不足,创建此领地需要 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural()));
return; return;
} }
operator.setResponse(new AbstractOperator.Result(AbstractOperator.Result.SUCCESS, "已扣除 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural())); operator.setResponse(new AbstractOperator.Result(AbstractOperator.Result.SUCCESS, "已扣除 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural()));
@ -160,7 +160,7 @@ public class DominionController {
} }
dominion = DominionDTO.insert(dominion); dominion = DominionDTO.insert(dominion);
if (dominion == null) { if (dominion == null) {
operator.setResponse(FAIL.appendMessage("创建领地失败,数据库错误,请联系管理员")); operator.setResponse(FAIL.addMessage("创建领地失败,数据库错误,请联系管理员"));
return; return;
} }
if (operator instanceof BukkitPlayerOperator) { if (operator instanceof BukkitPlayerOperator) {
@ -206,7 +206,7 @@ public class DominionController {
} }
if (location != null) { if (location != null) {
if (!location.getWorld().getName().equals(dominion.getWorld())) { if (!location.getWorld().getName().equals(dominion.getWorld())) {
operator.setResponse(FAIL.appendMessage("禁止跨世界操作")); operator.setResponse(FAIL.addMessage("禁止跨世界操作"));
return; return;
} }
} }
@ -236,7 +236,7 @@ public class DominionController {
y1 -= size; y1 -= size;
break; break;
default: default:
operator.setResponse(FAIL.appendMessage("无效的方向")); operator.setResponse(FAIL.addMessage("无效的方向"));
return; return;
} }
if (sizeNotValid(operator, x1, y1, z1, x2, y2, z2)) { if (sizeNotValid(operator, x1, y1, z1, x2, y2, z2)) {
@ -245,11 +245,11 @@ public class DominionController {
// 校验是否超出父领地范围 // 校验是否超出父领地范围
DominionDTO parent_dominion = DominionDTO.select(dominion.getParentDomId()); DominionDTO parent_dominion = DominionDTO.select(dominion.getParentDomId());
if (parent_dominion == null) { if (parent_dominion == null) {
operator.setResponse(FAIL.appendMessage("父领地丢失")); operator.setResponse(FAIL.addMessage("父领地丢失"));
return; return;
} }
if (!isContained(x1, y1, z1, x2, y2, z2, parent_dominion)) { if (!isContained(x1, y1, z1, x2, y2, z2, parent_dominion)) {
operator.setResponse(FAIL.appendMessage("超出父领地 %s 范围", parent_dominion.getName())); operator.setResponse(FAIL.addMessage("超出父领地 %s 范围", parent_dominion.getName()));
return; return;
} }
// 获取同世界下的所有同级领地 // 获取同世界下的所有同级领地
@ -258,7 +258,7 @@ public class DominionController {
if (isIntersect(exist_dominion, x1, y1, z1, x2, y2, z2)) { if (isIntersect(exist_dominion, x1, y1, z1, x2, y2, z2)) {
// 如果是自己跳过 // 如果是自己跳过
if (exist_dominion.getId().equals(dominion.getId())) continue; if (exist_dominion.getId().equals(dominion.getId())) continue;
operator.setResponse(FAIL.appendMessage("与领地 %s 冲突", exist_dominion.getName())); operator.setResponse(FAIL.addMessage("与领地 %s 冲突", exist_dominion.getName()));
return; return;
} }
} }
@ -273,10 +273,10 @@ public class DominionController {
} }
float price = count * Dominion.config.getEconomyPrice(); float price = count * Dominion.config.getEconomyPrice();
if (Dominion.vault.getEconomy().getBalance(operator.getPlayer()) < price) { if (Dominion.vault.getEconomy().getBalance(operator.getPlayer()) < price) {
operator.setResponse(FAIL.appendMessage("你的余额不足,扩展此领地需要 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural())); operator.setResponse(FAIL.addMessage("你的余额不足,扩展此领地需要 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural()));
return; return;
} }
SUCCESS.appendMessage("已扣除 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural()); SUCCESS.addMessage("已扣除 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural());
Dominion.vault.getEconomy().withdrawPlayer(operator.getPlayer(), price); Dominion.vault.getEconomy().withdrawPlayer(operator.getPlayer(), price);
} }
if (operator instanceof BukkitPlayerOperator) { if (operator instanceof BukkitPlayerOperator) {
@ -325,7 +325,7 @@ public class DominionController {
} }
if (location != null) { if (location != null) {
if (!location.getWorld().getName().equals(dominion.getWorld())) { if (!location.getWorld().getName().equals(dominion.getWorld())) {
operator.setResponse(FAIL.appendMessage("禁止跨世界操作")); operator.setResponse(FAIL.addMessage("禁止跨世界操作"));
return; return;
} }
} }
@ -355,12 +355,12 @@ public class DominionController {
y1 += size; y1 += size;
break; break;
default: default:
operator.setResponse(FAIL.appendMessage("无效的方向")); operator.setResponse(FAIL.addMessage("无效的方向"));
return; return;
} }
// 校验第二组坐标是否小于第一组坐标 // 校验第二组坐标是否小于第一组坐标
if (x1 >= x2 || y1 >= y2 || z1 >= z2) { if (x1 >= x2 || y1 >= y2 || z1 >= z2) {
operator.setResponse(FAIL.appendMessage("缩小后的领地大小无效")); operator.setResponse(FAIL.addMessage("缩小后的领地大小无效"));
return; return;
} }
if (sizeNotValid(operator, x1, y1, z1, x2, y2, z2)) { if (sizeNotValid(operator, x1, y1, z1, x2, y2, z2)) {
@ -370,7 +370,7 @@ public class DominionController {
List<DominionDTO> sub_dominions = DominionDTO.selectByParentId(dominion.getWorld(), dominion.getId()); List<DominionDTO> sub_dominions = DominionDTO.selectByParentId(dominion.getWorld(), dominion.getId());
for (DominionDTO sub_dominion : sub_dominions) { for (DominionDTO sub_dominion : sub_dominions) {
if (!isContained(sub_dominion, x1, y1, z1, x2, y2, z2)) { if (!isContained(sub_dominion, x1, y1, z1, x2, y2, z2)) {
operator.setResponse(FAIL.appendMessage("缩小后的领地无法包含子领地 %s", sub_dominion.getName())); operator.setResponse(FAIL.addMessage("缩小后的领地无法包含子领地 %s", sub_dominion.getName()));
return; return;
} }
} }
@ -385,7 +385,7 @@ public class DominionController {
} }
float refund = count * Dominion.config.getEconomyPrice() * Dominion.config.getEconomyRefund(); float refund = count * Dominion.config.getEconomyPrice() * Dominion.config.getEconomyRefund();
Dominion.vault.getEconomy().depositPlayer(operator.getPlayer(), refund); Dominion.vault.getEconomy().depositPlayer(operator.getPlayer(), refund);
SUCCESS.appendMessage("已退还 %.2f %s", refund, Dominion.vault.getEconomy().currencyNamePlural()); SUCCESS.addMessage("已退还 %.2f %s", refund, Dominion.vault.getEconomy().currencyNamePlural());
} }
if (operator instanceof BukkitPlayerOperator) { if (operator instanceof BukkitPlayerOperator) {
World world = Dominion.instance.getServer().getWorld(dominion.getWorld()); World world = Dominion.instance.getServer().getWorld(dominion.getWorld());
@ -418,7 +418,7 @@ public class DominionController {
} }
if (sub_dominions.size() > 0) { if (sub_dominions.size() > 0) {
sub_names = sub_names.substring(0, sub_names.length() - 2); sub_names = sub_names.substring(0, sub_names.length() - 2);
WARNING.appendMessage("(子领地:%s)", sub_names); WARNING.addMessage("(子领地:%s)", sub_names);
} }
if (operator instanceof BukkitPlayerOperator) { if (operator instanceof BukkitPlayerOperator) {
Notification.warn(operator.getPlayer(), "输入 /dominion delete %s force 确认删除", dominion_name); Notification.warn(operator.getPlayer(), "输入 /dominion delete %s force 确认删除", dominion_name);
@ -442,7 +442,7 @@ public class DominionController {
} }
float refund = count * Dominion.config.getEconomyPrice() * Dominion.config.getEconomyRefund(); float refund = count * Dominion.config.getEconomyPrice() * Dominion.config.getEconomyRefund();
Dominion.vault.getEconomy().depositPlayer(operator.getPlayer(), refund); Dominion.vault.getEconomy().depositPlayer(operator.getPlayer(), refund);
SUCCESS.appendMessage("已退还 %.2f %s", refund, Dominion.vault.getEconomy().currencyNamePlural()); SUCCESS.addMessage("已退还 %.2f %s", refund, Dominion.vault.getEconomy().currencyNamePlural());
} }
operator.setResponse(SUCCESS); operator.setResponse(SUCCESS);
} }
@ -560,15 +560,15 @@ public class DominionController {
public static void rename(AbstractOperator operator, String old_name, String new_name) { public static void rename(AbstractOperator operator, String old_name, String new_name) {
AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "重命名领地失败"); AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "重命名领地失败");
if (new_name.isEmpty()) { if (new_name.isEmpty()) {
operator.setResponse(FAIL.appendMessage("新名称不能为空")); operator.setResponse(FAIL.addMessage("新名称不能为空"));
return; return;
} }
if (new_name.contains(" ")) { if (new_name.contains(" ")) {
operator.setResponse(FAIL.appendMessage("领地名称不能包含空格")); operator.setResponse(FAIL.addMessage("领地名称不能包含空格"));
return; return;
} }
if (Objects.equals(old_name, new_name)) { if (Objects.equals(old_name, new_name)) {
operator.setResponse(FAIL.appendMessage("新名称与旧名称相同")); operator.setResponse(FAIL.addMessage("新名称与旧名称相同"));
return; return;
} }
DominionDTO dominion = getExistDomAndIsOwner(operator, old_name); DominionDTO dominion = getExistDomAndIsOwner(operator, old_name);
@ -576,7 +576,7 @@ public class DominionController {
return; return;
} }
if (DominionDTO.select(new_name) != null) { if (DominionDTO.select(new_name) != null) {
operator.setResponse(FAIL.appendMessage("已经存在名称为 %s 的领地", new_name)); operator.setResponse(FAIL.addMessage("已经存在名称为 %s 的领地", new_name));
return; return;
} }
dominion.setName(new_name); dominion.setName(new_name);
@ -595,11 +595,11 @@ public class DominionController {
AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "转让领地失败"); AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "转让领地失败");
PlayerDTO operatorDTO = PlayerDTO.select(operator.getUniqueId()); PlayerDTO operatorDTO = PlayerDTO.select(operator.getUniqueId());
if (operatorDTO == null) { if (operatorDTO == null) {
operator.setResponse(FAIL.appendMessage("操作者信息丢失,请联系管理员")); operator.setResponse(FAIL.addMessage("操作者信息丢失,请联系管理员"));
return; return;
} }
if (Objects.equals(player_name, operatorDTO.getLastKnownName())) { if (Objects.equals(player_name, operatorDTO.getLastKnownName())) {
operator.setResponse(FAIL.appendMessage("不能将领地转让给自己")); operator.setResponse(FAIL.addMessage("不能将领地转让给自己"));
return; return;
} }
DominionDTO dominion = getExistDomAndIsOwner(operator, dom_name); DominionDTO dominion = getExistDomAndIsOwner(operator, dom_name);
@ -608,11 +608,11 @@ public class DominionController {
} }
PlayerDTO player = PlayerController.getPlayerDTO(player_name); PlayerDTO player = PlayerController.getPlayerDTO(player_name);
if (player == null) { if (player == null) {
operator.setResponse(FAIL.appendMessage("玩家 %s 不存在", player_name)); operator.setResponse(FAIL.addMessage("玩家 %s 不存在", player_name));
return; return;
} }
if (dominion.getParentDomId() != -1) { if (dominion.getParentDomId() != -1) {
operator.setResponse(FAIL.appendMessage("子领地无法转让,你可以通过将 %s 设置为管理员来让其管理领地 %s ", player_name, dom_name)); operator.setResponse(FAIL.addMessage("子领地无法转让,你可以通过将 %s 设置为管理员来让其管理领地 %s ", player_name, dom_name));
return; return;
} }
List<DominionDTO> sub_dominions = getSubDominionsRecursive(dominion); List<DominionDTO> sub_dominions = getSubDominionsRecursive(dominion);
@ -624,7 +624,7 @@ public class DominionController {
} }
if (sub_dominions.size() > 0) { if (sub_dominions.size() > 0) {
sub_names = sub_names.substring(0, sub_names.length() - 2); sub_names = sub_names.substring(0, sub_names.length() - 2);
WARNING.appendMessage("(子领地:%s)", sub_names); WARNING.addMessage("(子领地:%s)", sub_names);
} }
if (operator instanceof BukkitPlayerOperator) { if (operator instanceof BukkitPlayerOperator) {
Notification.warn(operator.getPlayer(), "输入 /dominion give %s %s force 确认转让", dom_name, player_name); Notification.warn(operator.getPlayer(), "输入 /dominion give %s %s force 确认转让", dom_name, player_name);
@ -716,27 +716,27 @@ public class DominionController {
int y_length = y2 - y1; int y_length = y2 - y1;
int z_length = z2 - z1; int z_length = z2 - z1;
if (x_length < 4 || y_length < 4 || z_length < 4) { if (x_length < 4 || y_length < 4 || z_length < 4) {
operator.setResponse(FAIL.appendMessage("领地的任意一边长度不得小于4")); operator.setResponse(FAIL.addMessage("领地的任意一边长度不得小于4"));
return true; return true;
} }
if (x_length > Dominion.config.getLimitSizeX() && Dominion.config.getLimitSizeX() > 0) { if (x_length > Dominion.config.getLimitSizeX() && Dominion.config.getLimitSizeX() > 0) {
operator.setResponse(FAIL.appendMessage("领地X方向长度不能超过 %s", Dominion.config.getLimitSizeX())); operator.setResponse(FAIL.addMessage("领地X方向长度不能超过 %d", Dominion.config.getLimitSizeX()));
return true; return true;
} }
if (y_length > Dominion.config.getLimitSizeY() && Dominion.config.getLimitSizeY() > 0) { if (y_length > Dominion.config.getLimitSizeY() && Dominion.config.getLimitSizeY() > 0) {
operator.setResponse(FAIL.appendMessage("领地Y方向高度不能超过 %s", Dominion.config.getLimitSizeY())); operator.setResponse(FAIL.addMessage("领地Y方向高度不能超过 %d", Dominion.config.getLimitSizeY()));
return true; return true;
} }
if (z_length > Dominion.config.getLimitSizeZ() && Dominion.config.getLimitSizeZ() > 0) { if (z_length > Dominion.config.getLimitSizeZ() && Dominion.config.getLimitSizeZ() > 0) {
operator.setResponse(FAIL.appendMessage("领地Z方向长度不能超过 %s", Dominion.config.getLimitSizeZ())); operator.setResponse(FAIL.addMessage("领地Z方向长度不能超过 %d", Dominion.config.getLimitSizeZ()));
return true; return true;
} }
if (y2 > Dominion.config.getLimitMaxY()) { if (y2 > Dominion.config.getLimitMaxY()) {
operator.setResponse(FAIL.appendMessage("领地Y坐标不能超过 %s", Dominion.config.getLimitMaxY())); operator.setResponse(FAIL.addMessage("领地Y坐标不能超过 %d", Dominion.config.getLimitMaxY()));
return true; return true;
} }
if (y1 < Dominion.config.getLimitMinY()) { if (y1 < Dominion.config.getLimitMinY()) {
operator.setResponse(FAIL.appendMessage("领地Y坐标不能低于 %s", Dominion.config.getLimitMinY())); operator.setResponse(FAIL.addMessage("领地Y坐标不能低于 %d", Dominion.config.getLimitMinY()));
return true; return true;
} }
return false; return false;
@ -751,7 +751,7 @@ public class DominionController {
return false; return false;
} }
if (parent_dom.getId() != -1 && Dominion.config.getLimitDepth() == 0) { if (parent_dom.getId() != -1 && Dominion.config.getLimitDepth() == 0) {
operator.setResponse(FAIL.appendMessage("不允许创建子领地")); operator.setResponse(FAIL.addMessage("不允许创建子领地"));
return true; return true;
} }
if (parent_dom.getId() == -1) { if (parent_dom.getId() == -1) {
@ -763,7 +763,7 @@ public class DominionController {
level++; level++;
} }
if (level >= Dominion.config.getLimitDepth()) { if (level >= Dominion.config.getLimitDepth()) {
operator.setResponse(FAIL.appendMessage("子领地嵌套深度不能超过 %s", Dominion.config.getLimitDepth())); operator.setResponse(FAIL.addMessage("子领地嵌套深度不能超过 %s", Dominion.config.getLimitDepth()));
return true; return true;
} }
return false; return false;
@ -787,11 +787,11 @@ public class DominionController {
AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, ""); AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "");
DominionDTO dominion = DominionDTO.select(dominion_name); DominionDTO dominion = DominionDTO.select(dominion_name);
if (dominion == null) { if (dominion == null) {
operator.setResponse(FAIL.setMessage("领地 %s 不存在", dominion_name)); operator.setResponse(FAIL.addMessage("领地 %s 不存在", dominion_name));
return null; return null;
} }
if (notOwner(operator, dominion)) { if (notOwner(operator, dominion)) {
operator.setResponse(FAIL.setMessage("你不是领地 %s 的拥有者", dominion_name)); operator.setResponse(FAIL.addMessage("你不是领地 %s 的拥有者", dominion_name));
return null; return null;
} }
return dominion; return dominion;

View File

@ -21,7 +21,6 @@ public class PrivilegeController {
* *
* @param operator 操作者 * @param operator 操作者
* @param player_name 玩家 * @param player_name 玩家
* @return 是否清空成功
*/ */
public static void clearPrivilege(AbstractOperator operator, String player_name) { public static void clearPrivilege(AbstractOperator operator, String player_name) {
DominionDTO dominion = Apis.getPlayerCurrentDominion(operator); DominionDTO dominion = Apis.getPlayerCurrentDominion(operator);
@ -38,28 +37,27 @@ public class PrivilegeController {
* @param operator 操作者 * @param operator 操作者
* @param player_name 玩家 * @param player_name 玩家
* @param dominionName 领地名称 * @param dominionName 领地名称
* @return 是否清空成功
*/ */
public static void clearPrivilege(AbstractOperator operator, String player_name, String dominionName) { public static void clearPrivilege(AbstractOperator operator, String player_name, String dominionName) {
AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "清空玩家 %s 在领地 %s 的权限失败", player_name, dominionName); AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "清空玩家 %s 在领地 %s 的权限失败", player_name, dominionName);
DominionDTO dominion = DominionDTO.select(dominionName); DominionDTO dominion = DominionDTO.select(dominionName);
if (dominion == null) { if (dominion == null) {
operator.setResponse(FAIL.appendMessage("领地 %s 不存在", dominionName)); operator.setResponse(FAIL.addMessage("领地 %s 不存在", dominionName));
return; return;
} }
if (noAuthToChangeFlags(operator, dominion)) return; if (noAuthToChangeFlags(operator, dominion)) return;
PlayerDTO player = PlayerController.getPlayerDTO(player_name); PlayerDTO player = PlayerController.getPlayerDTO(player_name);
if (player == null) { if (player == null) {
operator.setResponse(FAIL.appendMessage("玩家 %s 不存在或没有登录过", player_name)); operator.setResponse(FAIL.addMessage("玩家 %s 不存在或没有登录过", player_name));
return; return;
} }
PlayerPrivilegeDTO privilege = PlayerPrivilegeDTO.select(player.getUuid(), dominion.getId()); PlayerPrivilegeDTO privilege = PlayerPrivilegeDTO.select(player.getUuid(), dominion.getId());
if (privilege == null) { if (privilege == null) {
operator.setResponse(FAIL.appendMessage("玩家 %s 不是领地 %s 的成员", player_name, dominionName)); operator.setResponse(FAIL.addMessage("玩家 %s 不是领地 %s 的成员", player_name, dominionName));
return; return;
} }
if (privilege.getAdmin() && notOwner(operator, dominion)) { if (privilege.getAdmin() && notOwner(operator, dominion)) {
operator.setResponse(FAIL.appendMessage("你不是领地 %s 的拥有者,无法移除一个领地管理员", dominionName)); operator.setResponse(FAIL.addMessage("你不是领地 %s 的拥有者,无法移除一个领地管理员", dominionName));
return; return;
} }
PlayerPrivilegeDTO.delete(player.getUuid(), dominion.getId()); PlayerPrivilegeDTO.delete(player.getUuid(), dominion.getId());
@ -73,7 +71,6 @@ public class PrivilegeController {
* @param player_name 玩家 * @param player_name 玩家
* @param flag 权限名称 * @param flag 权限名称
* @param value 权限值 * @param value 权限值
* @return 是否设置成功
*/ */
public static void setPrivilege(AbstractOperator operator, String player_name, String flag, boolean value) { public static void setPrivilege(AbstractOperator operator, String player_name, String flag, boolean value) {
DominionDTO dominion = Apis.getPlayerCurrentDominion(operator); DominionDTO dominion = Apis.getPlayerCurrentDominion(operator);
@ -92,19 +89,18 @@ public class PrivilegeController {
* @param flag 权限名称 * @param flag 权限名称
* @param value 权限值 * @param value 权限值
* @param dominionName 领地名称 * @param dominionName 领地名称
* @return 是否设置成功
*/ */
public static void setPrivilege(AbstractOperator operator, String player_name, String flag, boolean value, String dominionName) { public static void setPrivilege(AbstractOperator operator, String player_name, String flag, boolean value, String dominionName) {
AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "设置玩家 %s 在领地 %s 的权限 %s 为 %s 失败", player_name, dominionName, flag, value); AbstractOperator.Result FAIL = new AbstractOperator.Result(AbstractOperator.Result.FAILURE, "设置玩家 %s 在领地 %s 的权限 %s 为 %s 失败", player_name, dominionName, flag, value);
DominionDTO dominion = DominionDTO.select(dominionName); DominionDTO dominion = DominionDTO.select(dominionName);
if (dominion == null) { if (dominion == null) {
operator.setResponse(FAIL.appendMessage("领地 %s 不存在", dominionName)); operator.setResponse(FAIL.addMessage("领地 %s 不存在", dominionName));
return; return;
} }
if (noAuthToChangeFlags(operator, dominion)) return; if (noAuthToChangeFlags(operator, dominion)) return;
PlayerDTO player = PlayerController.getPlayerDTO(player_name); PlayerDTO player = PlayerController.getPlayerDTO(player_name);
if (player == null) { if (player == null) {
operator.setResponse(FAIL.appendMessage("玩家 %s 不存在或没有登录过", player_name)); operator.setResponse(FAIL.addMessage("玩家 %s 不存在或没有登录过", player_name));
return; return;
} }
PlayerPrivilegeDTO privilege = PlayerPrivilegeDTO.select(player.getUuid(), dominion.getId()); PlayerPrivilegeDTO privilege = PlayerPrivilegeDTO.select(player.getUuid(), dominion.getId());
@ -114,14 +110,14 @@ public class PrivilegeController {
} }
if (flag.equals("admin")) { if (flag.equals("admin")) {
if (notOwner(operator, dominion)) { if (notOwner(operator, dominion)) {
operator.setResponse(FAIL.appendMessage("你不是领地 %s 的拥有者,无法设置/取消其他玩家为管理员", dominionName)); operator.setResponse(FAIL.addMessage("你不是领地 %s 的拥有者,无法设置/取消其他玩家为管理员", dominionName));
return; return;
} }
privilege.setAdmin(value); privilege.setAdmin(value);
} else { } else {
Flag f = Flag.getFlag(flag); Flag f = Flag.getFlag(flag);
if (f == null) { if (f == null) {
operator.setResponse(FAIL.appendMessage("未知的领地权限 %s", flag)); operator.setResponse(FAIL.addMessage("未知的领地权限 %s", flag));
return; return;
} }
privilege.setFlagValue(f, value); privilege.setFlagValue(f, value);