新增自动清理功能
Java CI-CD with Maven / build (push) Successful in 16m41s Details

This commit is contained in:
zhangyuheng 2024-02-18 14:33:47 +08:00
parent 1bd499baf2
commit d87f636c2e
7 changed files with 65 additions and 1 deletions

View File

@ -159,6 +159,10 @@ MaxX: 128
MaxY: 64
MaxZ: 128
AutoClean:
Enabled: false
AfterDays: 180
BlueMap: true
Debug: false

View File

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

View File

@ -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<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);
XLogger.info("已清理玩家 " + p.getLastKnownName() + " 的领地数据");
}
}
XLogger.info("自动清理完成");
}
}

View File

@ -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);
}

View File

@ -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" +

View File

@ -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;
}

View File

@ -10,6 +10,10 @@ MaxX: 128
MaxY: 64
MaxZ: 128
AutoClean:
Enabled: false
AfterDays: 180
BlueMap: true
Debug: false