diff --git a/README.md b/README.md
index 356435f..001b40b 100644
--- a/README.md
+++ b/README.md
@@ -159,6 +159,10 @@ MaxX: 128
MaxY: 64
MaxZ: 128
+AutoClean:
+ Enabled: false
+ AfterDays: 180
+
BlueMap: true
Debug: false
diff --git a/pom.xml b/pom.xml
index ebb5d41..933999e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
cn.lunadeer
Dominion
- 1.5.0-beta
+ 1.6.0-beta
jar
Dominion
diff --git a/src/main/java/cn/lunadeer/dominion/AutoClean.java b/src/main/java/cn/lunadeer/dominion/AutoClean.java
new file mode 100644
index 0000000..8fddbec
--- /dev/null
+++ b/src/main/java/cn/lunadeer/dominion/AutoClean.java
@@ -0,0 +1,25 @@
+package cn.lunadeer.dominion;
+
+import cn.lunadeer.dominion.controllers.PlayerController;
+import cn.lunadeer.dominion.dtos.PlayerDTO;
+import cn.lunadeer.dominion.utils.XLogger;
+
+import java.util.List;
+
+public class AutoClean {
+ public static void run() {
+ if (!Dominion.config.getAutoCleanEnable()) {
+ return;
+ }
+ XLogger.info("开始自动清理长时间未登录玩家领地数据");
+ int auto_clean_after_days = Dominion.config.getAutoCleanAfterDays();
+ List players = PlayerController.allPlayers();
+ for (PlayerDTO p : players) {
+ if (p.getLastJoinAt() + (long) auto_clean_after_days * 24 * 60 * 60 * 1000 < System.currentTimeMillis()) {
+ PlayerDTO.delete(p);
+ XLogger.info("已清理玩家 " + p.getLastKnownName() + " 的领地数据");
+ }
+ }
+ XLogger.info("自动清理完成");
+ }
+}
diff --git a/src/main/java/cn/lunadeer/dominion/Dominion.java b/src/main/java/cn/lunadeer/dominion/Dominion.java
index cf038c1..fd1a68f 100644
--- a/src/main/java/cn/lunadeer/dominion/Dominion.java
+++ b/src/main/java/cn/lunadeer/dominion/Dominion.java
@@ -44,6 +44,7 @@ public final class Dominion extends JavaPlugin {
XLogger.info(" |_____/ \\___/|_| |_| |_|_|_| |_|_|\\___/|_| |_|");
XLogger.info(" ");
+ Time.runLater(this, AutoClean::run, 20 * 30);
Time.runLater(this, BlueMapConnect::render, 20 * 60);
}
diff --git a/src/main/java/cn/lunadeer/dominion/dtos/PlayerDTO.java b/src/main/java/cn/lunadeer/dominion/dtos/PlayerDTO.java
index 2cba659..39d1205 100644
--- a/src/main/java/cn/lunadeer/dominion/dtos/PlayerDTO.java
+++ b/src/main/java/cn/lunadeer/dominion/dtos/PlayerDTO.java
@@ -68,6 +68,11 @@ public class PlayerDTO {
return query(sql);
}
+ public static void delete(PlayerDTO player) {
+ String sql = "DELETE FROM player_name WHERE uuid = '" + player.getUuid().toString() + "';";
+ query(sql);
+ }
+
private static PlayerDTO insert(PlayerDTO player) {
String sql = "INSERT INTO player_name (uuid, last_known_name, last_join_at) " +
"VALUES" +
diff --git a/src/main/java/cn/lunadeer/dominion/utils/ConfigManager.java b/src/main/java/cn/lunadeer/dominion/utils/ConfigManager.java
index e43b46b..8b8fbb4 100644
--- a/src/main/java/cn/lunadeer/dominion/utils/ConfigManager.java
+++ b/src/main/java/cn/lunadeer/dominion/utils/ConfigManager.java
@@ -25,6 +25,8 @@ public class ConfigManager {
_max_y = _file.getInt("MaxY", 64);
_max_z = _file.getInt("MaxZ", 128);
_blue_map = _file.getBoolean("BlueMap", true);
+ _auto_clean_enable = _file.getBoolean("AutoClean.Enable", false);
+ _auto_clean_after_days = _file.getInt("AutoClean.AfterDays", 180);
}
public Boolean isDebug() {
@@ -118,6 +120,26 @@ public class ConfigManager {
_plugin.saveConfig();
}
+ public Boolean getAutoCleanEnable() {
+ return _auto_clean_enable;
+ }
+
+ public void setAutoCleanEnable(Boolean auto_clean_enable) {
+ _auto_clean_enable = auto_clean_enable;
+ _file.set("AutoClean.Enable", auto_clean_enable);
+ _plugin.saveConfig();
+ }
+
+ public Integer getAutoCleanAfterDays() {
+ return _auto_clean_after_days;
+ }
+
+ public void setAutoCleanAfterDays(Integer auto_clean_after_days) {
+ _auto_clean_after_days = auto_clean_after_days;
+ _file.set("AutoClean.AfterDays", auto_clean_after_days);
+ _plugin.saveConfig();
+ }
+
private final Dominion _plugin;
private FileConfiguration _file;
@@ -136,4 +158,7 @@ public class ConfigManager {
private Integer _max_z;
private Boolean _blue_map;
+
+ private Boolean _auto_clean_enable;
+ private Integer _auto_clean_after_days;
}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 38fe2c2..df8c32a 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -10,6 +10,10 @@ MaxX: 128
MaxY: 64
MaxZ: 128
+AutoClean:
+ Enabled: false
+ AfterDays: 180
+
BlueMap: true
Debug: false
\ No newline at end of file