diff --git a/pom.xml b/pom.xml
index f650b4a..5b3dbff 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.drtshock
PlayerVaults
- 3.4.4
+ 3.4.5-SNAPSHOT
PlayerVaults
http://dev.bukkit.org/server-mods/playervaults/
diff --git a/src/main/java/com/drtshock/playervaults/PlayerVaults.java b/src/main/java/com/drtshock/playervaults/PlayerVaults.java
index f7a4486..1791304 100644
--- a/src/main/java/com/drtshock/playervaults/PlayerVaults.java
+++ b/src/main/java/com/drtshock/playervaults/PlayerVaults.java
@@ -19,6 +19,7 @@ package com.drtshock.playervaults;
import com.drtshock.playervaults.commands.Commands;
import com.drtshock.playervaults.commands.SignSetInfo;
import com.drtshock.playervaults.listeners.Listeners;
+import com.drtshock.playervaults.tasks.Cleanup;
import com.drtshock.playervaults.util.Lang;
import com.drtshock.playervaults.util.Metrics;
import com.drtshock.playervaults.util.Updater;
@@ -92,6 +93,10 @@ public class PlayerVaults extends JavaPlugin {
new File(DIRECTORY + File.separator + "backups").mkdirs();
VM = new VaultManager(this);
+
+ if(getConfig().getBoolean("cleanup.enable", false)) {
+ getServer().getScheduler().runTaskAsynchronously(this, new Cleanup(getConfig().getInt("cleanup.lastEdit", 30)));
+ }
}
private void startMetrics() {
diff --git a/src/main/java/com/drtshock/playervaults/tasks/Cleanup.java b/src/main/java/com/drtshock/playervaults/tasks/Cleanup.java
new file mode 100644
index 0000000..a27a4c7
--- /dev/null
+++ b/src/main/java/com/drtshock/playervaults/tasks/Cleanup.java
@@ -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());
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultManager.java b/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultManager.java
index 929ff03..6989dbe 100644
--- a/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultManager.java
+++ b/src/main/java/com/drtshock/playervaults/vaultmanagement/VaultManager.java
@@ -204,6 +204,9 @@ public class VaultManager {
public void deleteVault(CommandSender sender, String holder, int number) throws IOException {
String name = holder.toLowerCase();
File file = new File(directory + File.separator + name.toLowerCase() + ".yml");
+ if(!file.exists()) {
+ return;
+ }
FileConfiguration playerFile = YamlConfiguration.loadConfiguration(file);
if (file.exists()) {
playerFile.set("vault" + number, null);
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 73ed193..dee7c07 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -16,4 +16,15 @@ economy:
# Cost to create a vault. You can give players playervaults.free to bypass this.
cost-to-create: 100
cost-to-open: 10
- refund-on-delete: 50
\ No newline at end of file
+ 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
\ No newline at end of file