Cleanup task

This commit is contained in:
drtshock
2014-01-20 12:21:45 -07:00
parent 4fca7066e6
commit 0362170e9b
5 changed files with 51 additions and 2 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.drtshock</groupId> <groupId>com.drtshock</groupId>
<artifactId>PlayerVaults</artifactId> <artifactId>PlayerVaults</artifactId>
<version>3.4.4</version> <version>3.4.5-SNAPSHOT</version>
<name>PlayerVaults</name> <name>PlayerVaults</name>
<url>http://dev.bukkit.org/server-mods/playervaults/</url> <url>http://dev.bukkit.org/server-mods/playervaults/</url>
@@ -19,6 +19,7 @@ package com.drtshock.playervaults;
import com.drtshock.playervaults.commands.Commands; import com.drtshock.playervaults.commands.Commands;
import com.drtshock.playervaults.commands.SignSetInfo; import com.drtshock.playervaults.commands.SignSetInfo;
import com.drtshock.playervaults.listeners.Listeners; import com.drtshock.playervaults.listeners.Listeners;
import com.drtshock.playervaults.tasks.Cleanup;
import com.drtshock.playervaults.util.Lang; import com.drtshock.playervaults.util.Lang;
import com.drtshock.playervaults.util.Metrics; import com.drtshock.playervaults.util.Metrics;
import com.drtshock.playervaults.util.Updater; import com.drtshock.playervaults.util.Updater;
@@ -92,6 +93,10 @@ public class PlayerVaults extends JavaPlugin {
new File(DIRECTORY + File.separator + "backups").mkdirs(); new File(DIRECTORY + File.separator + "backups").mkdirs();
VM = new VaultManager(this); VM = new VaultManager(this);
if(getConfig().getBoolean("cleanup.enable", false)) {
getServer().getScheduler().runTaskAsynchronously(this, new Cleanup(getConfig().getInt("cleanup.lastEdit", 30)));
}
} }
private void startMetrics() { private void startMetrics() {
@@ -0,0 +1,30 @@
package com.drtshock.playervaults.tasks;
import com.drtshock.playervaults.PlayerVaults;
import org.bukkit.scheduler.BukkitRunnable;
import java.io.File;
public class Cleanup extends BukkitRunnable {
private long diff;
public Cleanup(int diff) {
this.diff = diff * 86400;
}
@Override
public void run() {
File file = new File(PlayerVaults.DIRECTORY);
if(!file.exists()) return;
long time = System.currentTimeMillis();
for(File f : file.listFiles()) {
if(time - f.lastModified() > diff) {
f.delete();
PlayerVaults.PLUGIN.getLogger().info("Deleting vault file: " + f.getName());
}
}
}
}
@@ -204,6 +204,9 @@ public class VaultManager {
public void deleteVault(CommandSender sender, String holder, int number) throws IOException { public void deleteVault(CommandSender sender, String holder, int number) throws IOException {
String name = holder.toLowerCase(); String name = holder.toLowerCase();
File file = new File(directory + File.separator + name.toLowerCase() + ".yml"); File file = new File(directory + File.separator + name.toLowerCase() + ".yml");
if(!file.exists()) {
return;
}
FileConfiguration playerFile = YamlConfiguration.loadConfiguration(file); FileConfiguration playerFile = YamlConfiguration.loadConfiguration(file);
if (file.exists()) { if (file.exists()) {
playerFile.set("vault" + number, null); playerFile.set("vault" + number, null);
+12 -1
View File
@@ -16,4 +16,15 @@ economy:
# Cost to create a vault. You can give players playervaults.free to bypass this. # Cost to create a vault. You can give players playervaults.free to bypass this.
cost-to-create: 100 cost-to-create: 100
cost-to-open: 10 cost-to-open: 10
refund-on-delete: 50 refund-on-delete: 50
# Cleanup
# Should we cleanup vaults that haven't been used in awhile?
# Only checks on restarts. Runs on another thread so it won't
# lag the server.
cleanup:
enable: false
# If a file hasn't been edited for this long, we'll clean it up.
# Time is in days.
lastEdit: 30