升级基础工具库版本,优化性能
Java CI-CD with Maven / build (push) Successful in 7m33s Details

This commit is contained in:
zhangyuheng 2024-05-27 17:02:05 +08:00
parent 895e003502
commit 34eed403e4
29 changed files with 295 additions and 277 deletions

View File

@ -6,7 +6,7 @@
<groupId>cn.lunadeer</groupId>
<artifactId>Dominion</artifactId>
<version>1.28.5-beta</version>
<version>1.28.6-beta</version>
<packaging>jar</packaging>
<name>Dominion</name>
@ -82,7 +82,7 @@
<dependency>
<groupId>cn.lunadeer</groupId>
<artifactId>MinecraftPluginUtils</artifactId>
<version>1.2.0-SNAPSHOT</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.github.BlueMap-Minecraft</groupId>

View File

@ -2,6 +2,7 @@ package cn.lunadeer.dominion;
import cn.lunadeer.dominion.controllers.PlayerController;
import cn.lunadeer.dominion.dtos.PlayerDTO;
import cn.lunadeer.minecraftpluginutils.XLogger;
import java.util.List;
@ -10,15 +11,15 @@ public class AutoClean {
if (Dominion.config.getAutoCleanAfterDays() < 0) {
return;
}
Dominion.logger.info("开始自动清理长时间未登录玩家领地数据");
XLogger.info("开始自动清理长时间未登录玩家领地数据");
int auto_clean_after_days = Dominion.config.getAutoCleanAfterDays();
List<PlayerDTO> players = PlayerController.allPlayers();
for (PlayerDTO p : players) {
if (p.getLastJoinAt() + (long) auto_clean_after_days * 24 * 60 * 60 * 1000 < System.currentTimeMillis()) {
PlayerDTO.delete(p);
Dominion.logger.info("已清理玩家 %s 的领地数据", p.getLastKnownName());
XLogger.info("已清理玩家 %s 的领地数据", p.getLastKnownName());
}
}
Dominion.logger.info("自动清理完成");
XLogger.info("自动清理完成");
}
}

View File

@ -1,6 +1,7 @@
package cn.lunadeer.dominion;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.minecraftpluginutils.XLogger;
import com.flowpowered.math.vector.Vector2d;
import de.bluecolored.bluemap.api.BlueMapAPI;
import de.bluecolored.bluemap.api.BlueMapMap;
@ -63,8 +64,8 @@ public class BlueMapConnect {
}
});
} catch (NoClassDefFoundError e) {
Dominion.logger.warn("无法连接 BlueMap 插件,如果你不打算使用卫星地图渲染建议前往配置文件关闭此功能以避免下方的报错。");
Dominion.logger.err(e.getMessage());
XLogger.warn("无法连接 BlueMap 插件,如果你不打算使用卫星地图渲染建议前往配置文件关闭此功能以避免下方的报错。");
XLogger.err(e.getMessage());
}
}
@ -117,8 +118,8 @@ public class BlueMapConnect {
}
});
} catch (NoClassDefFoundError e) {
Dominion.logger.warn("无法连接 BlueMap 插件,如果你不打算使用卫星地图渲染建议前往配置文件关闭此功能以避免下方的报错。");
Dominion.logger.err(e.getMessage());
XLogger.warn("无法连接 BlueMap 插件,如果你不打算使用卫星地图渲染建议前往配置文件关闭此功能以避免下方的报错。");
XLogger.err(e.getMessage());
}
}
}

View File

