Added in disabled state 'remove old cache files' function and possibility to disable ChunkReloader

master
Aleksey-Terzi 2016-09-18 07:14:32 +03:00
parent c1f346237a
commit 9234949476
6 changed files with 64 additions and 2 deletions

View File

@ -4,7 +4,7 @@
<groupId>com.lishid</groupId>
<artifactId>orebfuscator</artifactId>
<version>4.1.8-SNAPSHOT</version>
<version>4.1.9-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Orebfuscator4</name>

View File

@ -51,7 +51,8 @@ public class Orebfuscator extends JavaPlugin {
return this.isProtocolLibFound;
}
@Override
//\\@SuppressWarnings("deprecation")
@Override
public void onEnable() {
// Get plugin manager
PluginManager pm = getServer().getPluginManager();
@ -76,6 +77,9 @@ public class Orebfuscator extends JavaPlugin {
pm.registerEvents(new OrebfuscatorChunkListener(), this);
(new ProtocolLibHook()).register(this);
// Run CacheCleaner
//\\getServer().getScheduler().scheduleAsyncRepeatingTask(this, new CacheCleaner(), 0, OrebfuscatorConfig.CacheCleanRate);
}
private static INmsManager createNmsManager() {

View File

@ -68,6 +68,7 @@ public class OrebfuscatorConfig {
public static int MaxLoadedCacheFiles = 64;
public static String CacheLocation = "orebfuscator_cache";
public static File CacheFolder = new File(Bukkit.getServer().getWorldContainer(), CacheLocation);
public static int DeleteCacheFilesAfterDays = 0;
// ProximityHider
public static int ProximityHiderRate = 500;
@ -107,6 +108,11 @@ public class OrebfuscatorConfig {
// ChunkReloader
public static int ChunkReloaderRate = 500;
public static boolean UseChunkReloader = true;
// CacheCleaner
//\\public static long CacheCleanRate = 60 * 60 * 20;//once per hour
public static long CacheCleanRate = 60 * 20;
public static File getCacheFolder() {
// Try to make the folder
@ -451,6 +457,8 @@ public class OrebfuscatorConfig {
Enabled = getBoolean("Booleans.Enabled", Enabled);
NoObfuscationForMetadata = getBoolean("Booleans.NoObfuscationForMetadata", NoObfuscationForMetadata);
NoObfuscationForMetadataTagName = getString("Strings.NoObfuscationForMetadataTagName", NoObfuscationForMetadataTagName);
DeleteCacheFilesAfterDays = getInt("Integers.DeleteCacheFilesAfterDays", DeleteCacheFilesAfterDays);
UseChunkReloader = getBoolean("Booleans.UseChunkReloader", UseChunkReloader);
generateTransparentBlocks();

View File

@ -0,0 +1,24 @@
package com.lishid.orebfuscator.cache;
import java.io.File;
import org.bukkit.Bukkit;
import org.bukkit.World;
import com.lishid.orebfuscator.Orebfuscator;
import com.lishid.orebfuscator.OrebfuscatorConfig;
public class CacheCleaner implements Runnable {
public void run() {
if(!OrebfuscatorConfig.Enabled || OrebfuscatorConfig.DeleteCacheFilesAfterDays <= 0) return;
Orebfuscator.log("Started checking old cache files to delete...");
for(World world : Bukkit.getWorlds()) {
File cacheFolder = new File(OrebfuscatorConfig.getCacheFolder(), world.getName());
ObfuscatedDataCache.deleteFiles(cacheFolder, OrebfuscatorConfig.DeleteCacheFilesAfterDays);
}
Orebfuscator.log("Compleetd checking old cache files to delete...");
}
}

View File

@ -20,6 +20,7 @@ import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.Objects;
import com.lishid.orebfuscator.Orebfuscator;
@ -78,4 +79,25 @@ public class ObfuscatedDataCache {
public static DataOutputStream getOutputStream(File folder, int x, int z) {
return getInternalCache().getOutputStream(folder, x, z);
}
public static void deleteFiles(File folder, int deleteAfterDays) {
try {
File regionFolder = new File(folder, "data/region");
if(!regionFolder.exists()) return;
long deleteAfterDaysMs = (long)deleteAfterDays * 24L * 60L * 60L * 1000L;
for(File file : regionFolder.listFiles()) {
long diff = new Date().getTime() - file.lastModified();
if (diff > deleteAfterDaysMs) {
file.delete();
Orebfuscator.log("File " + file.getName() + " is deleted.");
}
}
} catch(Exception ex) {
ex.printStackTrace();
}
}
}

View File

@ -61,6 +61,10 @@ public class ChunkReloader extends Thread implements Runnable {
Thread.sleep(timeWait);
}
if (!OrebfuscatorConfig.UseChunkReloader) {
return;
}
synchronized (loadedChunks) {
localWorldsToCheck.addAll(loadedChunks.keySet());
}