forked from LogBlock/LogBlock
Added custom auto clearlog. Removed keepLogDays.
This commit is contained in:
28
src/de/diddiz/LogBlock/AutoClearLog.java
Normal file
28
src/de/diddiz/LogBlock/AutoClearLog.java
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
package de.diddiz.LogBlock;
|
||||||
|
|
||||||
|
import static org.bukkit.Bukkit.getConsoleSender;
|
||||||
|
import static org.bukkit.Bukkit.getLogger;
|
||||||
|
import static org.bukkit.Bukkit.getServer;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
public class AutoClearLog implements Runnable
|
||||||
|
{
|
||||||
|
private final LogBlock logblock;
|
||||||
|
|
||||||
|
AutoClearLog(LogBlock logblock) {
|
||||||
|
this.logblock = logblock;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
final CommandsHandler handler = logblock.getCommandsHandler();
|
||||||
|
for (final String paramStr : logblock.getLBConfig().autoClearLog)
|
||||||
|
try {
|
||||||
|
final QueryParams params = new QueryParams(logblock, getConsoleSender(), Arrays.asList(paramStr.split(" ")));
|
||||||
|
handler.new CommandClearLog(getServer().getConsoleSender(), params, false);
|
||||||
|
} catch (final Exception ex) {
|
||||||
|
getLogger().log(Level.SEVERE, "Failed to schedule auto ClearLog: ", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -326,7 +326,7 @@ public class CommandsHandler implements CommandExecutor
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean checkRestrictions(CommandSender sender, QueryParams params) {
|
private boolean checkRestrictions(CommandSender sender, QueryParams params) {
|
||||||
if (logblock.hasPermission(sender, "logblock.ignoreRestrictions"))
|
if (sender.isOp() || logblock.hasPermission(sender, "logblock.ignoreRestrictions"))
|
||||||
return true;
|
return true;
|
||||||
if (config.rollbackMaxTime > 0 && (params.before > 0 || params.since > config.rollbackMaxTime)) {
|
if (config.rollbackMaxTime > 0 && (params.before > 0 || params.since > config.rollbackMaxTime)) {
|
||||||
sender.sendMessage(ChatColor.RED + "You are not allowed to rollback more than " + config.rollbackMaxTime + " minutes");
|
sender.sendMessage(ChatColor.RED + "You are not allowed to rollback more than " + config.rollbackMaxTime + " minutes");
|
||||||
|
@@ -2,6 +2,7 @@ package de.diddiz.LogBlock;
|
|||||||
|
|
||||||
import static de.diddiz.util.BukkitUtils.friendlyWorldname;
|
import static de.diddiz.util.BukkitUtils.friendlyWorldname;
|
||||||
import static de.diddiz.util.Utils.parseTimeSpec;
|
import static de.diddiz.util.Utils.parseTimeSpec;
|
||||||
|
import static org.bukkit.Bukkit.getConsoleSender;
|
||||||
import static org.bukkit.Bukkit.getLogger;
|
import static org.bukkit.Bukkit.getLogger;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -15,7 +16,6 @@ import java.util.Map.Entry;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.zip.DataFormatException;
|
import java.util.zip.DataFormatException;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
@@ -27,7 +27,8 @@ public class Config
|
|||||||
public final String url, user, password;
|
public final String url, user, password;
|
||||||
public final int delayBetweenRuns, forceToProcessAtLeast, timePerRun;
|
public final int delayBetweenRuns, forceToProcessAtLeast, timePerRun;
|
||||||
public final boolean useBukkitScheduler;
|
public final boolean useBukkitScheduler;
|
||||||
public final int keepLogDays;
|
public final boolean enableAutoClearLog;
|
||||||
|
public final List<String> autoClearLog;
|
||||||
public final boolean dumpDeletedLog;
|
public final boolean dumpDeletedLog;
|
||||||
public boolean logBlockPlacings, logBlockBreaks, logSignTexts, logExplosions, logFire, logLeavesDecay, logLavaFlow, logWaterFlow, logChestAccess, logButtonsAndLevers, logKills, logChat, logSnowForm, logSnowFade, logDoors, logCakes, logEndermen;
|
public boolean logBlockPlacings, logBlockBreaks, logSignTexts, logExplosions, logFire, logLeavesDecay, logLavaFlow, logWaterFlow, logChestAccess, logButtonsAndLevers, logKills, logChat, logSnowForm, logSnowFade, logDoors, logCakes, logEndermen;
|
||||||
public final boolean logCreeperExplosionsAsPlayerWhoTriggeredThese, logPlayerInfo;
|
public final boolean logCreeperExplosionsAsPlayerWhoTriggeredThese, logPlayerInfo;
|
||||||
@@ -62,7 +63,8 @@ public class Config
|
|||||||
def.put("consumer.timePerRun", 200);
|
def.put("consumer.timePerRun", 200);
|
||||||
def.put("consumer.useBukkitScheduler", true);
|
def.put("consumer.useBukkitScheduler", true);
|
||||||
def.put("clearlog.dumpDeletedLog", false);
|
def.put("clearlog.dumpDeletedLog", false);
|
||||||
def.put("clearlog.keepLogDays", -1);
|
def.put("clearlog.enableAutoClearLog", false);
|
||||||
|
def.put("clearlog.auto", Arrays.asList("world \"world\" before 365 days all", "world \"world\" player lavaflow waterflow leavesdecay before 7 days all", "world world_nether before 365 days all", "world world_nether player lavaflow before 7 days all"));
|
||||||
def.put("logging.logCreeperExplosionsAsPlayerWhoTriggeredThese", false);
|
def.put("logging.logCreeperExplosionsAsPlayerWhoTriggeredThese", false);
|
||||||
def.put("logging.logKillsLevel", "PLAYERS");
|
def.put("logging.logKillsLevel", "PLAYERS");
|
||||||
def.put("logging.logPlayerInfo", true);
|
def.put("logging.logPlayerInfo", true);
|
||||||
@@ -111,9 +113,8 @@ public class Config
|
|||||||
forceToProcessAtLeast = config.getInt("consumer.forceToProcessAtLeast", 0);
|
forceToProcessAtLeast = config.getInt("consumer.forceToProcessAtLeast", 0);
|
||||||
timePerRun = config.getInt("consumer.timePerRun", 100);
|
timePerRun = config.getInt("consumer.timePerRun", 100);
|
||||||
useBukkitScheduler = config.getBoolean("consumer.useBukkitScheduler", true);
|
useBukkitScheduler = config.getBoolean("consumer.useBukkitScheduler", true);
|
||||||
keepLogDays = config.getInt("clearlog.keepLogDays", -1);
|
enableAutoClearLog = config.getBoolean("clearlog.enableAutoClearLog");
|
||||||
if (keepLogDays * 86400000L > System.currentTimeMillis())
|
autoClearLog = toStringList(config.getList("clearlog.auto"));
|
||||||
throw new DataFormatException("Too large timespan for keepLogDays. Must be shorter than " + (int)(System.currentTimeMillis() / 86400000L) + " days.");
|
|
||||||
dumpDeletedLog = config.getBoolean("clearlog.dumpDeletedLog", false);
|
dumpDeletedLog = config.getBoolean("clearlog.dumpDeletedLog", false);
|
||||||
logCreeperExplosionsAsPlayerWhoTriggeredThese = config.getBoolean("logging.logCreeperExplosionsAsPlayerWhoTriggeredThese", false);
|
logCreeperExplosionsAsPlayerWhoTriggeredThese = config.getBoolean("logging.logCreeperExplosionsAsPlayerWhoTriggeredThese", false);
|
||||||
logPlayerInfo = config.getBoolean("logging.logPlayerInfo", true);
|
logPlayerInfo = config.getBoolean("logging.logPlayerInfo", true);
|
||||||
@@ -161,7 +162,7 @@ public class Config
|
|||||||
final int item = tSec.getInt("item", 0);
|
final int item = tSec.getInt("item", 0);
|
||||||
final QueryParams params = new QueryParams(logblock);
|
final QueryParams params = new QueryParams(logblock);
|
||||||
params.prepareToolQuery = true;
|
params.prepareToolQuery = true;
|
||||||
params.parseArgs(Bukkit.getConsoleSender(), Arrays.asList(tSec.getString("params").split(" ")));
|
params.parseArgs(getConsoleSender(), Arrays.asList(tSec.getString("params").split(" ")));
|
||||||
final ToolMode mode = ToolMode.valueOf(tSec.getString("mode").toUpperCase());
|
final ToolMode mode = ToolMode.valueOf(tSec.getString("mode").toUpperCase());
|
||||||
final PermissionDefault pdef = PermissionDefault.valueOf(tSec.getString("permissionDefault").toUpperCase());
|
final PermissionDefault pdef = PermissionDefault.valueOf(tSec.getString("permissionDefault").toUpperCase());
|
||||||
tools.add(new Tool(toolName, aliases, leftClickBehavior, rightClickBehavior, defaultEnabled, item, params, mode, pdef));
|
tools.add(new Tool(toolName, aliases, leftClickBehavior, rightClickBehavior, defaultEnabled, item, params, mode, pdef));
|
||||||
|
@@ -14,7 +14,6 @@ import java.util.List;
|
|||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -25,7 +24,6 @@ import org.bukkit.plugin.PluginManager;
|
|||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import com.nijiko.permissions.PermissionHandler;
|
import com.nijiko.permissions.PermissionHandler;
|
||||||
import com.nijikokun.bukkit.Permissions.Permissions;
|
import com.nijikokun.bukkit.Permissions.Permissions;
|
||||||
import de.diddiz.LogBlock.QueryParams.BlockChangeType;
|
|
||||||
import de.diddiz.util.MySQLConnectionPool;
|
import de.diddiz.util.MySQLConnectionPool;
|
||||||
|
|
||||||
public class LogBlock extends JavaPlugin
|
public class LogBlock extends JavaPlugin
|
||||||
@@ -131,20 +129,8 @@ public class LogBlock extends JavaPlugin
|
|||||||
getLogger().info("[LogBlock] Permissions plugin found.");
|
getLogger().info("[LogBlock] Permissions plugin found.");
|
||||||
} else
|
} else
|
||||||
getLogger().info("[LogBlock] Permissions plugin not found. Using Bukkit Permissions.");
|
getLogger().info("[LogBlock] Permissions plugin not found. Using Bukkit Permissions.");
|
||||||
if (config.keepLogDays >= 0) {
|
if (config.enableAutoClearLog)
|
||||||
final QueryParams params = new QueryParams(this);
|
getServer().getScheduler().scheduleAsyncDelayedTask(this, new AutoClearLog(this));
|
||||||
params.before = config.keepLogDays * 1440;
|
|
||||||
params.bct = BlockChangeType.ALL;
|
|
||||||
for (final World world : getServer().getWorlds())
|
|
||||||
if (config.worlds.containsKey(world.getName().hashCode())) {
|
|
||||||
params.world = world;
|
|
||||||
try {
|
|
||||||
commandsHandler.new CommandClearLog(getServer().getConsoleSender(), params.clone(), true);
|
|
||||||
} catch (final Exception ex) {
|
|
||||||
getLogger().log(Level.SEVERE, "Failed to schedule ClearLog: ", ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
getServer().getScheduler().scheduleAsyncDelayedTask(this, new DumpedLogImporter(this));
|
getServer().getScheduler().scheduleAsyncDelayedTask(this, new DumpedLogImporter(this));
|
||||||
final LBBlockListener lbBlockListener = new LBBlockListener(this);
|
final LBBlockListener lbBlockListener = new LBBlockListener(this);
|
||||||
final LBPlayerListener lbPlayerListener = new LBPlayerListener(this);
|
final LBPlayerListener lbPlayerListener = new LBPlayerListener(this);
|
||||||
|
Reference in New Issue
Block a user