Reworked config. Deleted, renamed and added a few.

This commit is contained in:
Robin Kupper
2011-04-13 23:15:26 +02:00
parent e035e3d03c
commit 2897bed011
4 changed files with 125 additions and 131 deletions

View File

@@ -35,7 +35,7 @@ public class ClearLog implements Runnable
rs.next();
int deleted = rs.getInt(1);
if (deleted > 0) {
if (LogBlock.config.dumpDroppedLog)
if (LogBlock.config.dumpDeletedLog)
state.execute("SELECT * FROM `" + table + "` WHERE date < '" + time + "' INTO OUTFILE '" + new File(dumbFolder, table + "-" + time + ".csv").getAbsolutePath().replace("\\", "\\\\") + "' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'");
state.execute("DELETE FROM `" + table + "` WHERE date < '" + time + "'");
LogBlock.log.info("[LogBlock] Cleared out table " + table + ". Deleted " + deleted + " entries.");
@@ -44,7 +44,7 @@ public class ClearLog implements Runnable
rs.next();
deleted = rs.getInt(1);
if (deleted > 0) {
if (LogBlock.config.dumpDroppedLog)
if (LogBlock.config.dumpDeletedLog)
state.execute("SELECT id, signtext FROM `" + table + "-sign` LEFT JOIN `" + table + "` USING (id) WHERE `" + table + "`.id IS NULL INTO OUTFILE '" + new File(dumbFolder, table + "-sign-" + time + ".csv").getAbsolutePath().replace("\\", "\\\\") + "' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'");
state.execute("DELETE `" + table + "-sign` FROM `" + table + "-sign` LEFT JOIN `" + table + "` USING (id) WHERE `" + table + "`.id IS NULL;");
LogBlock.log.info("[LogBlock] Cleared out table " + table + "-sign. Deleted " + deleted + " entries.");
@@ -53,7 +53,7 @@ public class ClearLog implements Runnable
rs.next();
deleted = rs.getInt(1);
if (deleted > 0) {
if (LogBlock.config.dumpDroppedLog)
if (LogBlock.config.dumpDeletedLog)
state.execute("SELECT id, intype, inamount, outtype, outamount FROM `" + table + "-chest` LEFT JOIN `" + table + "` USING (id) WHERE `" + table + "`.id IS NULL INTO OUTFILE '" + new File(dumbFolder, table + "-chest-" + time + ".csv").getAbsolutePath().replace("\\", "\\\\") + "' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'");
state.execute("DELETE `" + table + "-chest` FROM `" + table + "-chest` LEFT JOIN `" + table + "` USING (id) WHERE `" + table + "`.id IS NULL;");
LogBlock.log.info("[LogBlock] Cleared out table " + table + "-chest. Deleted " + deleted + " entries.");

View File

@@ -1,5 +1,6 @@
package de.diddiz.LogBlock;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@@ -9,20 +10,13 @@ import org.bukkit.util.config.Configuration;
public class Config {
final HashMap<Integer, String> tables;
final List<Integer> dontRollback;
final List<Integer> replaceAtRollback;
final String dbDriver;
final String dbUrl;
final String dbUsername;
final String dbPassword;
final int keepLogDays;
final boolean dumpDroppedLog;
final String url;
final String user;
final String password;
final int delay;
final int defaultDist;
final int defaultTime;
final int toolID;
final int toolblockID;
final boolean toolblockRemove;
final boolean useBukkitScheduler;
final int keepLogDays;
final boolean dumpDeletedLog;
final boolean logBlockCreations;
final boolean logBlockDestroyings;
final boolean logSignTexts;
@@ -30,112 +24,114 @@ public class Config {
final boolean logFire;
final boolean logLeavesDecay;
final boolean logChestAccess;
final String logTNTExplosionsAs;
final String logCreeperExplosionsAs;
final String logFireballExplosionsAs;
final String logFireAs;
final String logLeavesDecayAs;
boolean usePermissions;
final List<Integer> dontRollback;
final List<Integer> replaceAnyway;
final int defaultDist;
final int defaultTime;
final int toolID;
final int toolblockID;
Config (LogBlock logblock) throws Exception {
Configuration config = logblock.getConfiguration();
config.load();
List<String> keys = config.getKeys(null);
List<String> subkeys;
if (!keys.contains("version"))
config.setProperty("version", logblock.getDescription().getVersion());
if (!keys.contains("worldNames"))
config.setProperty("worldNames", Arrays.asList(new String[]{"world"}));
if (!keys.contains("worldTables"))
config.setProperty("worldTables", Arrays.asList(new String[]{"lb-main"}));
if (!keys.contains("dontRollback"))
config.setProperty("dontRollback", Arrays.asList(new Integer[]{46, 51}));
if (!keys.contains("replaceAtRollback"))
config.setProperty("replaceAtRollback", Arrays.asList(new Integer[]{8, 9, 10, 11, 51}));
if (!keys.contains("driver"))
config.setProperty("driver", "com.mysql.jdbc.Driver");
if (!keys.contains("url"))
config.setProperty("url", "jdbc:mysql://localhost:3306/db");
if (!keys.contains("username"))
config.setProperty("username", "user");
if (!keys.contains("password"))
config.setProperty("password", "pass");
if (!keys.contains("keepLogDays"))
config.setProperty("keepLogDays", -1);
if (!keys.contains("dumpDroppedLog"))
config.setProperty("dumpDroppedLog", true);
if (!keys.contains("delay"))
config.setProperty("delay", 6);
if (!keys.contains("defaultDist"))
config.setProperty("defaultDist", 20);
if (!keys.contains("defaultTime"))
config.setProperty("defaultTime", "30 minutes");
if (!keys.contains("toolID"))
config.setProperty("toolID", 270);
if (!keys.contains("toolblockID"))
config.setProperty("toolblockID", 7);
if (!keys.contains("toolblockRemove"))
config.setProperty("toolblockRemove", true);
if (!keys.contains("logBlockCreations"))
config.setProperty("logBlockCreations", true);
if (!keys.contains("logBlockDestroyings"))
config.setProperty("logBlockDestroyings", true);
if (!keys.contains("logSignTexts"))
config.setProperty("logSignTexts", false);
if (!keys.contains("logExplosions"))
config.setProperty("logExplosions", false);
if (!keys.contains("logFire"))
config.setProperty("logFire", false);
if (!keys.contains("logChestAccess"))
config.setProperty("logChestAccess", false);
if (!keys.contains("logLeavesDecay"))
config.setProperty("logLeavesDecay", false);
if (!keys.contains("logTNTExplosionsAs"))
config.setProperty("logTNTExplosionsAs", "TNT");
if (!keys.contains("logCreeperExplosionsAs"))
config.setProperty("logCreeperExplosionsAs", "Creeper");
if (!keys.contains("logFireballExplosionsAs"))
config.setProperty("logFireballExplosionsAs", "Ghast");
if (!keys.contains("logFireAs"))
config.setProperty("logFireAs", "Fire");
if (!keys.contains("logLeavesDecayAs"))
config.setProperty("logLeavesDecayAs", "LeavesDecay");
if (!keys.contains("usePermissions"))
config.setProperty("usePermissions", false);
if (!keys.contains("loggedWorlds"))
config.setProperty("loggedWorlds", Arrays.asList(new String[]{"world", "nether"}));
if (!keys.contains("tables"))
config.setProperty("tables", Arrays.asList(new String[]{"lb-main", "lb-hell"}));
subkeys = config.getKeys("mysql");
if (subkeys == null)
subkeys = new ArrayList<String>();
if (!subkeys.contains("host"))
config.setProperty("mysql.host", "localhost");
if (!subkeys.contains("port"))
config.setProperty("mysql.port", 3306);
if (!subkeys.contains("database"))
config.setProperty("mysql.database", "minecraft");
if (!subkeys.contains("user"))
config.setProperty("mysql.user", "username");
if (!subkeys.contains("password"))
config.setProperty("mysql.password", "pass");
subkeys = config.getKeys("consumer");
if (subkeys == null)
subkeys = new ArrayList<String>();
if (!subkeys.contains("delay"))
config.setProperty("consumer.delay", 6);
if (!subkeys.contains("useBukkitScheduler"))
config.setProperty("consumer.useBukkitScheduler", true);
subkeys = config.getKeys("clearlog");
if (subkeys == null)
subkeys = new ArrayList<String>();
if (!subkeys.contains("dumpDeletedLog"))
config.setProperty("clearlog.dumpDeletedLog", false);
if (!subkeys.contains("keepLogDays"))
config.setProperty("clearlog.keepLogDays", -1);
subkeys = config.getKeys("logging");
if (subkeys == null)
subkeys = new ArrayList<String>();
if (!subkeys.contains("logBlockCreations"))
config.setProperty("logging.logBlockCreations", true);
if (!subkeys.contains("logBlockDestroyings"))
config.setProperty("logging.logBlockDestroyings", true);
if (!subkeys.contains("logSignTexts"))
config.setProperty("logging.logSignTexts", false);
if (!subkeys.contains("logExplosions"))
config.setProperty("logging.logExplosions", false);
if (!subkeys.contains("llogFire"))
config.setProperty("logging.logFire", false);
if (!subkeys.contains("logChestAccess"))
config.setProperty("logging.logChestAccess", false);
if (!subkeys.contains("logLeavesDecay"))
config.setProperty("logging.logLeavesDecay", false);
subkeys = config.getKeys("rollback");
if (subkeys == null)
subkeys = new ArrayList<String>();
if (!subkeys.contains("dontRollback"))
config.setProperty("rollback.dontRollback", Arrays.asList(new Integer[]{10, 11, 46, 51}));
if (!subkeys.contains("replaceAnyway"))
config.setProperty("rollback.replaceAnyway", Arrays.asList(new Integer[]{8, 9, 10, 11, 51}));
subkeys = config.getKeys("lookup");
if (subkeys == null)
subkeys = new ArrayList<String>();
if (!subkeys.contains("defaultDist"))
config.setProperty("lookup.defaultDist", 20);
if (!subkeys.contains("defaultTime"))
config.setProperty("lookup.defaultTime", "30 minutes");
if (!subkeys.contains("toolID"))
config.setProperty("lookup.toolID", 270);
if (!subkeys.contains("toolblockID"))
config.setProperty("lookup.toolblockID", 7);
if (!config.save())
throw new Exception("Error while writing to config.yml");
dbDriver = config.getString("driver");
dbUrl = config.getString("url");
dbUsername = config.getString("username");
dbPassword = config.getString("password");
keepLogDays = config.getInt("keepLogDays", -1);
dumpDroppedLog = config.getBoolean("dumpDroppedLog", true);
delay = config.getInt("delay", 6);
defaultDist = config.getInt("defaultDist", 20);
defaultTime = LogBlock.parseTimeSpec(config.getString("defaultTime"));
toolID = config.getInt("toolID", 270);
url = "jdbc:mysql://" + config.getString("mysql.host") + ":" + config.getString("mysql.port") + "/" + config.getString("mysql.database");
user = config.getString("mysql.user");
password = config.getString("mysql.password");
delay = config.getInt("consumer.delay", 6);
useBukkitScheduler = config.getBoolean("consumer.useBukkitScheduler", true);
keepLogDays = config.getInt("clearlog.keepLogDays", -1);
dumpDeletedLog = config.getBoolean("clearlog.dumpDeletedLog", false);
logBlockCreations = config.getBoolean("logging.logBlockCreations", true);
logBlockDestroyings = config.getBoolean("logging.logBlockDestroyings", true);
logSignTexts = config.getBoolean("logging.logSignTexts", false);
logExplosions = config.getBoolean("logging.logExplosions", false);
logFire = config.getBoolean("logging.logFire", false);
logChestAccess = config.getBoolean("logging.logChestAccess", false);
logLeavesDecay = config.getBoolean("logging.logLeavesDecay", false);
dontRollback = config.getIntList("rollback.dontRollback", null);
replaceAnyway = config.getIntList("rollback.replaceAnyway", null);
defaultDist = config.getInt("lookup.defaultDist", 20);
defaultTime = LogBlock.parseTimeSpec(config.getString("lookup.defaultTime"));
toolID = config.getInt("lookup.toolID", 270);
if (Material.getMaterial(toolID) == null || Material.getMaterial(toolID).isBlock())
throw new Exception("toolID doesn't appear to be a valid item id");
toolblockID = config.getInt("toolblockID", 7);
throw new Exception("lookup.toolID doesn't appear to be a valid item id");
toolblockID = config.getInt("lookup.toolblockID", 7);
if (Material.getMaterial(toolblockID) == null || !Material.getMaterial(toolblockID).isBlock() || toolblockID == 0)
throw new Exception("toolblockID doesn't appear to be a valid block id");
toolblockRemove = config.getBoolean("toolblockRemove", true);
logBlockCreations = config.getBoolean("logBlockCreations", true);
logBlockDestroyings = config.getBoolean("logBlockDestroyings", true);
logSignTexts = config.getBoolean("logSignTexts", false);
logExplosions = config.getBoolean("logExplosions", false);
logFire = config.getBoolean("logFire", false);
logChestAccess = config.getBoolean("logChestAccess", false);
logLeavesDecay = config.getBoolean("logLeavesDecay", false);
logTNTExplosionsAs = config.getString("logTNTExplosionsAs");
logCreeperExplosionsAs = config.getString("logCreeperExplosionsAs");
logFireballExplosionsAs = config.getString("logFireballExplosionsAs");
logFireAs = config.getString("logFireAs");
logLeavesDecayAs = config.getString("logLeavesDecayAs");
usePermissions = config.getBoolean("usePermissions", false);
dontRollback = config.getIntList("dontRollback", null);
replaceAtRollback = config.getIntList("replaceAtRollback", null);
List<String> worldNames = config.getStringList("worldNames", null);
List<String> worldTables = config.getStringList("worldTables", null);
throw new Exception("lookup.toolblockID doesn't appear to be a valid block id");
List<String> worldNames = config.getStringList("loggedWorlds", null);
List<String> worldTables = config.getStringList("tables", null);
tables = new HashMap<Integer, String>();
if (worldNames == null || worldTables == null || worldNames.size() == 0 || worldNames.size() != worldTables.size())
throw new Exception("worldNames or worldTables not set porperly");

View File

@@ -41,6 +41,7 @@ import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import com.nijiko.permissions.PermissionHandler;
import com.nijikokun.bukkit.Permissions.Permissions;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldedit.bukkit.selections.CuboidSelection;
@@ -56,6 +57,7 @@ public class LogBlock extends JavaPlugin
public ConnectionPool pool;
private Consumer consumer = null;
private Timer timer = null;
private PermissionHandler permissions = null;
@Override
public void onEnable() {
@@ -66,15 +68,12 @@ public class LogBlock extends JavaPlugin
log.log(Level.SEVERE, "[LogBlock] Exception while reading config", ex);
getServer().getPluginManager().disablePlugin(this);
return;
}
if (config.usePermissions) {
if (getServer().getPluginManager().getPlugin("Permissions") != null)
log.info("[LogBlock] Permissions enabled");
else {
config.usePermissions = false;
log.warning("[LogBlock] Permissions plugin not found. Using default permissions.");
}
}
if (getServer().getPluginManager().getPlugin("Permissions") != null) {
permissions = ((Permissions)getServer().getPluginManager().getPlugin("Permissions")).getHandler();
log.info("[LogBlock] Permissions enabled");
} else
log.info("[LogBlock] Permissions plugin not found. Using default permissions.");
File file = new File("lib/mysql-connector-java-bin.jar");
try {
if (!file.exists() || file.length() == 0) {
@@ -89,7 +88,7 @@ public class LogBlock extends JavaPlugin
return;
}
try {
pool = new ConnectionPool(config.dbDriver, config.dbUrl, config.dbUsername, config.dbPassword);
pool = new ConnectionPool("com.mysql.jdbc.Driver", config.url, config.user, config.password);
Connection conn = pool.getConnection();
conn.close();
} catch (Exception ex) {
@@ -429,7 +428,7 @@ public class LogBlock extends JavaPlugin
if (!dbm.getTables(null, null, "lb-players", null).next())
return false;
}
state.execute("INSERT IGNORE INTO `lb-players` (playername) VALUES ('" + config.logTNTExplosionsAs + "'), ('" + config.logCreeperExplosionsAs + "'), ('" + config.logFireAs + "'), ('" + config.logLeavesDecayAs + "'), ('" + config.logFireballExplosionsAs + "'), ('Environment')");
state.execute("INSERT IGNORE INTO `lb-players` (playername) VALUES ('TNT'), ('Creeper'), ('Fire'), ('LeavesDecay'), ('Ghast'), ('Environment')");
for (String table : config.tables.values()) {
if (!dbm.getTables(null, null, table, null).next()) {
log.log(Level.INFO, "[LogBlock] Crating table " + table + ".");
@@ -467,8 +466,8 @@ public class LogBlock extends JavaPlugin
}
private boolean CheckPermission(Player player, String permission) {
if (config.usePermissions)
return Permissions.Security.permission(player, permission);
if (permissions != null)
return permissions.permission(player, permission);
else {
if (permission.equals("logblock.area"))
return player.isOp();
@@ -521,12 +520,12 @@ public class LogBlock extends JavaPlugin
public void onBlockBurn(BlockBurnEvent event) {
if (!event.isCancelled())
consumer.queueBlock(config.logFireAs, event.getBlock(), event.getBlock().getTypeId(), 0, event.getBlock().getData());
consumer.queueBlock("Fire", event.getBlock(), event.getBlock().getTypeId(), 0, event.getBlock().getData());
}
public void onLeavesDecay(LeavesDecayEvent event) {
if (!event.isCancelled())
consumer.queueBlock(config.logLeavesDecayAs, event.getBlock(), event.getBlock().getTypeId(), 0, event.getBlock().getData());
consumer.queueBlock("LeavesDecay", event.getBlock(), event.getBlock().getTypeId(), 0, event.getBlock().getData());
}
}
@@ -536,11 +535,11 @@ public class LogBlock extends JavaPlugin
if (!event.isCancelled()) {
String name;
if (event.getEntity() instanceof TNTPrimed)
name = config.logTNTExplosionsAs;
name = "TNT";
else if (event.getEntity() instanceof Creeper)
name = config.logCreeperExplosionsAs;
name = "Creeper";
else if (event.getEntity() instanceof Fireball)
name = config.logFireballExplosionsAs;
name = "Ghast";
else
name = "Environment";
for (Block block : event.blockList())
@@ -605,8 +604,7 @@ public class LogBlock extends JavaPlugin
event.setCancelled(true);
} else if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getMaterial().getId() == LogBlock.config.toolblockID && CheckPermission(event.getPlayer(), "logblock.lookup")) {
getServer().getScheduler().scheduleAsyncDelayedTask(LogBlock.this, new BlockStats(pool.getConnection(), event.getPlayer(), event.getClickedBlock().getFace(event.getBlockFace())));
if (config.toolblockRemove)
event.setCancelled(true);
event.setCancelled(true);
}
}
}

View File

@@ -166,7 +166,7 @@ public class Rollback implements Runnable
Block block = world.getBlockAt(x, y, z);
if (!world.isChunkLoaded(block.getChunk()))
world.loadChunk(block.getChunk());
if (equalsType(block.getTypeId(), type) || LogBlock.config.replaceAtRollback.contains(block.getTypeId()) || (type == 0 && replaced == 0)) {
if (equalsType(block.getTypeId(), type) || LogBlock.config.replaceAnyway.contains(block.getTypeId()) || (type == 0 && replaced == 0)) {
if (block.setTypeIdAndData(replaced, data, false))
return PerformResult.SUCCESS;
else