forked from LogBlock/LogBlock
Reworked config. Deleted, renamed and added a few.
This commit is contained in:
@@ -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.");
|
||||
|
@@ -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");
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user