mirror of
https://github.com/ColdeZhang/Dominion.git
synced 2024-10-19 02:46:49 +08:00
新增自动清理功能
This commit is contained in:
parent
1bd499baf2
commit
d87f636c2e
@ -159,6 +159,10 @@ MaxX: 128
|
|||||||
MaxY: 64
|
MaxY: 64
|
||||||
MaxZ: 128
|
MaxZ: 128
|
||||||
|
|
||||||
|
AutoClean:
|
||||||
|
Enabled: false
|
||||||
|
AfterDays: 180
|
||||||
|
|
||||||
BlueMap: true
|
BlueMap: true
|
||||||
|
|
||||||
Debug: false
|
Debug: false
|
||||||
|
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>cn.lunadeer</groupId>
|
<groupId>cn.lunadeer</groupId>
|
||||||
<artifactId>Dominion</artifactId>
|
<artifactId>Dominion</artifactId>
|
||||||
<version>1.5.0-beta</version>
|
<version>1.6.0-beta</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>Dominion</name>
|
<name>Dominion</name>
|
||||||
|
25
src/main/java/cn/lunadeer/dominion/AutoClean.java
Normal file
25
src/main/java/cn/lunadeer/dominion/AutoClean.java
Normal 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("自动清理完成");
|
||||||
|
}
|
||||||
|
}
|
@ -44,6 +44,7 @@ public final class Dominion extends JavaPlugin {
|
|||||||
XLogger.info(" |_____/ \\___/|_| |_| |_|_|_| |_|_|\\___/|_| |_|");
|
XLogger.info(" |_____/ \\___/|_| |_| |_|_|_| |_|_|\\___/|_| |_|");
|
||||||
XLogger.info(" ");
|
XLogger.info(" ");
|
||||||
|
|
||||||
|
Time.runLater(this, AutoClean::run, 20 * 30);
|
||||||
Time.runLater(this, BlueMapConnect::render, 20 * 60);
|
Time.runLater(this, BlueMapConnect::render, 20 * 60);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,6 +68,11 @@ public class PlayerDTO {
|
|||||||
return query(sql);
|
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) {
|
private static PlayerDTO insert(PlayerDTO player) {
|
||||||
String sql = "INSERT INTO player_name (uuid, last_known_name, last_join_at) " +
|
String sql = "INSERT INTO player_name (uuid, last_known_name, last_join_at) " +
|
||||||
"VALUES" +
|
"VALUES" +
|
||||||
|
@ -25,6 +25,8 @@ public class ConfigManager {
|
|||||||
_max_y = _file.getInt("MaxY", 64);
|
_max_y = _file.getInt("MaxY", 64);
|
||||||
_max_z = _file.getInt("MaxZ", 128);
|
_max_z = _file.getInt("MaxZ", 128);
|
||||||
_blue_map = _file.getBoolean("BlueMap", true);
|
_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() {
|
public Boolean isDebug() {
|
||||||
@ -118,6 +120,26 @@ public class ConfigManager {
|
|||||||
_plugin.saveConfig();
|
_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 final Dominion _plugin;
|
||||||
private FileConfiguration _file;
|
private FileConfiguration _file;
|
||||||
@ -136,4 +158,7 @@ public class ConfigManager {
|
|||||||
private Integer _max_z;
|
private Integer _max_z;
|
||||||
|
|
||||||
private Boolean _blue_map;
|
private Boolean _blue_map;
|
||||||
|
|
||||||
|
private Boolean _auto_clean_enable;
|
||||||
|
private Integer _auto_clean_after_days;
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,10 @@ MaxX: 128
|
|||||||
MaxY: 64
|
MaxY: 64
|
||||||
MaxZ: 128
|
MaxZ: 128
|
||||||
|
|
||||||
|
AutoClean:
|
||||||
|
Enabled: false
|
||||||
|
AfterDays: 180
|
||||||
|
|
||||||
BlueMap: true
|
BlueMap: true
|
||||||
|
|
||||||
Debug: false
|
Debug: false
|
Loading…
Reference in New Issue
Block a user