@ -4,6 +4,8 @@ import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.Flag;
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
import cn.lunadeer.minecraftpluginutils.ParticleRender;
import cn.lunadeer.minecraftpluginutils.Scheduler;
import cn.lunadeer.minecraftpluginutils.XLogger;
import net.kyori.adventure.text.Component;
import org.bukkit.GameMode;
import org.bukkit.Location;
@ -29,15 +31,15 @@ public class Cache {
*/
public void loadDominions() {
if (_last_update_dominion.get() + UPDATE_INTERVAL < System.currentTimeMillis()) {
Dominion.logger.debug("run loadDominionsExecution directly");
XLogger.debug("run loadDominionsExecution directly");
loadDominionsExecution();
} else {
if (_update_dominion_is_scheduled.get()) return;
Dominion.logger.debug("schedule loadDominionsExecution");
XLogger.debug("schedule loadDominionsExecution");
_update_dominion_is_scheduled.set(true);
long delay_tick = (UPDATE_INTERVAL - (System.currentTimeMillis() - _last_update_dominion.get())) / 1000 * 20L;
Dominion.scheduler.runTaskLaterAsync(() -> {
Dominion.logger.debug("run loadDominionsExecution scheduled");
Scheduler.runTaskLaterAsync(() -> {
XLogger.debug("run loadDominionsExecution scheduled");
loadDominionsExecution();
_update_dominion_is_scheduled.set(false);
},
@ -80,7 +82,7 @@ public class Cache {
if (_update_privilege_is_scheduled.get()) return;
_update_privilege_is_scheduled.set(true);
long delay_tick = (UPDATE_INTERVAL - (System.currentTimeMillis() - _last_update_dominion.get())) / 1000 * 20L;
Dominion.scheduler.runTaskLaterAsync(() -> {
Scheduler.runTaskLaterAsync(() -> {
loadPlayerPrivilegesExecution();
_update_privilege_is_scheduled.set(false);
},
@ -91,7 +93,7 @@ public class Cache {
private void loadPlayerPrivilegesExecution() {
List<PlayerPrivilegeDTO> all_privileges = PlayerPrivilegeDTO.selectAll();
if (all_privileges == null) {
Dominion.logger.err("加载玩家特权失败");
XLogger.err("加载玩家特权失败");
return;
}
player_uuid_to_privilege = new ConcurrentHashMap<>();

View File

@ -22,10 +22,10 @@ public final class Dominion extends JavaPlugin {
public void onEnable() {
// Plugin startup logic
instance = this;
notification = new Notification(this);
logger = new XLogger(this);
new Notification(this);
new XLogger(this);
config = new ConfigManager(this);
logger.setDebug(config.isDebug());
XLogger.setDebug(config.isDebug());
database = new DatabaseManager(this,
config.getDbType().equals("pgsql") ? DatabaseManager.TYPE.POSTGRESQL : DatabaseManager.TYPE.SQLITE,
config.getDbHost(),
@ -34,14 +34,14 @@ public final class Dominion extends JavaPlugin {
config.getDbUser(),
config.getDbPass());
DatabaseTables.migrate();
scheduler = new Scheduler(this);
new Scheduler(this);
AutoClean.run();
Cache.instance = new Cache();
if (config.getEconomyEnable()) {
vault = new VaultConnect(this);
if (vault.getEconomy() == null) {
logger.err("你没有安装 Vault 前置插件,无法使用经济功能。");
XLogger.err("你没有安装 Vault 前置插件,无法使用经济功能。");
config.setEconomyEnable(false);
}
}
@ -61,20 +61,19 @@ public final class Dominion extends JavaPlugin {
// SCUI 初始化
Bukkit.getPluginManager().registerEvents(new CuiManager(this), this);
CuiManager.instance.setDebug(config.isDebug());
logger.info("领地插件已启动");
logger.info("版本:" + this.getPluginMeta().getVersion());
XLogger.info("领地插件已启动");
XLogger.info("版本:" + this.getPluginMeta().getVersion());
// http://patorjk.com/software/taag/#p=display&f=Big&t=Dominion
logger.info(" _____ _ _");
logger.info(" | __ \\ (_) (_)");
logger.info(" | | | | ___ _ __ ___ _ _ __ _ ___ _ __");
logger.info(" | | | |/ _ \\| '_ ` _ \\| | '_ \\| |/ _ \\| '_ \\");
logger.info(" | |__| | (_) | | | | | | | | | | | (_) | | | |");
logger.info(" |_____/ \\___/|_| |_| |_|_|_| |_|_|\\___/|_| |_|");
logger.info(" ");
XLogger.info(" _____ _ _");
XLogger.info(" | __ \\ (_) (_)");
XLogger.info(" | | | | ___ _ __ ___ _ _ __ _ ___ _ __");
XLogger.info(" | | | |/ _ \\| '_ ` _ \\| | '_ \\| |/ _ \\| '_ \\");
XLogger.info(" | |__| | (_) | | | | | | | | | | | (_) | | | |");
XLogger.info(" |_____/ \\___/|_| |_| |_|_|_| |_|_|\\___/|_| |_|");
XLogger.info(" ");
scheduler.runTaskLaterAsync(BlueMapConnect::render, 40 * 20);
Scheduler.runTaskLaterAsync(BlueMapConnect::render, 40 * 20);
}
@Override
@ -84,11 +83,8 @@ public final class Dominion extends JavaPlugin {
public static Dominion instance;
public static ConfigManager config;
public static XLogger logger;
public static Notification notification;
public static DatabaseManager database;
public static Map<UUID, Map<Integer, Location>> pointsSelect = new HashMap<>();
public static Scheduler scheduler;
private GiteaReleaseCheck giteaReleaseCheck;
public static VaultConnect vault;
}

View File

@ -1,5 +1,6 @@
package cn.lunadeer.dominion;
import cn.lunadeer.minecraftpluginutils.XLogger;
import net.milkbowl.vault.chat.Chat;
import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.permission.Permission;
@ -15,8 +16,8 @@ public class VaultConnect {
public VaultConnect(JavaPlugin plugin) {
this.plugin = plugin;
if (!setupEconomy() ) {
Dominion.logger.err("你没有安装 Vault 前置插件,无法使用经济功能,如果不需要使用经济功能请前往配置文件关闭。");
if (!setupEconomy()) {
XLogger.err("你没有安装 Vault 前置插件,无法使用经济功能,如果不需要使用经济功能请前往配置文件关闭。");
return;
}
setupPermissions();

View File

@ -2,6 +2,7 @@ package cn.lunadeer.dominion.commands;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.minecraftpluginutils.Notification;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -12,7 +13,7 @@ import java.util.Map;
public class Apis {
public static Player playerOnly(CommandSender sender) {
if (!(sender instanceof Player)) {
Dominion.notification.error(sender, "该命令只能由玩家执行");
Notification.error(sender, "该命令只能由玩家执行");
return null;
}
return (Player) sender;
@ -25,14 +26,14 @@ public class Apis {
Integer x2 = dominionDTO.getX2();
Integer y2 = dominionDTO.getY2();
Integer z2 = dominionDTO.getZ2();
Dominion.notification.info(sender, "领地 %s 的尺寸信息:", dominionDTO.getName());
Dominion.notification.info(sender, " 大小: %d x %d x %d", x2 - x1, y2 - y1, z2 - z1);
Dominion.notification.info(sender, " 中心坐标: %d %d %d", x1 + (x2 - x1) / 2, y1 + (y2 - y1) / 2, z1 + (z2 - z1) / 2);
Dominion.notification.info(sender, " 高度: %d", y2 - y1);
Dominion.notification.info(sender, " Y坐标范围 %d ~ %d", y1, y2);
Dominion.notification.info(sender, " 体积: %d", (x2 - x1) * (y2 - y1) * (z2 - z1));
Dominion.notification.info(sender, " 领地所在世界: %s", dominionDTO.getWorld());
Dominion.notification.info(sender, " 领地的对角点坐标: x1=%d y1=%d z1=%d, x2=%d y2=%d z2=%d", x1, y1, z1, x2, y2, z2);
Notification.info(sender, "领地 %s 的尺寸信息:", dominionDTO.getName());
Notification.info(sender, " 大小: %d x %d x %d", x2 - x1, y2 - y1, z2 - z1);
Notification.info(sender, " 中心坐标: %d %d %d", x1 + (x2 - x1) / 2, y1 + (y2 - y1) / 2, z1 + (z2 - z1) / 2);
Notification.info(sender, " 高度: %d", y2 - y1);
Notification.info(sender, " Y坐标范围 %d ~ %d", y1, y2);
Notification.info(sender, " 体积: %d", (x2 - x1) * (y2 - y1) * (z2 - z1));
Notification.info(sender, " 领地所在世界: %s", dominionDTO.getWorld());
Notification.info(sender, " 领地的对角点坐标: x1=%d y1=%d z1=%d, x2=%d y2=%d z2=%d", x1, y1, z1, x2, y2, z2);
}
public static void autoPoints(Player player) {
@ -54,7 +55,7 @@ public class Apis {
if (sender instanceof Player) {
Player player = (Player) sender;
if (!player.isOp()) {
Dominion.notification.warn(player, "你没有权限使用此命令");
Notification.warn(player, "你没有权限使用此命令");
return true;
}
}

View File

@ -1,8 +1,8 @@
package cn.lunadeer.dominion.commands;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.controllers.FlagsController;
import cn.lunadeer.dominion.tuis.DominionFlagInfo;
import cn.lunadeer.minecraftpluginutils.Notification;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -22,15 +22,15 @@ public class DominionFlag {
if (player == null) return;
if (args.length == 3) {
if (FlagsController.setFlag(player, args[1], Boolean.parseBoolean(args[2])) == null) {
Dominion.notification.error(sender, "设置领地权限失败");
Notification.error(sender, "设置领地权限失败");
}
} else if (args.length == 4) {
if (FlagsController.setFlag(player, args[1], Boolean.parseBoolean(args[2]), args[3]) == null) {
Dominion.notification.error(sender, "设置领地权限失败");
Notification.error(sender, "设置领地权限失败");
}
} else if (args.length == 5) {
if (FlagsController.setFlag(player, args[1], Boolean.parseBoolean(args[2]), args[3]) == null) {
Dominion.notification.error(sender, "设置领地权限失败");
Notification.error(sender, "设置领地权限失败");
}
String[] newArgs = new String[3];
newArgs[0] = "flag_info";
@ -39,10 +39,10 @@ public class DominionFlag {
DominionFlagInfo.show(sender, newArgs);
return;
} else {
Dominion.notification.error(sender, "用法: /dominion set <权限名称> <true/false> [领地名称]");
Notification.error(sender, "用法: /dominion set <权限名称> <true/false> [领地名称]");
return;
}
Dominion.notification.info(sender, "设置领地权限 %s 为 %s", args[1], args[2]);
Notification.info(sender, "设置领地权限 %s 为 %s", args[1], args[2]);
}
}

View File

@ -6,7 +6,10 @@ import cn.lunadeer.dominion.controllers.DominionController;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.Flag;
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.Scheduler;
import cn.lunadeer.minecraftpluginutils.Teleport;
import cn.lunadeer.minecraftpluginutils.XLogger;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
@ -29,20 +32,20 @@ public class DominionOperate {
Player player = playerOnly(sender);
if (player == null) return;
if (args.length != 2) {
Dominion.notification.error(sender, "用法: /dominion create <领地名称>");
Notification.error(sender, "用法: /dominion create <领地名称>");
return;
}
Map<Integer, Location> points = Dominion.pointsSelect.get(player.getUniqueId());
if (points == null || points.get(0) == null || points.get(1) == null) {
Dominion.notification.error(sender, "请先使用工具选择领地的对角线两点,或使用 /dominion auto_create <领地名称> 创建自动领地");
Notification.error(sender, "请先使用工具选择领地的对角线两点,或使用 /dominion auto_create <领地名称> 创建自动领地");
return;
}
String name = args[1];
if (DominionController.create(player, name, points.get(0), points.get(1)) == null) {
Dominion.notification.error(sender, "创建领地失败");
Notification.error(sender, "创建领地失败");
return;
}
Dominion.notification.info(sender, "成功创建: %s", name);
Notification.info(sender, "成功创建: %s", name);
}
/**
@ -56,26 +59,26 @@ public class DominionOperate {
Player player = playerOnly(sender);
if (player == null) return;
if (args.length != 2 && args.length != 3) {
Dominion.notification.error(sender, "用法: /dominion create_sub <子领地名称> [父领地名称]");
Notification.error(sender, "用法: /dominion create_sub <子领地名称> [父领地名称]");
return;
}
Map<Integer, Location> points = Dominion.pointsSelect.get(player.getUniqueId());
if (points == null || points.get(0) == null || points.get(1) == null) {
Dominion.notification.error(sender, "请先使用工具选择子领地的对角线两点,或使用 /dominion auto_create_sub <子领地名称> [父领地名称] 创建自动子领地");
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) {
Dominion.notification.info(sender, "成功创建子领地: %s", args[1]);
Notification.info(sender, "成功创建子领地: %s", args[1]);
return;
}
} else {
if (DominionController.create(player, args[1], points.get(0), points.get(1), args[2]) != null) {
Dominion.notification.info(sender, "成功创建子领地: %s", args[1]);
Notification.info(sender, "成功创建子领地: %s", args[1]);
return;
}
}
Dominion.notification.error(sender, "创建子领地失败");
Notification.error(sender, "创建子领地失败");
}
/**
@ -90,11 +93,11 @@ public class DominionOperate {
Player player = playerOnly(sender);
if (player == null) return;
if (args.length != 2) {
Dominion.notification.error(sender, "用法: /dominion auto_create <领地名称>");
Notification.error(sender, "用法: /dominion auto_create <领地名称>");
return;
}
if (Dominion.config.getAutoCreateRadius() < 0) {
Dominion.notification.error(sender, "自动创建领地功能已关闭");
Notification.error(sender, "自动创建领地功能已关闭");
return;
}
autoPoints(player);
@ -113,11 +116,11 @@ public class DominionOperate {
Player player = playerOnly(sender);
if (player == null) return;
if (args.length != 2 && args.length != 3) {
Dominion.notification.error(sender, "用法: /dominion auto_create_sub <子领地名称> [父领地名称]");
Notification.error(sender, "用法: /dominion auto_create_sub <子领地名称> [父领地名称]");
return;
}
if (Dominion.config.getAutoCreateRadius() < 0) {
Dominion.notification.error(sender, "自动创建领地功能已关闭");
Notification.error(sender, "自动创建领地功能已关闭");
return;
}
autoPoints(player);
@ -135,7 +138,7 @@ public class DominionOperate {
Player player = playerOnly(sender);
if (player == null) return;
if (args.length != 2 && args.length != 3) {
Dominion.notification.error(sender, "用法: /dominion expand [大小] [领地名称]");
Notification.error(sender, "用法: /dominion expand [大小] [领地名称]");
return;
}
int size = 10;
@ -143,11 +146,11 @@ public class DominionOperate {
try {
size = Integer.parseInt(args[1]);
} catch (Exception e) {
Dominion.notification.error(sender, "大小格式错误");
Notification.error(sender, "大小格式错误");
return;
}
if (size <= 0) {
Dominion.notification.error(sender, "大小必须大于0");
Notification.error(sender, "大小必须大于0");
return;
}
if (args.length == 3) {
@ -160,9 +163,9 @@ public class DominionOperate {
dominionDTO = DominionController.expand(player, size, name);
}
if (dominionDTO == null) {
Dominion.notification.error(sender, "扩展领地失败");
Notification.error(sender, "扩展领地失败");
} else {
Dominion.notification.info(sender, "成功扩展领地: %s %d", dominionDTO.getName(), size);
Notification.info(sender, "成功扩展领地: %s %d", dominionDTO.getName(), size);
sizeInfo(sender, dominionDTO);
}
}
@ -178,7 +181,7 @@ public class DominionOperate {
Player player = playerOnly(sender);
if (player == null) return;
if (args.length != 2 && args.length != 3) {
Dominion.notification.error(sender, "用法: /dominion contract [大小] [领地名称]");
Notification.error(sender, "用法: /dominion contract [大小] [领地名称]");
return;
}
int size = 10;
@ -186,11 +189,11 @@ public class DominionOperate {
try {
size = Integer.parseInt(args[1]);
} catch (Exception e) {
Dominion.notification.error(sender, "大小格式错误");
Notification.error(sender, "大小格式错误");
return;
}
if (size <= 0) {
Dominion.notification.error(sender, "大小必须大于0");
Notification.error(sender, "大小必须大于0");
return;
}
if (args.length == 3) {
@ -203,9 +206,9 @@ public class DominionOperate {
dominionDTO = DominionController.contract(player, size, name);
}
if (dominionDTO == null) {
Dominion.notification.error(sender, "缩小领地失败");
Notification.error(sender, "缩小领地失败");
} else {
Dominion.notification.info(sender, "成功缩小领地: %s %d", dominionDTO.getName(), size);
Notification.info(sender, "成功缩小领地: %s %d", dominionDTO.getName(), size);
sizeInfo(sender, dominionDTO);
}
}
@ -232,7 +235,7 @@ public class DominionOperate {
return;
}
}
Dominion.notification.error(sender, "用法: /dominion delete <领地名称>");
Notification.error(sender, "用法: /dominion delete <领地名称>");
}
/**
@ -253,7 +256,7 @@ public class DominionOperate {
DominionController.setJoinMessage(player, args[1], args[2]);
return;
}
Dominion.notification.error(sender, "用法: /dominion set_enter_msg <提示语> [领地名称]");
Notification.error(sender, "用法: /dominion set_enter_msg <提示语> [领地名称]");
}
/**
@ -274,7 +277,7 @@ public class DominionOperate {
DominionController.setLeaveMessage(player, args[1], args[2]);
return;
}
Dominion.notification.error(sender, "用法: /dominion set_leave_msg <提示语> [领地名称]");
Notification.error(sender, "用法: /dominion set_leave_msg <提示语> [领地名称]");
}
/**
@ -295,7 +298,7 @@ public class DominionOperate {
DominionController.setTpLocation(player, args[1]);
return;
}
Dominion.notification.error(sender, "用法: /dominion set_tp_location [领地名称]");
Notification.error(sender, "用法: /dominion set_tp_location [领地名称]");
}
/**
@ -309,7 +312,7 @@ public class DominionOperate {
Player player = playerOnly(sender);
if (player == null) return;
if (args.length != 3) {
Dominion.notification.error(sender, "用法: /dominion rename <原领地名称> <新领地名称>");
Notification.error(sender, "用法: /dominion rename <原领地名称> <新领地名称>");
return;
}
DominionController.rename(player, args[1], args[2]);
@ -339,7 +342,7 @@ public class DominionOperate {
return;
}
}
Dominion.notification.error(sender, "用法: /dominion give <领地名称> <玩家名称>");
Notification.error(sender, "用法: /dominion give <领地名称> <玩家名称>");
}
/**
@ -353,27 +356,27 @@ public class DominionOperate {
Player player = playerOnly(sender);
if (player == null) return;
if (args.length != 2) {
Dominion.notification.error(sender, "用法: /dominion tp <领地名称>");
Notification.error(sender, "用法: /dominion tp <领地名称>");
return;
}
if (!Dominion.config.getTpEnable()) {
Dominion.notification.error(sender, "管理员没有开启领地传送功能");
Notification.error(sender, "管理员没有开启领地传送功能");
return;
}
DominionDTO dominionDTO = DominionDTO.select(args[1]);
if (dominionDTO == null) {
Dominion.notification.error(sender, "领地不存在");
Notification.error(sender, "领地不存在");
return;
}
PlayerPrivilegeDTO privilegeDTO = PlayerPrivilegeDTO.select(player.getUniqueId(), dominionDTO.getId());
if (privilegeDTO == null) {
if (!dominionDTO.getFlagValue(Flag.TELEPORT)) {
Dominion.notification.error(sender, "此领地禁止传送");
Notification.error(sender, "此领地禁止传送");
return;
}
} else {
if (!privilegeDTO.getFlagValue(Flag.TELEPORT)) {
Dominion.notification.error(sender, "你不被允许传送到这个领地");
Notification.error(sender, "你不被允许传送到这个领地");
return;
}
}
@ -383,26 +386,26 @@ public class DominionOperate {
if (next_time != null) {
if (now.isBefore(next_time)) {
long secs_until_next = now.until(next_time, java.time.temporal.ChronoUnit.SECONDS);
Dominion.notification.error(player, "请等待 %d 秒后再传送", secs_until_next);
Notification.error(player, "请等待 %d 秒后再传送", secs_until_next);
return;
}
}
if (Dominion.config.getTpDelay() > 0) {
Dominion.notification.info(player, "传送将在 %d 秒后执行", Dominion.config.getTpDelay());
Notification.info(player, "传送将在 %d 秒后执行", Dominion.config.getTpDelay());
}
Cache.instance.NextTimeAllowTeleport.put(player.getUniqueId(), now.plusSeconds(Dominion.config.getTpCoolDown()));
Dominion.scheduler.runTaskLater(() -> {
Scheduler.runTaskLater(() -> {
Location location = dominionDTO.getTpLocation();
if (location == null) {
int x = (dominionDTO.getX1() + dominionDTO.getX2()) / 2;
int z = (dominionDTO.getZ1() + dominionDTO.getZ2()) / 2;
World world = Dominion.instance.getServer().getWorld(dominionDTO.getWorld());
location = new Location(world, x, player.getLocation().getY(), z);
Dominion.logger.warn("领地 %s 没有设置传送点,将尝试传送到中心点", dominionDTO.getName());
XLogger.warn("领地 %s 没有设置传送点,将尝试传送到中心点", dominionDTO.getName());
}
if (player.isOnline()) {
Teleport.doTeleportSafely(Dominion.instance, player, location);
Dominion.notification.info(player, "已将你传送到 " + dominionDTO.getName());
Teleport.doTeleportSafely(player, location);
Notification.info(player, "已将你传送到 " + dominionDTO.getName());
}
}, 20L * Dominion.config.getTpDelay());
}

View File

@ -4,6 +4,8 @@ import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.controllers.DominionController;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.tuis.DominionManage;
import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.XLogger;
import cn.lunadeer.minecraftpluginutils.scui.CuiTextInput;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
@ -26,7 +28,7 @@ public class OpenCUI {
@Override
public void handleData(String input) {
Dominion.logger.debug("renameDominionCB.run: %s", input);
XLogger.debug("renameDominionCB.run: %s", input);
DominionController.rename(sender, oldName, input);
DominionManage.show(sender, new String[]{"manage", input});
}
@ -43,7 +45,7 @@ public class OpenCUI {
@Override
public void handleData(String input) {
Dominion.logger.debug("editJoinMessageCB.run: %s", input);
XLogger.debug("editJoinMessageCB.run: %s", input);
DominionController.setJoinMessage(sender, input, dominionName);
DominionManage.show(sender, new String[]{"manage", dominionName});
}
@ -60,7 +62,7 @@ public class OpenCUI {
@Override
public void handleData(String input) {
Dominion.logger.debug("editLeaveMessageCB.run: %s", input);
XLogger.debug("editLeaveMessageCB.run: %s", input);
DominionController.setLeaveMessage(sender, input, dominionName);
DominionManage.show(sender, new String[]{"manage", dominionName});
}
@ -75,18 +77,18 @@ public class OpenCUI {
@Override
public void handleData(String input) {
Dominion.logger.debug("createDominionCB.run: %s", input);
XLogger.debug("createDominionCB.run: %s", input);
autoPoints(sender);
Map<Integer, Location> points = Dominion.pointsSelect.get(sender.getUniqueId());
if (points == null || points.get(0) == null || points.get(1) == null) {
Dominion.notification.error(sender, "自动选点失败");
Notification.error(sender, "自动选点失败");
return;
}
if (DominionController.create(sender, input, points.get(0), points.get(1)) != null) {
Dominion.notification.info(sender, "成功创建: %s", input);
Notification.info(sender, "成功创建: %s", input);
DominionManage.show(sender, new String[]{"list"});
} else {
Dominion.notification.error(sender, "创建领地失败");
Notification.error(sender, "创建领地失败");
}
}
}
@ -104,7 +106,7 @@ public class OpenCUI {
if (player == null) return;
DominionDTO dominion = DominionDTO.select(args[1]);
if (dominion == null) {
Dominion.notification.error(sender, "领地不存在");
Notification.error(sender, "领地不存在");
return;
}
CuiTextInput.InputCallback editJoinMessageCB = new editJoinMessageCB(player, dominion.getName());
@ -117,7 +119,7 @@ public class OpenCUI {
if (player == null) return;
DominionDTO dominion = DominionDTO.select(args[1]);
if (dominion == null) {
Dominion.notification.error(sender, "领地不存在");
Notification.error(sender, "领地不存在");
return;
}
CuiTextInput.InputCallback editLeaveMessageCB = new editLeaveMessageCB(player, dominion.getName());

View File

@ -4,6 +4,9 @@ import cn.lunadeer.dominion.BlueMapConnect;
import cn.lunadeer.dominion.Cache;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.Scheduler;
import cn.lunadeer.minecraftpluginutils.XLogger;
import org.bukkit.command.CommandSender;
import java.io.File;
@ -18,22 +21,22 @@ public class Operator {
public static void reloadCache(CommandSender sender, String[] args) {
if (notOpOrConsole(sender)) return;
Dominion.scheduler.runTaskAsync(() -> {
Dominion.notification.info(sender, "正在从数据库重新加载领地缓存...");
Scheduler.runTaskAsync(() -> {
Notification.info(sender, "正在从数据库重新加载领地缓存...");
Cache.instance.loadDominions();
Dominion.notification.info(sender, "领地缓存已重新加载");
Notification.info(sender, "领地缓存已重新加载");
});
Dominion.scheduler.runTaskAsync(() -> {
Dominion.notification.info(sender, "正在从数据库重新加载玩家权限缓存...");
Scheduler.runTaskAsync(() -> {
Notification.info(sender, "正在从数据库重新加载玩家权限缓存...");
Cache.instance.loadPlayerPrivileges();
Dominion.notification.info(sender, "玩家权限缓存已重新加载");
Notification.info(sender, "玩家权限缓存已重新加载");
});
}
public static void exportMca(CommandSender sender, String[] args) {
if (notOpOrConsole(sender)) return;
Dominion.scheduler.runTaskAsync(() -> {
Dominion.notification.info(sender, "正在导出拥有领地的MCA文件列表...");
Scheduler.runTaskAsync(() -> {
Notification.info(sender, "正在导出拥有领地的MCA文件列表...");
Map<String, List<String>> mca_cords = new HashMap<>();
List<DominionDTO> doms = Cache.instance.getDominions();
for (DominionDTO dom : doms) {
@ -62,51 +65,51 @@ public class Operator {
if (!folder.exists()) {
boolean success = folder.mkdirs();
if (!success) {
Dominion.notification.error(sender, "创建导出文件夹失败");
Notification.error(sender, "创建导出文件夹失败");
return;
}
}
for (String world : mca_cords.keySet()) {
File file = new File(folder, world + ".txt");
Dominion.notification.info(sender, "正在导出 %s 的MCA文件列表...", world);
Notification.info(sender, "正在导出 %s 的MCA文件列表...", world);
try {
if (file.exists()) {
boolean success = file.delete();
if (!success) {
Dominion.notification.error(sender, "删除 %s 的MCA文件列表失败", world);
Notification.error(sender, "删除 %s 的MCA文件列表失败", world);
continue;
}
}
boolean success = file.createNewFile();
if (!success) {
Dominion.notification.error(sender, "创建 %s 的MCA文件列表失败", world);
Notification.error(sender, "创建 %s 的MCA文件列表失败", world);
continue;
}
List<String> cords = mca_cords.get(world);
for (String cord : cords) {
Dominion.logger.debug("正在写入 %s...", cord);
XLogger.debug("正在写入 %s...", cord);
try {
java.nio.file.Files.write(file.toPath(), (cord + "\n").getBytes(), java.nio.file.StandardOpenOption.APPEND);
} catch (Exception e) {
Dominion.notification.error(sender, "写入 %s 失败", cord);
Notification.error(sender, "写入 %s 失败", cord);
}
}
} catch (Exception e) {
Dominion.notification.error(sender, "导出 %s 的MCA文件列表失败", world);
Dominion.notification.error(sender, e.getMessage());
Notification.error(sender, "导出 %s 的MCA文件列表失败", world);
Notification.error(sender, e.getMessage());
}
}
BlueMapConnect.renderMCA(mca_cords);
Dominion.notification.info(sender, "MCA文件列表已导出到 %s", folder.getAbsolutePath());
Notification.info(sender, "MCA文件列表已导出到 %s", folder.getAbsolutePath());
});
}
public static void reloadConfig(CommandSender sender, String[] args) {
if (notOpOrConsole(sender)) return;
Dominion.scheduler.runTaskAsync(() -> {
Dominion.notification.info(sender, "正在重新加载配置文件...");
Scheduler.runTaskAsync(() -> {
Notification.info(sender, "正在重新加载配置文件...");
Dominion.config.reload();
Dominion.notification.info(sender, "配置文件已重新加载");
Notification.info(sender, "配置文件已重新加载");
});
}

View File

@ -1,8 +1,8 @@
package cn.lunadeer.dominion.commands;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.tuis.DominionPrivilegeList;
import cn.lunadeer.dominion.tuis.PrivilegeInfo;
import cn.lunadeer.minecraftpluginutils.Notification;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -22,21 +22,21 @@ public class PlayerPrivilege {
Player player = playerOnly(sender);
if (player == null) return;
if (args.length != 2 && args.length != 3 && args.length != 4) {
Dominion.notification.error(sender, "用法: /dominion create_privilege <玩家名称> [领地名称]");
Notification.error(sender, "用法: /dominion create_privilege <玩家名称> [领地名称]");
return;
}
if (args.length == 2) {
if (!createPrivilege(player, args[1])) {
Dominion.notification.error(sender, "创建玩家特权失败");
Notification.error(sender, "创建玩家特权失败");
return;
}
} else {
if (!createPrivilege(player, args[1], args[2])) {
Dominion.notification.error(sender, "创建玩家特权失败");
Notification.error(sender, "创建玩家特权失败");
return;
}
}
Dominion.notification.info(sender, "成功创建玩家特权 %s", args[1]);
Notification.info(sender, "成功创建玩家特权 %s", args[1]);
if (args.length == 4) {
String[] newArgs = new String[2];
newArgs[0] = "privilege_list";
@ -58,17 +58,17 @@ public class PlayerPrivilege {
if (args.length == 4) {
if (!setPrivilege(player, args[1], args[2], Boolean.parseBoolean(args[3]))) {
Dominion.notification.error(sender, "设置玩家权限失败");
Notification.error(sender, "设置玩家权限失败");
return;
}
} else if (args.length == 5) {
if (!setPrivilege(player, args[1], args[2], Boolean.parseBoolean(args[3]), args[4])) {
Dominion.notification.error(sender, "设置玩家权限失败");
Notification.error(sender, "设置玩家权限失败");
return;
}
} else if (args.length == 6) {
if (!setPrivilege(player, args[1], args[2], Boolean.parseBoolean(args[3]), args[4])) {
Dominion.notification.error(sender, "设置玩家权限失败");
Notification.error(sender, "设置玩家权限失败");
return;
}
String[] newArgs = new String[4];
@ -79,10 +79,10 @@ public class PlayerPrivilege {
PrivilegeInfo.show(sender, newArgs);
return;
} else {
Dominion.notification.error(sender, "用法: /dominion set_privilege <玩家名称> <权限名称> <true/false> [领地名称]");
Notification.error(sender, "用法: /dominion set_privilege <玩家名称> <权限名称> <true/false> [领地名称]");
return;
}
Dominion.notification.info(sender, "设置玩家的 %s 权限为 %s", args[2], args[3]);
Notification.info(sender, "设置玩家的 %s 权限为 %s", args[2], args[3]);
}
/**
@ -96,21 +96,21 @@ public class PlayerPrivilege {
Player player = playerOnly(sender);
if (player == null) return;
if (args.length != 2 && args.length != 3 && args.length != 4) {
Dominion.notification.error(sender, "用法: /dominion clear_privilege <玩家名称> [领地名称]");
Notification.error(sender, "用法: /dominion clear_privilege <玩家名称> [领地名称]");
return;
}
if (args.length == 2) {
if (!clearPrivilege(player, args[1])) {
Dominion.notification.error(sender, "重置玩家权限失败");
Notification.error(sender, "重置玩家权限失败");
return;
}
} else {
if (!clearPrivilege(player, args[1], args[2])) {
Dominion.notification.error(sender, "重置玩家权限失败");
Notification.error(sender, "重置玩家权限失败");
return;
}
}
Dominion.notification.info(sender, "成功清除玩家 %s 的权限", args[1]);
Notification.info(sender, "成功清除玩家 %s 的权限", args[1]);
if (args.length == 4) {
String[] newArgs = new String[3];
newArgs[0] = "privilege_list";

View File

@ -2,6 +2,7 @@ package cn.lunadeer.dominion.commands;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.tuis.DominionConfig;
import cn.lunadeer.minecraftpluginutils.Notification;
import org.bukkit.command.CommandSender;
import static cn.lunadeer.dominion.commands.Apis.notOpOrConsole;
@ -11,7 +12,7 @@ public class SetConfig {
public static void handler(CommandSender sender, String[] args) {
if (notOpOrConsole(sender)) return;
if (args.length < 2) {
Dominion.notification.error(sender, "参数错误");
Notification.error(sender, "参数错误");
return;
}
switch (args[1]) {
@ -67,7 +68,7 @@ public class SetConfig {
setEconomyRefund(sender, args);
break;
default:
Dominion.notification.error(sender, "未知参数");
Notification.error(sender, "未知参数");
}
}
@ -85,7 +86,7 @@ public class SetConfig {
int size = Integer.parseInt(args[2]);
if (size < 2) {
Dominion.config.setAutoCreateRadius(2);
Dominion.notification.error(sender, "自动创建半径不能小于2");
Notification.error(sender, "自动创建半径不能小于2");
} else {
Dominion.config.setAutoCreateRadius(size);
}
@ -101,7 +102,7 @@ public class SetConfig {
private static void setLimitMaxY(CommandSender sender, String[] args) {
int maxY = Integer.parseInt(args[2]);
if (maxY <= Dominion.config.getLimitMinY()) {
Dominion.notification.error(sender, "最高Y坐标限制不能小于最低Y坐标限制");
Notification.error(sender, "最高Y坐标限制不能小于最低Y坐标限制");
return;
}
Dominion.config.setLimitMaxY(maxY);
@ -112,7 +113,7 @@ public class SetConfig {
private static void setLimitMinY(CommandSender sender, String[] args) {
int minY = Integer.parseInt(args[2]);
if (minY >= Dominion.config.getLimitMaxY()) {
Dominion.notification.error(sender, "最低Y坐标限制不能大于最高Y坐标限制");
Notification.error(sender, "最低Y坐标限制不能大于最高Y坐标限制");
return;
}
Dominion.config.setLimitMinY(minY);
@ -124,7 +125,7 @@ public class SetConfig {
int sizeX = Integer.parseInt(args[2]);
if (sizeX != -1 && sizeX < 4) {
Dominion.config.setLimitSizeX(4);
Dominion.notification.error(sender, "X轴(东西)最大尺寸不能小于4");
Notification.error(sender, "X轴(东西)最大尺寸不能小于4");
} else {
Dominion.config.setLimitSizeX(sizeX);
}
@ -135,7 +136,7 @@ public class SetConfig {
int sizeZ = Integer.parseInt(args[2]);
if (sizeZ != -1 && sizeZ < 4) {
Dominion.config.setLimitSizeZ(4);
Dominion.notification.error(sender, "Z轴(南北)最大尺寸不能小于4");
Notification.error(sender, "Z轴(南北)最大尺寸不能小于4");
return;
} else {
Dominion.config.setLimitSizeZ(sizeZ);
@ -147,7 +148,7 @@ public class SetConfig {
int sizeY = Integer.parseInt(args[2]);
if (sizeY != -1 && sizeY < 4) {
Dominion.config.setLimitSizeY(4);
Dominion.notification.error(sender, "Y轴(垂直)最大尺寸不能小于4");
Notification.error(sender, "Y轴(垂直)最大尺寸不能小于4");
} else {
Dominion.config.setLimitSizeY(sizeY);
}
@ -158,7 +159,7 @@ public class SetConfig {
int amount = Integer.parseInt(args[2]);
if (amount != -1 && amount < 0) {
Dominion.config.setLimitAmount(0);
Dominion.notification.error(sender, "每个玩家领地数量限制不能小于0");
Notification.error(sender, "每个玩家领地数量限制不能小于0");
} else {
Dominion.config.setLimitAmount(amount);
}
@ -169,7 +170,7 @@ public class SetConfig {
int depth = Integer.parseInt(args[2]);
if (depth != -1 && depth < 0) {
Dominion.config.setLimitDepth(0);
Dominion.notification.error(sender, "领地深度限制不能小于0");
Notification.error(sender, "领地深度限制不能小于0");
} else {
Dominion.config.setLimitDepth(depth);
}
@ -199,7 +200,7 @@ public class SetConfig {
int tpDelay = Integer.parseInt(args[2]);
if (tpDelay < 0) {
Dominion.config.setTpDelay(0);
Dominion.notification.error(sender, "传送延迟不能小于0");
Notification.error(sender, "传送延迟不能小于0");
} else {
Dominion.config.setTpDelay(tpDelay);
}
@ -210,7 +211,7 @@ public class SetConfig {
int tpCoolDown = Integer.parseInt(args[2]);
if (tpCoolDown < 0) {
Dominion.config.setTpCoolDown(0);
Dominion.notification.error(sender, "传送冷却时间不能小于0");
Notification.error(sender, "传送冷却时间不能小于0");
} else {
Dominion.config.setTpCoolDown(tpCoolDown);
}
@ -227,7 +228,7 @@ public class SetConfig {
float economyPrice = Float.parseFloat(args[2]);
if (economyPrice < 0) {
Dominion.config.setEconomyPrice(0.0f);
Dominion.notification.error(sender, "每方块单价不能小于0");
Notification.error(sender, "每方块单价不能小于0");
} else {
Dominion.config.setEconomyPrice(economyPrice);
}
@ -244,7 +245,7 @@ public class SetConfig {
float economyRefund = Float.parseFloat(args[2]);
if (economyRefund < 0) {
Dominion.config.setEconomyRefund(0.0f);
Dominion.notification.error(sender, "领地退款比例不能小于0");
Notification.error(sender, "领地退款比例不能小于0");
} else {
Dominion.config.setEconomyRefund(economyRefund);
}

View File

@ -1,8 +1,8 @@
package cn.lunadeer.dominion.controllers;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
import cn.lunadeer.minecraftpluginutils.Notification;
import org.bukkit.Location;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
@ -14,7 +14,7 @@ public class Apis {
public static boolean notOwner(Player player, DominionDTO dominion) {
if (player.isOp()) return false;
if (dominion.getOwner().equals(player.getUniqueId())) return false;
Dominion.notification.error(player, "你不是领地 %s 的拥有者,无法执行此操作", dominion.getName());
Notification.error(player, "你不是领地 %s 的拥有者,无法执行此操作", dominion.getName());
return true;
}
@ -23,7 +23,7 @@ public class Apis {
if (!dominion.getOwner().equals(player.getUniqueId())) {
PlayerPrivilegeDTO privileges = PlayerPrivilegeDTO.select(player.getUniqueId(), dominion.getId());
if (privileges == null || !privileges.getAdmin()) {
Dominion.notification.error(player, "你不是领地 %s 的拥有者或管理员,无权修改权限", dominion.getName());
Notification.error(player, "你不是领地 %s 的拥有者或管理员,无权修改权限", dominion.getName());
return true;
}
}
@ -43,7 +43,7 @@ public class Apis {
(int) location.getX(), (int) location.getY(), (int) location.getZ());
if (dominions.size() != 1) {
if (show_warning) {
Dominion.notification.error(player, "你不在一个领地内或在子领地内,无法确定你要操作的领地,请手动指定要操作的领地名称");
Notification.error(player, "你不在一个领地内或在子领地内,无法确定你要操作的领地,请手动指定要操作的领地名称");
}
return null;
}

View File

@ -5,7 +5,9 @@ import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.PlayerDTO;
import cn.lunadeer.dominion.utils.Time;
import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.ParticleRender;
import cn.lunadeer.minecraftpluginutils.XLogger;
import org.bukkit.Location;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
@ -58,23 +60,23 @@ public class DominionController {
Location loc1, Location loc2,
String parent_dominion_name) {
if (name.isEmpty()) {
Dominion.notification.error(owner, "领地名称不能为空");
Notification.error(owner, "领地名称不能为空");
return null;
}
if (name.contains(" ")) {
Dominion.notification.error(owner, "领地名称不能包含空格");
Notification.error(owner, "领地名称不能包含空格");
return null;
}
if (DominionDTO.select(name) != null) {
Dominion.notification.error(owner, "已经存在名称为 %s 的领地", name);
Notification.error(owner, "已经存在名称为 %s 的领地", name);
return null;
}
if (!loc1.getWorld().equals(loc2.getWorld())) {
Dominion.notification.error(owner, "禁止跨世界操作");
Notification.error(owner, "禁止跨世界操作");
return null;
}
if (!owner.getWorld().equals(loc1.getWorld())) {
Dominion.notification.error(owner, "禁止跨世界操作");
Notification.error(owner, "禁止跨世界操作");
return null;
}
// 检查世界是否可以创建
@ -102,9 +104,9 @@ public class DominionController {
parent_dominion = DominionDTO.select(parent_dominion_name);
}
if (parent_dominion == null) {
Dominion.notification.error(owner, "父领地 %s 不存在", parent_dominion_name);
Notification.error(owner, "父领地 %s 不存在", parent_dominion_name);
if (parent_dominion_name.isEmpty()) {
Dominion.logger.err("根领地丢失!");
XLogger.err("根领地丢失!");
}
return null;
}
@ -116,7 +118,7 @@ public class DominionController {
}
// 如果parent_dominion不为-1 检查是否在同一世界
if (parent_dominion.getId() != -1 && !parent_dominion.getWorld().equals(dominion.getWorld())) {
Dominion.notification.error(owner, "禁止跨世界操作");
Notification.error(owner, "禁止跨世界操作");
return null;
}
// 检查深度是否达到上限
@ -125,7 +127,7 @@ public class DominionController {
}
// 检查是否超出父领地范围
if (!isContained(dominion, parent_dominion)) {
Dominion.notification.error(owner, "超出父领地 %s 范围", parent_dominion.getName());
Notification.error(owner, "超出父领地 %s 范围", parent_dominion.getName());
return null;
}
// 获取此领地的所有同级领地
@ -133,7 +135,7 @@ public class DominionController {
// 检查是否与其他子领地冲突
for (DominionDTO sub_dominion : sub_dominions) {
if (isIntersect(sub_dominion, dominion)) {
Dominion.notification.error(owner, "与领地 %s 冲突", sub_dominion.getName());
Notification.error(owner, "与领地 %s 冲突", sub_dominion.getName());
return null;
}
}
@ -147,15 +149,15 @@ public class DominionController {
}
float price = count * Dominion.config.getEconomyPrice();
if (Dominion.vault.getEconomy().getBalance(owner) < price) {
Dominion.notification.error(owner, "你的余额不足,创建此领地需要 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural());
Notification.error(owner, "你的余额不足,创建此领地需要 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural());
return null;
}
Dominion.notification.info(owner, "已扣除 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural());
Notification.info(owner, "已扣除 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural());
Dominion.vault.getEconomy().withdrawPlayer(owner, price);
}
dominion = DominionDTO.insert(dominion);
if (dominion == null) {
Dominion.notification.error(owner, "创建失败,详细错误请联系管理员查询日志(当前时间:%s", Time.nowStr());
Notification.error(owner, "创建失败,详细错误请联系管理员查询日志(当前时间:%s", Time.nowStr());
return null;
}
ParticleRender.showBoxFace(Dominion.instance, owner, loc1, loc2);
@ -195,7 +197,7 @@ public class DominionController {
return null;
}
if (!location.getWorld().getName().equals(dominion.getWorld())) {
Dominion.notification.error(operator, "禁止跨世界操作");
Notification.error(operator, "禁止跨世界操作");
return null;
}
Integer x1 = dominion.getX1();
@ -224,7 +226,7 @@ public class DominionController {
y1 -= size;
break;
default:
Dominion.notification.error(operator, "无效的方向");
Notification.error(operator, "无效的方向");
return null;
}
if (sizeNotValid(operator, x1, y1, z1, x2, y2, z2)) {
@ -233,11 +235,11 @@ public class DominionController {
// 校验是否超出父领地范围
DominionDTO parent_dominion = DominionDTO.select(dominion.getParentDomId());
if (parent_dominion == null) {
Dominion.notification.error(operator, "父领地丢失");
Notification.error(operator, "父领地丢失");
return null;
}
if (!isContained(x1, y1, z1, x2, y2, z2, parent_dominion)) {
Dominion.notification.error(operator, "超出父领地 %s 范围", parent_dominion.getName());
Notification.error(operator, "超出父领地 %s 范围", parent_dominion.getName());
return null;
}
// 获取同世界下的所有同级领地
@ -246,7 +248,7 @@ public class DominionController {
if (isIntersect(exist_dominion, x1, y1, z1, x2, y2, z2)) {
// 如果是自己跳过
if (exist_dominion.getId().equals(dominion.getId())) continue;
Dominion.notification.error(operator, "与 %s 冲突", exist_dominion.getName());
Notification.error(operator, "与 %s 冲突", exist_dominion.getName());
return null;
}
}
@ -260,10 +262,10 @@ public class DominionController {
}
float price = count * Dominion.config.getEconomyPrice();
if (Dominion.vault.getEconomy().getBalance(operator) < price) {
Dominion.notification.error(operator, "你的余额不足,扩展此领地需要 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural());
Notification.error(operator, "你的余额不足,扩展此领地需要 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural());
return null;
}
Dominion.notification.info(operator, "已扣除 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural());
Notification.info(operator, "已扣除 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural());
Dominion.vault.getEconomy().withdrawPlayer(operator, price);
}
ParticleRender.showBoxFace(Dominion.instance, operator,
@ -305,7 +307,7 @@ public class DominionController {
return null;
}
if (!location.getWorld().getName().equals(dominion.getWorld())) {
Dominion.notification.error(operator, "禁止跨世界操作");
Notification.error(operator, "禁止跨世界操作");
return null;
}
Integer x1 = dominion.getX1();
@ -334,12 +336,12 @@ public class DominionController {
y1 += size;
break;
default:
Dominion.notification.error(operator, "无效的方向");
Notification.error(operator, "无效的方向");
return null;
}
// 校验第二组坐标是否小于第一组坐标
if (x1 >= x2 || y1 >= y2 || z1 >= z2) {
Dominion.notification.error(operator, "缩小后的领地无效");
Notification.error(operator, "缩小后的领地无效");
return null;
}
if (sizeNotValid(operator, x1, y1, z1, x2, y2, z2)) {
@ -349,7 +351,7 @@ public class DominionController {
List<DominionDTO> sub_dominions = DominionDTO.selectByParentId(dominion.getWorld(), dominion.getId());
for (DominionDTO sub_dominion : sub_dominions) {
if (!isContained(sub_dominion, x1, y1, z1, x2, y2, z2)) {
Dominion.notification.error(operator, "缩小后的领地 %s 无法包含子领地 %s", dominion_name, sub_dominion.getName());
Notification.error(operator, "缩小后的领地 %s 无法包含子领地 %s", dominion_name, sub_dominion.getName());
return null;
}
}
@ -363,7 +365,7 @@ public class DominionController {
}
float refund = count * Dominion.config.getEconomyPrice() * Dominion.config.getEconomyRefund();
Dominion.vault.getEconomy().depositPlayer(operator, refund);
Dominion.notification.info(operator, "已经退还 %.2f %s", refund, Dominion.vault.getEconomy().currencyNamePlural());
Notification.info(operator, "已经退还 %.2f %s", refund, Dominion.vault.getEconomy().currencyNamePlural());
}
ParticleRender.showBoxFace(Dominion.instance, operator,
new Location(location.getWorld(), x1, y1, z1),
@ -385,16 +387,16 @@ public class DominionController {
}
List<DominionDTO> sub_dominions = getSubDominionsRecursive(dominion);
if (!force) {
Dominion.notification.warn(operator, "删除领地 %s 会同时删除其所有子领地,是否继续?", dominion_name);
Notification.warn(operator, "删除领地 %s 会同时删除其所有子领地,是否继续?", dominion_name);
String sub_names = "";
for (DominionDTO sub_dominion : sub_dominions) {
sub_names = sub_dominion.getName() + ", ";
}
if (sub_dominions.size() > 0) {
sub_names = sub_names.substring(0, sub_names.length() - 2);
Dominion.notification.warn(operator, "当前子领地:" + sub_names);
Notification.warn(operator, "当前子领地:" + sub_names);
}
Dominion.notification.warn(operator, "输入 /dominion delete %s force 确认删除", dominion_name);
Notification.warn(operator, "输入 /dominion delete %s force 确认删除", dominion_name);
return;
}
DominionDTO.delete(dominion);
@ -412,9 +414,9 @@ public class DominionController {
}
float refund = count * Dominion.config.getEconomyPrice() * Dominion.config.getEconomyRefund();
Dominion.vault.getEconomy().depositPlayer(operator, refund);
Dominion.notification.info(operator, "已经退还 %.2f %s", refund, Dominion.vault.getEconomy().currencyNamePlural());
Notification.info(operator, "已经退还 %.2f %s", refund, Dominion.vault.getEconomy().currencyNamePlural());
}
Dominion.notification.info(operator, "领地 %s 及其所有子领地已删除", dominion_name);
Notification.info(operator, "领地 %s 及其所有子领地已删除", dominion_name);
}
/**
@ -444,7 +446,7 @@ public class DominionController {
return;
}
dominion.setJoinMessage(message);
Dominion.notification.info(operator, "成功设置领地 %s 的进入消息", dominion_name);
Notification.info(operator, "成功设置领地 %s 的进入消息", dominion_name);
}
/**
@ -474,7 +476,7 @@ public class DominionController {
return;
}
dominion.setLeaveMessage(message);
Dominion.notification.info(operator, "成功设置领地 %s 的离开消息", dominion_name);
Notification.info(operator, "成功设置领地 %s 的离开消息", dominion_name);
}
/**
@ -512,10 +514,10 @@ public class DominionController {
Location loc = operator.getLocation();
loc.setY(loc.getY() + 1.5);
dominion.setTpLocation(loc);
Dominion.notification.info(operator, "成功设置领地 %s 的传送点,坐标:%d %d %d",
Notification.info(operator, "成功设置领地 %s 的传送点,坐标:%d %d %d",
dominion_name, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
} else {
Dominion.notification.error(operator, "你不在领地 %s 内,无法设置传送点", dominion_name);
Notification.error(operator, "你不在领地 %s 内,无法设置传送点", dominion_name);
}
}
@ -528,15 +530,15 @@ public class DominionController {
*/
public static void rename(Player operator, String old_name, String new_name) {
if (new_name.isEmpty()) {
Dominion.notification.error(operator, "新名称不能为空");
Notification.error(operator, "新名称不能为空");
return;
}
if (new_name.contains(" ")) {
Dominion.notification.error(operator, "领地名称不能包含空格");
Notification.error(operator, "领地名称不能包含空格");
return;
}
if (Objects.equals(old_name, new_name)) {
Dominion.notification.error(operator, "新名称与旧名称相同");
Notification.error(operator, "新名称与旧名称相同");
return;
}
DominionDTO dominion = getExistDomAndIsOwner(operator, old_name);
@ -544,11 +546,11 @@ public class DominionController {
return;
}
if (DominionDTO.select(new_name) != null) {
Dominion.notification.error(operator, "已经存在名称为 %s 的领地", new_name);
Notification.error(operator, "已经存在名称为 %s 的领地", new_name);
return;
}
dominion.setName(new_name);
Dominion.notification.info(operator, "成功将领地 %s 重命名为 %s", old_name, new_name);
Notification.info(operator, "成功将领地 %s 重命名为 %s", old_name, new_name);
}
/**
@ -561,7 +563,7 @@ public class DominionController {
*/
public static void give(Player operator, String dom_name, String player_name, boolean force) {
if (Objects.equals(player_name, operator.getName())) {
Dominion.notification.error(operator, "你不能将领地转让给自己");
Notification.error(operator, "你不能将领地转让给自己");
return;
}
DominionDTO dominion = getExistDomAndIsOwner(operator, dom_name);
@ -570,32 +572,32 @@ public class DominionController {
}
PlayerDTO player = PlayerController.getPlayerDTO(player_name);
if (player == null) {
Dominion.notification.error(operator, "玩家 %s 不存在", player_name);
Notification.error(operator, "玩家 %s 不存在", player_name);
return;
}
if (dominion.getParentDomId() != -1) {
Dominion.notification.error(operator, "子领地无法转让,你可以通过将玩家设置为管理员来让其管理子领地");
Notification.error(operator, "子领地无法转让,你可以通过将玩家设置为管理员来让其管理子领地");
return;
}
List<DominionDTO> sub_dominions = getSubDominionsRecursive(dominion);
if (!force) {
Dominion.notification.warn(operator, "转让领地 %s 给 %s 会同时转让其所有子领地,是否继续?", dom_name, player_name);
Notification.warn(operator, "转让领地 %s 给 %s 会同时转让其所有子领地,是否继续?", dom_name, player_name);
String sub_names = "";
for (DominionDTO sub_dominion : sub_dominions) {
sub_names = sub_dominion.getName() + ", ";
}
if (sub_dominions.size() > 0) {
sub_names = sub_names.substring(0, sub_names.length() - 2);
Dominion.notification.warn(operator, "当前子领地:%s", sub_names);
Notification.warn(operator, "当前子领地:%s", sub_names);
}
Dominion.notification.warn(operator, "输入 /dominion give %s %s force 确认转让", dom_name, player_name);
Notification.warn(operator, "输入 /dominion give %s %s force 确认转让", dom_name, player_name);
return;
}
dominion.setOwner(player.getUuid());
for (DominionDTO sub_dominion : sub_dominions) {
sub_dominion.setOwner(player.getUuid());
}
Dominion.notification.info(operator, "成功将领地 %s 及其所有子领地转让给 %s", dom_name, player_name);
Notification.info(operator, "成功将领地 %s 及其所有子领地转让给 %s", dom_name, player_name);
}
/**
@ -674,27 +676,27 @@ public class DominionController {
int y_length = y2 - y1;
int z_length = z2 - z1;
if (x_length < 4 || y_length < 4 || z_length < 4) {
Dominion.notification.error(operator, "领地的任意一边长度不得小于4");
Notification.error(operator, "领地的任意一边长度不得小于4");
return true;
}
if (x_length > Dominion.config.getLimitSizeX() && Dominion.config.getLimitSizeX() > 0) {
Dominion.notification.error(operator, "领地X方向长度不能超过 %s", Dominion.config.getLimitSizeX());
Notification.error(operator, "领地X方向长度不能超过 %s", Dominion.config.getLimitSizeX());
return true;
}
if (y_length > Dominion.config.getLimitSizeY() && Dominion.config.getLimitSizeY() > 0) {
Dominion.notification.error(operator, "领地Y方向高度不能超过 %s", Dominion.config.getLimitSizeY());
Notification.error(operator, "领地Y方向高度不能超过 %s", Dominion.config.getLimitSizeY());
return true;
}
if (z_length > Dominion.config.getLimitSizeZ() && Dominion.config.getLimitSizeZ() > 0) {
Dominion.notification.error(operator, "领地Z方向长度不能超过 %s", Dominion.config.getLimitSizeZ());
Notification.error(operator, "领地Z方向长度不能超过 %s", Dominion.config.getLimitSizeZ());
return true;
}
if (y2 > Dominion.config.getLimitMaxY()) {
Dominion.notification.error(operator, "领地Y坐标不能超过 %s", Dominion.config.getLimitMaxY());
Notification.error(operator, "领地Y坐标不能超过 %s", Dominion.config.getLimitMaxY());
return true;
}
if (y1 < Dominion.config.getLimitMinY()) {
Dominion.notification.error(operator, "领地Y坐标不能低于 %s", Dominion.config.getLimitMinY());
Notification.error(operator, "领地Y坐标不能低于 %s", Dominion.config.getLimitMinY());
return true;
}
return false;
@ -708,7 +710,7 @@ public class DominionController {
return false;
}
if (parent_dom.getId() != -1 && Dominion.config.getLimitDepth() == 0) {
Dominion.notification.error(operator, "不允许创建子领地");
Notification.error(operator, "不允许创建子领地");
return true;
}
if (parent_dom.getId() == -1) {
@ -720,7 +722,7 @@ public class DominionController {
level++;
}
if (level >= Dominion.config.getLimitDepth()) {
Dominion.notification.error(operator, "子领地嵌套深度不能超过 %s", Dominion.config.getLimitDepth());
Notification.error(operator, "子领地嵌套深度不能超过 %s", Dominion.config.getLimitDepth());
return true;
}
return false;
@ -731,7 +733,7 @@ public class DominionController {
return false;
}
if (Cache.instance.getPlayerDominionCount(operator) >= Dominion.config.getLimitAmount() && Dominion.config.getLimitAmount() != -1) {
Dominion.notification.error(operator, "你的领地数量已达上限,当前上限为 %s", Dominion.config.getLimitAmount());
Notification.error(operator, "你的领地数量已达上限,当前上限为 %s", Dominion.config.getLimitAmount());
return true;
}
return false;
@ -742,7 +744,7 @@ public class DominionController {
return false;
}
if (Dominion.config.getWorldBlackList().contains(operator.getWorld().getName())) {
Dominion.notification.error(operator, "禁止在世界 %s 创建领地", operator.getWorld().getName());
Notification.error(operator, "禁止在世界 %s 创建领地", operator.getWorld().getName());
return true;
}
return false;
@ -751,11 +753,11 @@ public class DominionController {
private static DominionDTO getExistDomAndIsOwner(Player operator, String dominion_name) {
DominionDTO dominion = DominionDTO.select(dominion_name);
if (dominion == null) {
Dominion.notification.error(operator, "领地 %s 不存在", dominion_name);
Notification.error(operator, "领地 %s 不存在", dominion_name);
return null;
}
if (notOwner(operator, dominion)) {
Dominion.notification.error(operator, "你不是领地 %s 的拥有者,无法执行此操作", dominion_name);
Notification.error(operator, "你不是领地 %s 的拥有者,无法执行此操作", dominion_name);
return null;
}
return dominion;

View File

@ -1,8 +1,8 @@
package cn.lunadeer.dominion.controllers;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.Flag;
import cn.lunadeer.minecraftpluginutils.Notification;
import org.bukkit.entity.Player;
import static cn.lunadeer.dominion.controllers.Apis.noAuthToChangeFlags;
@ -35,13 +35,13 @@ public class FlagsController {
public static DominionDTO setFlag(Player operator, String flag, boolean value, String dominionName) {
DominionDTO dominion = DominionDTO.select(dominionName);
if (dominion == null) {
Dominion.notification.error(operator, "领地 %s 不存在", dominionName);
Notification.error(operator, "领地 %s 不存在", dominionName);
return null;
}
if (noAuthToChangeFlags(operator, dominion)) return null;
Flag f = Flag.getFlag(flag);
if (f == null) {
Dominion.notification.error(operator, "未知的领地权限 %s", flag);
Notification.error(operator, "未知的领地权限 %s", flag);
return null;
}
return dominion.setFlagValue(f, value);

View File

@ -1,10 +1,11 @@
package cn.lunadeer.dominion.controllers;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.Flag;
import cn.lunadeer.dominion.dtos.PlayerDTO;
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.XLogger;
import org.bukkit.entity.Player;
import java.util.UUID;
@ -24,7 +25,7 @@ public class PrivilegeController {
public static boolean clearPrivilege(Player operator, String player_name) {
DominionDTO dominion = Apis.getPlayerCurrentDominion(operator);
if (dominion == null) {
Dominion.notification.error(operator, "你不在任何领地内,请指定领地名称 /dominion clear_privilege <玩家名称> <领地名称>");
Notification.error(operator, "你不在任何领地内,请指定领地名称 /dominion clear_privilege <玩家名称> <领地名称>");
return false;
}
return clearPrivilege(operator, player_name, dominion.getName());
@ -41,13 +42,13 @@ public class PrivilegeController {
public static boolean clearPrivilege(Player operator, String player_name, String dominionName) {
DominionDTO dominion = DominionDTO.select(dominionName);
if (dominion == null) {
Dominion.notification.error(operator, "领地 %s 不存在", dominionName);
Notification.error(operator, "领地 %s 不存在", dominionName);
return false;
}
if (noAuthToChangeFlags(operator, dominion)) return false;
PlayerDTO player = PlayerController.getPlayerDTO(player_name);
if (player == null) {
Dominion.notification.error(operator, "玩家 %s 不存在或没有登录过", player_name);
Notification.error(operator, "玩家 %s 不存在或没有登录过", player_name);
return false;
}
PlayerPrivilegeDTO.delete(player.getUuid(), dominion.getId());
@ -66,7 +67,7 @@ public class PrivilegeController {
public static boolean setPrivilege(Player operator, String player_name, String flag, boolean value) {
DominionDTO dominion = Apis.getPlayerCurrentDominion(operator);
if (dominion == null) {
Dominion.notification.error(operator, "你不在任何领地内,请指定领地名称 /dominion set_privilege <玩家名称> <权限名称> <true/false> [领地名称]");
Notification.error(operator, "你不在任何领地内,请指定领地名称 /dominion set_privilege <玩家名称> <权限名称> <true/false> [领地名称]");
return false;
}
return setPrivilege(operator, player_name, flag, value, dominion.getName());
@ -85,13 +86,13 @@ public class PrivilegeController {
public static boolean setPrivilege(Player operator, String player_name, String flag, boolean value, String dominionName) {
DominionDTO dominion = DominionDTO.select(dominionName);
if (dominion == null) {
Dominion.notification.error(operator, "领地 %s 不存在,无法设置特权", dominionName);
Notification.error(operator, "领地 %s 不存在,无法设置特权", dominionName);
return false;
}
if (noAuthToChangeFlags(operator, dominion)) return false;
PlayerDTO player = PlayerController.getPlayerDTO(player_name);
if (player == null) {
Dominion.notification.error(operator, "玩家 %s 不存在或没有登录过", player_name);
Notification.error(operator, "玩家 %s 不存在或没有登录过", player_name);
return false;
}
PlayerPrivilegeDTO privilege = PlayerPrivilegeDTO.select(player.getUuid(), dominion.getId());
@ -101,26 +102,26 @@ public class PrivilegeController {
}
if (flag.equals("admin")) {
if (notOwner(operator, dominion)) {
Dominion.notification.error(operator, "你不是领地 %s 的拥有者,无法设置其他玩家为管理员", dominionName);
Notification.error(operator, "你不是领地 %s 的拥有者,无法设置其他玩家为管理员", dominionName);
return false;
}
privilege.setAdmin(value);
} else {
Flag f = Flag.getFlag(flag);
if (f == null) {
Dominion.notification.error(operator, "未知的领地权限 %s", flag);
Notification.error(operator, "未知的领地权限 %s", flag);
return false;
}
privilege.setFlagValue(f, value);
}
Dominion.notification.info(operator, "设置玩家在领地 %s 的权限 %s 为 %s", dominionName, flag, value);
Notification.info(operator, "设置玩家在领地 %s 的权限 %s 为 %s", dominionName, flag, value);
return true;
}
public static boolean createPrivilege(Player operator, String player_name) {
DominionDTO dominion = Apis.getPlayerCurrentDominion(operator);
if (dominion == null) {
Dominion.notification.error(operator, "你不在任何领地内,请指定领地名称 /dominion create_privilege <玩家名称> <领地名称>");
Notification.error(operator, "你不在任何领地内,请指定领地名称 /dominion create_privilege <玩家名称> <领地名称>");
return false;
}
return createPrivilege(operator, player_name, dominion.getName());
@ -129,28 +130,28 @@ public class PrivilegeController {
public static boolean createPrivilege(Player operator, String player_name, String dominionName) {
DominionDTO dominion = DominionDTO.select(dominionName);
if (dominion == null) {
Dominion.notification.error(operator, "领地 %s 不存在,无法创建特权", dominionName);
Notification.error(operator, "领地 %s 不存在,无法创建特权", dominionName);
return false;
}
if (noAuthToChangeFlags(operator, dominion)) return false;
PlayerDTO player = PlayerController.getPlayerDTO(player_name);
if (player == null) {
Dominion.notification.error(operator, "玩家 %s 不存在或没有登录过", player_name);
Notification.error(operator, "玩家 %s 不存在或没有登录过", player_name);
return false;
}
return createPlayerPrivilege(operator, player.getUuid(), dominion) != null;
}
private static PlayerPrivilegeDTO createPlayerPrivilege(Player operator, UUID player, DominionDTO dom) {
Dominion.logger.debug("operator: " + operator.getUniqueId() + " player: " + player);
XLogger.debug("operator: " + operator.getUniqueId() + " player: " + player);
if (operator.getUniqueId().equals(player)) {
Dominion.notification.error(operator, "你不能给自己设置特权");
Notification.error(operator, "你不能给自己设置特权");
return null;
}
PlayerPrivilegeDTO privilege = new PlayerPrivilegeDTO(player, dom);
privilege = PlayerPrivilegeDTO.insert(privilege);
if (privilege == null) {
Dominion.notification.error(operator, "创建玩家特权失败,可能是此玩家已存在特权");
Notification.error(operator, "创建玩家特权失败,可能是此玩家已存在特权");
return null;
}
return privilege;

View File

@ -2,6 +2,7 @@ package cn.lunadeer.dominion.dtos;
import cn.lunadeer.dominion.Cache;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.minecraftpluginutils.XLogger;
import org.bukkit.Location;
import org.bukkit.World;
@ -390,8 +391,8 @@ public class DominionDTO {
if (loc.length == 3 && w != null) {
return new Location(w, Integer.parseInt(loc[0]), Integer.parseInt(loc[1]), Integer.parseInt(loc[2]));
} else {
Dominion.logger.warn("领地传送点数据异常: %s", tp_location);
Dominion.logger.debug("world: %s, loc.length: %d", world, loc.length);
XLogger.warn("领地传送点数据异常: %s", tp_location);
XLogger.debug("world: %s, loc.length: %d", world, loc.length);
return null;
}
}

View File

@ -2,6 +2,7 @@ package cn.lunadeer.dominion.dtos;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.minecraftpluginutils.JsonFile;
import cn.lunadeer.minecraftpluginutils.XLogger;
import com.alibaba.fastjson.JSONObject;
import java.io.File;
@ -180,7 +181,7 @@ public enum Flag {
}
JSONObject jsonObject = JsonFile.loadFromFile(flagFile);
if (jsonObject == null) {
Dominion.logger.warn("读取权限配置失败,已重置");
XLogger.warn("读取权限配置失败,已重置");
saveToJson();
}
for (Flag flag : getAllFlags()) {
@ -193,12 +194,12 @@ public enum Flag {
flag.setEnable((Boolean) flagJson.get("enable"));
}
} catch (Exception e) {
Dominion.logger.warn("读取权限 %s 配置失败:%s已跳过", flag.getFlagName(), e.getMessage());
XLogger.warn("读取权限 %s 配置失败:%s已跳过", flag.getFlagName(), e.getMessage());
}
}
saveToJson(); // 复写一遍确保文件中包含所有权限
} catch (Exception e) {
Dominion.logger.err("读取权限配置失败:%s", e.getMessage());
XLogger.err("读取权限配置失败:%s", e.getMessage());
}
}
@ -213,11 +214,11 @@ public enum Flag {
flagJson.put("enable", f.enable);
json.put(f.getFlagName(), flagJson);
}
Dominion.logger.debug("保存权限配置:%s", json.toJSONString());
XLogger.debug("保存权限配置:%s", json.toJSONString());
File flagFile = new File(Dominion.instance.getDataFolder(), "flags.json");
JsonFile.saveToFile(json, flagFile);
} catch (Exception e) {
Dominion.logger.err("保存权限配置失败:%s", e.getMessage());
XLogger.err("保存权限配置失败:%s", e.getMessage());
}
}
}

View File

@ -5,6 +5,7 @@ import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.Flag;
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
import cn.lunadeer.minecraftpluginutils.Notification;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import org.bukkit.entity.Player;
@ -56,8 +57,8 @@ public class Apis {
return true;
}
}
TextComponent msg = Component.text(String.format("你没有 %s 权限", flag.getDisplayName())).hoverEvent(Component.text(flag.getDescription()));
Dominion.notification.error(player, msg);
TextComponent msg = Component.text(String.format("你没有 %s (%s) 权限", flag.getDisplayName(), flag.getDescription())).hoverEvent(Component.text(flag.getDescription()));
Notification.error(player, msg);
if (event != null) {
event.setCancelled(true);
}

View File

@ -1,14 +1,12 @@
package cn.lunadeer.dominion.events;
import cn.lunadeer.dominion.Cache;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.Flag;
import cn.lunadeer.dominion.dtos.PlayerDTO;
import cn.lunadeer.minecraftpluginutils.Teleport;
import cn.lunadeer.minecraftpluginutils.XLogger;
import io.papermc.paper.event.entity.EntityDyeEvent;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
@ -206,7 +204,7 @@ public class PlayerEvents implements Listener {
@EventHandler(priority = EventPriority.HIGHEST) // container
public void openContainer(InventoryOpenEvent event) {
if (event.getInventory() instanceof CraftingInventory) {
Dominion.logger.debug("CraftingInventory opened");
XLogger.debug("CraftingInventory opened");
return;
}
if (event.getInventory().getType() != InventoryType.CHEST &&
@ -529,7 +527,7 @@ public class PlayerEvents implements Listener {
} else {
to.setZ(dom.getZ2() + 1);
}
Teleport.doTeleportSafely(Dominion.instance, player, to);
Teleport.doTeleportSafely(player, to);
}
}

View File

@ -1,6 +1,7 @@
package cn.lunadeer.dominion.events;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.ParticleRender;
import org.bukkit.Location;
import org.bukkit.World;
@ -38,11 +39,11 @@ public class SelectPointEvents implements Listener {
if (action == Action.LEFT_CLICK_BLOCK) {
event.setCancelled(true);
Dominion.notification.info(player, "已选择第一个点: %d %d %d", block.getX(), block.getY(), block.getZ());
Notification.info(player, "已选择第一个点: %d %d %d", block.getX(), block.getY(), block.getZ());
points.put(0, block.getLocation());
} else if (action == Action.RIGHT_CLICK_BLOCK) {
event.setCancelled(true);
Dominion.notification.info(player, "已选择第二个点: %d %d %d", block.getX(), block.getY(), block.getZ());
Notification.info(player, "已选择第二个点: %d %d %d", block.getX(), block.getY(), block.getZ());
points.put(1, block.getLocation());
} else {
return;
@ -54,10 +55,10 @@ public class SelectPointEvents implements Listener {
return;
}
if (!points.get(0).getWorld().equals(points.get(1).getWorld())) {
Dominion.notification.error(player, "两个点不在同一个世界");
Notification.error(player, "两个点不在同一个世界");
return;
}
Dominion.notification.info(player, "已选择两个点,可以使用 /dominion create <领地名称> 创建领地");
Notification.info(player, "已选择两个点,可以使用 /dominion create <领地名称> 创建领地");
Location loc1 = points.get(0);
Location loc2 = points.get(1);
int minX = Math.min(loc1.getBlockX(), loc2.getBlockX());
@ -78,19 +79,19 @@ public class SelectPointEvents implements Listener {
count = (maxX - minX) * (maxY - minY) * (maxZ - minZ);
}
float price = count * Dominion.config.getEconomyPrice();
Dominion.notification.info(player, "预计领地创建价格为 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural());
Notification.info(player, "预计领地创建价格为 %.2f %s", price, Dominion.vault.getEconomy().currencyNamePlural());
}
ParticleRender.showBoxFace(Dominion.instance, player, loc1, loc2);
Dominion.notification.info(player, "尺寸: %d x %d x %d",
Notification.info(player, "尺寸: %d x %d x %d",
Math.abs(points.get(1).getBlockX() - points.get(0).getBlockX()),
Math.abs(points.get(1).getBlockY() - points.get(0).getBlockY()),
Math.abs(points.get(1).getBlockZ() - points.get(0).getBlockZ()));
Dominion.notification.info(player, "面积: %d",
Notification.info(player, "面积: %d",
Math.abs(points.get(1).getBlockX() - points.get(0).getBlockX()) *
Math.abs(points.get(1).getBlockZ() - points.get(0).getBlockZ()));
Dominion.notification.info(player, "高度: %d",
Notification.info(player, "高度: %d",
Math.abs(points.get(1).getBlockY() - points.get(0).getBlockY()));
Dominion.notification.info(player, "体积: %d",
Notification.info(player, "体积: %d",
Math.abs(points.get(1).getBlockX() - points.get(0).getBlockX()) *
Math.abs(points.get(1).getBlockY() - points.get(0).getBlockY()) *
Math.abs(points.get(1).getBlockZ() - points.get(0).getBlockZ()));

View File

@ -2,6 +2,7 @@ package cn.lunadeer.dominion.managers;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.dtos.Flag;
import cn.lunadeer.minecraftpluginutils.XLogger;
import org.bukkit.Material;
import org.bukkit.configuration.file.FileConfiguration;
@ -19,10 +20,10 @@ public class ConfigManager {
_plugin.reloadConfig();
_file = _plugin.getConfig();
_debug = _file.getBoolean("Debug", false);
Dominion.logger.setDebug(_debug);
XLogger.setDebug(_debug);
_db_type = _file.getString("Database.Type", "sqlite");
if (!_db_type.equals("pgsql") && !_db_type.equals("sqlite")) {
Dominion.logger.err("当前数据库只支持 pgsql 或 sqlite已重置为 sqlite");
XLogger.err("当前数据库只支持 pgsql 或 sqlite已重置为 sqlite");
setDbType("sqlite");
}
_db_host = _file.getString("Database.Host", "localhost");
@ -32,34 +33,34 @@ public class ConfigManager {
_db_pass = _file.getString("Database.Pass", "postgres");
_auto_create_radius = _file.getInt("AutoCreateRadius", 10);
if (_auto_create_radius == 0) {
Dominion.logger.err("AutoCreateRadius 不能等于 0已重置为 10");
XLogger.err("AutoCreateRadius 不能等于 0已重置为 10");
setAutoCreateRadius(10);
}
_limit_size_x = _file.getInt("Limit.SizeX", 128);
if (_limit_size_x <= 4 && _limit_size_x != -1) {
Dominion.logger.err("Limit.SizeX 尺寸不能小于 4已重置为 128");
XLogger.err("Limit.SizeX 尺寸不能小于 4已重置为 128");
setLimitSizeX(128);
}
_limit_size_y = _file.getInt("Limit.SizeY", 64);
if (_limit_size_y <= 4 && _limit_size_y != -1) {
Dominion.logger.err("Limit.SizeY 尺寸不能小于 4已重置为 64");
XLogger.err("Limit.SizeY 尺寸不能小于 4已重置为 64");
setLimitSizeY(64);
}
_limit_size_z = _file.getInt("Limit.SizeZ", 128);
if (_limit_size_z <= 4 && _limit_size_z != -1) {
Dominion.logger.err("Limit.SizeZ 尺寸不能小于 4已重置为 128");
XLogger.err("Limit.SizeZ 尺寸不能小于 4已重置为 128");
setLimitSizeZ(128);
}
_blue_map = _file.getBoolean("BlueMap", true);
_auto_clean_after_days = _file.getInt("AutoCleanAfterDays", 180);
if (_auto_clean_after_days == 0) {
Dominion.logger.err("AutoCleanAfterDays 不能等于 0已重置为 180");
XLogger.err("AutoCleanAfterDays 不能等于 0已重置为 180");
setAutoCleanAfterDays(180);
}
_limit_min_y = _file.getInt("Limit.MinY", -64);
_limit_max_y = _file.getInt("Limit.MaxY", 320);
if (_limit_min_y >= _limit_max_y) {
Dominion.logger.err("Limit.MinY 不能大于或等于 Limit.MaxY已重置为 -64 320");
XLogger.err("Limit.MinY 不能大于或等于 Limit.MaxY已重置为 -64 320");
setLimitMinY(-64);
setLimitMaxY(320);
}
@ -68,7 +69,7 @@ public class ConfigManager {
_limit_vert = _file.getBoolean("Limit.Vert", false);
if (_limit_vert && _limit_size_y <= _limit_max_y - _limit_min_y) {
setLimitSizeY(_limit_max_y - _limit_min_y + 1);
Dominion.logger.warn("启用 Limit.Vert 时 Limit.SizeY 不能小于 Limit.MaxY - Limit.MinY已自动调整为 " + (_limit_max_y - _limit_min_y + 1));
XLogger.warn("启用 Limit.Vert 时 Limit.SizeY 不能小于 Limit.MaxY - Limit.MinY已自动调整为 " + (_limit_max_y - _limit_min_y + 1));
}
_limit_op_bypass = _file.getBoolean("Limit.OpByPass", true);
_world_black_list = _file.getStringList("Limit.WorldBlackList");
@ -78,7 +79,7 @@ public class ConfigManager {
_tp_cool_down = _file.getInt("Teleport.CoolDown", 0);
_tool = _file.getString("Tool", "ARROW");
if (Material.getMaterial(_tool) == null) {
Dominion.logger.err("工具名称设置错误,已重置为 ARROW");
XLogger.err("工具名称设置错误,已重置为 ARROW");
setTool("ARROW");
}
_economy_enable = _file.getBoolean("Economy.Enable", false);
@ -125,7 +126,7 @@ public class ConfigManager {
_debug = debug;
_file.set("Debug", debug);
_plugin.saveConfig();
Dominion.logger.setDebug(debug);
XLogger.setDebug(debug);
}
public String getDbType() {

View File

@ -1,8 +1,8 @@
package cn.lunadeer.dominion.tuis;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.stui.ListView;
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
@ -63,7 +63,7 @@ public class Apis {
if (!dominion.getOwner().equals(player.getUniqueId())) {
PlayerPrivilegeDTO privileges = PlayerPrivilegeDTO.select(player.getUniqueId(), dominion.getId());
if (privileges == null || !privileges.getAdmin()) {
Dominion.notification.error(player, "你不是领地 %s 的拥有者或管理员,无权访问此页面", dominion.getName());
Notification.error(player, "你不是领地 %s 的拥有者或管理员,无权访问此页面", dominion.getName());
return true;
}
}

View File

@ -1,8 +1,8 @@
package cn.lunadeer.dominion.tuis;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.Flag;
import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.stui.ListView;
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
@ -18,12 +18,12 @@ public class DominionFlagInfo {
Player player = playerOnly(sender);
if (player == null) return;
if (args.length < 2) {
Dominion.notification.error(sender, "用法: /dominion flag_info <领地名称> [页码]");
Notification.error(sender, "用法: /dominion flag_info <领地名称> [页码]");
return;
}
DominionDTO dominion = DominionDTO.select(args[1]);
if (dominion == null) {
Dominion.notification.error(sender, "领地 %s 不存在", args[1]);
Notification.error(sender, "领地 %s 不存在", args[1]);
return;
}
int page = 1;

View File

@ -1,7 +1,7 @@
package cn.lunadeer.dominion.tuis;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.stui.ListView;
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
@ -18,7 +18,7 @@ public class DominionManage {
if (player == null) return;
DominionDTO dominion = getDominionNameArg_1(player, args);
if (dominion == null) {
Dominion.notification.error(sender, "你不在任何领地内,请指定领地名称 /dominion manage <领地名称>");
Notification.error(sender, "你不在任何领地内,请指定领地名称 /dominion manage <领地名称>");
return;
}
if (noAuthToManage(player, dominion)) return;

View File

@ -1,9 +1,9 @@
package cn.lunadeer.dominion.tuis;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.PlayerDTO;
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.stui.ListView;
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
@ -30,7 +30,7 @@ public class DominionPrivilegeList {
if (player == null) return;
DominionDTO dominion = getDominionNameArg_1(player, args);
if (dominion == null) {
Dominion.notification.error(sender, "你不在任何领地内,请指定领地名称 /dominion privilege_list <领地名称>");
Notification.error(sender, "你不在任何领地内,请指定领地名称 /dominion privilege_list <领地名称>");
return;
}
ListView view = ListView.create(10, "/dominion privilege_list " + dominion.getName());

View File

@ -4,6 +4,7 @@ import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.controllers.PlayerController;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.PlayerDTO;
import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.ParticleRender;
import cn.lunadeer.minecraftpluginutils.stui.View;
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
@ -20,7 +21,7 @@ public class DominionSizeInfo {
if (player == null) return;
DominionDTO dominion = getDominionNameArg_1(player, args);
if (dominion == null) {
Dominion.notification.error(sender, "你不在任何领地内,请指定领地名称 /dominion info <领地名称>");
Notification.error(sender, "你不在任何领地内,请指定领地名称 /dominion info <领地名称>");
return;
}
PlayerDTO owner = PlayerController.getPlayerDTO(dominion.getOwner());

View File

@ -1,10 +1,10 @@
package cn.lunadeer.dominion.tuis;
import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.Flag;
import cn.lunadeer.dominion.dtos.PlayerDTO;
import cn.lunadeer.dominion.dtos.PlayerPrivilegeDTO;
import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.stui.ListView;
import cn.lunadeer.minecraftpluginutils.stui.components.Button;
import cn.lunadeer.minecraftpluginutils.stui.components.Line;
@ -31,19 +31,19 @@ public class PrivilegeInfo {
}
String playerName = args[1];
if (dominion == null) {
Dominion.notification.error(sender, "你不在任何领地内,请指定领地名称 /dominion privilege_info <玩家名称> [领地名称]");
Notification.error(sender, "你不在任何领地内,请指定领地名称 /dominion privilege_info <玩家名称> [领地名称]");
return;
}
ListView view = ListView.create(10, "/dominion privilege_info " + playerName + " " + dominion.getName());
if (noAuthToManage(player, dominion)) return;
PlayerDTO playerDTO = PlayerDTO.select(playerName);
if (playerDTO == null) {
Dominion.notification.error(sender, "玩家 %s 不存在", playerName);
Notification.error(sender, "玩家 %s 不存在", playerName);
return;
}
PlayerPrivilegeDTO privilege = PlayerPrivilegeDTO.select(playerDTO.getUuid(), dominion.getId());
if (privilege == null) {
Dominion.notification.warn(sender, "玩家 %s 没有任何特权", playerName);
Notification.warn(sender, "玩家 %s 没有任何特权", playerName);
return;
}
view.title("玩家 " + playerName + " 在领地 " + dominion.getName() + " 的特权信息");