forked from LogBlock/LogBlock
LogBlock v8: switch to onBlockBreak, clean up some stuff, use nicer date format, don't log -1 type blocks, go back to old 'created' and 'destroyed' block history messsages
This commit is contained in:
@@ -1,21 +1,23 @@
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.*;
|
||||||
import java.util.logging.Level;
|
|
||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
import java.util.TimerTask;
|
import java.util.TimerTask;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
|
||||||
import java.sql.*;
|
import java.sql.*;
|
||||||
|
import java.io.*;
|
||||||
|
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
|
||||||
public class LogBlock extends Plugin
|
public class LogBlock extends Plugin
|
||||||
{
|
{
|
||||||
private String name = "LogBlock";
|
private static String name = "LogBlock";
|
||||||
private int version = 7;
|
private static int version = 8;
|
||||||
|
private boolean debug = false;
|
||||||
private String dbDriver = "com.mysql.jdbc.Driver";
|
private String dbDriver = "com.mysql.jdbc.Driver";
|
||||||
private String dbUrl = "";
|
private String dbUrl = "";
|
||||||
private String dbUsername = "";
|
private String dbUsername = "";
|
||||||
@@ -29,10 +31,13 @@ public class LogBlock extends Plugin
|
|||||||
|
|
||||||
static final Logger log = Logger.getLogger("Minecraft");
|
static final Logger log = Logger.getLogger("Minecraft");
|
||||||
|
|
||||||
|
static final Logger lblog = Logger.getLogger(name);
|
||||||
|
|
||||||
public void enable()
|
public void enable()
|
||||||
{
|
{
|
||||||
PropertiesFile properties = new PropertiesFile("logblock.properties");
|
PropertiesFile properties = new PropertiesFile("logblock.properties");
|
||||||
try {
|
try {
|
||||||
|
debug = properties.getBoolean("debug", false);
|
||||||
dbDriver = properties.getString("driver", "com.mysql.jdbc.Driver");
|
dbDriver = properties.getString("driver", "com.mysql.jdbc.Driver");
|
||||||
dbUrl = properties.getString("url", "jdbc:mysql://localhost:3306/db");
|
dbUrl = properties.getString("url", "jdbc:mysql://localhost:3306/db");
|
||||||
dbUsername = properties.getString("username", "user");
|
dbUsername = properties.getString("username", "user");
|
||||||
@@ -64,12 +69,20 @@ public class LogBlock extends Plugin
|
|||||||
|
|
||||||
public void initialize()
|
public void initialize()
|
||||||
{
|
{
|
||||||
|
try {
|
||||||
|
FileHandler lbfh = new FileHandler(name + ".log", true);
|
||||||
|
lbfh.setFormatter(new LogFormatter());
|
||||||
|
lblog.addHandler(lbfh);
|
||||||
|
} catch (IOException ex) {
|
||||||
|
log.info(name + " unable to create logger");
|
||||||
|
}
|
||||||
|
|
||||||
new VersionCheck(name, version);
|
new VersionCheck(name, version);
|
||||||
|
|
||||||
LBListener listener = new LBListener();
|
LBListener listener = new LBListener();
|
||||||
etc.getLoader().addListener(PluginLoader.Hook.COMMAND, listener, this, PluginListener.Priority.LOW);
|
etc.getLoader().addListener(PluginLoader.Hook.COMMAND, listener, this, PluginListener.Priority.LOW);
|
||||||
etc.getLoader().addListener(PluginLoader.Hook.BLOCK_CREATED, listener, this, PluginListener.Priority.LOW);
|
etc.getLoader().addListener(PluginLoader.Hook.BLOCK_CREATED, listener, this, PluginListener.Priority.LOW);
|
||||||
etc.getLoader().addListener(PluginLoader.Hook.BLOCK_DESTROYED, listener, this, PluginListener.Priority.LOW);
|
etc.getLoader().addListener(PluginLoader.Hook.BLOCK_BROKEN, listener, this, PluginListener.Priority.LOW);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Connection getConnection() throws SQLException
|
private Connection getConnection() throws SQLException
|
||||||
@@ -77,14 +90,6 @@ public class LogBlock extends Plugin
|
|||||||
return DriverManager.getConnection("jdbc:jdc:jdcpool");
|
return DriverManager.getConnection("jdbc:jdc:jdcpool");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void queueBlock(Player player, Block before, Block after)
|
|
||||||
{
|
|
||||||
BlockRow row = new BlockRow(player.getName(), before.getType(), after.getType(), after.getX(), after.getY(), after.getZ());
|
|
||||||
boolean result = bqueue.offer(row);
|
|
||||||
if (!result)
|
|
||||||
log.info(name + " failed to queue block for " + player.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showBlockHistory(Player player, Block b)
|
private void showBlockHistory(Player player, Block b)
|
||||||
{
|
{
|
||||||
player.sendMessage(Colors.Blue + "Block history (" + b.getX() + ", " + b.getY() + ", " + b.getZ() + "): ");
|
player.sendMessage(Colors.Blue + "Block history (" + b.getX() + ", " + b.getY() + ", " + b.getZ() + "): ");
|
||||||
@@ -92,6 +97,9 @@ public class LogBlock extends Plugin
|
|||||||
Connection conn = null;
|
Connection conn = null;
|
||||||
PreparedStatement ps = null;
|
PreparedStatement ps = null;
|
||||||
ResultSet rs = null;
|
ResultSet rs = null;
|
||||||
|
Timestamp date;
|
||||||
|
SimpleDateFormat formatter = new SimpleDateFormat("MM-dd hh:mm:ss");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
conn = getConnection();
|
conn = getConnection();
|
||||||
conn.setAutoCommit(false);
|
conn.setAutoCommit(false);
|
||||||
@@ -102,7 +110,15 @@ public class LogBlock extends Plugin
|
|||||||
rs = ps.executeQuery();
|
rs = ps.executeQuery();
|
||||||
while (rs.next())
|
while (rs.next())
|
||||||
{
|
{
|
||||||
String msg = rs.getString("date") + " " + rs.getString("player") + " " + etc.getDataSource().getItem(rs.getInt("replaced")) + "-" + etc.getDataSource().getItem(rs.getInt("type"));
|
date = rs.getTimestamp("date");
|
||||||
|
String datestr = formatter.format(date);
|
||||||
|
String msg = datestr + " " + rs.getString("player") + " ";
|
||||||
|
if (rs.getInt("type") == 0)
|
||||||
|
msg = msg + "destroyed " + etc.getDataSource().getItem(rs.getInt("replaced"));
|
||||||
|
else if (rs.getInt("replaced") == 0)
|
||||||
|
msg = msg + "created " + etc.getDataSource().getItem(rs.getInt("type"));
|
||||||
|
else
|
||||||
|
msg = msg + "replaced " + etc.getDataSource().getItem(rs.getInt("replaced")) + " with " + etc.getDataSource().getItem(rs.getInt("type"));
|
||||||
player.sendMessage(Colors.Gold + msg);
|
player.sendMessage(Colors.Gold + msg);
|
||||||
hist = true;
|
hist = true;
|
||||||
}
|
}
|
||||||
@@ -357,7 +373,25 @@ public class LogBlock extends Plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void queueBlock(Player player, Block before, Block after)
|
||||||
|
{
|
||||||
|
int type = 0;
|
||||||
|
if (after != null) {
|
||||||
|
type = after.getType();
|
||||||
|
if (type < 0)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (before.getType() < 0)
|
||||||
|
return;
|
||||||
|
BlockRow row = new BlockRow(player.getName(), before.getType(), type, before.getX(), before.getY(), before.getZ());
|
||||||
|
boolean result = bqueue.offer(row);
|
||||||
|
if (debug)
|
||||||
|
lblog.info(row.toString());
|
||||||
|
if (!result)
|
||||||
|
log.info(name + " failed to queue block for " + player.getName());
|
||||||
|
}
|
||||||
|
|
||||||
public class LBListener extends PluginListener // start
|
public class LBListener extends PluginListener // start
|
||||||
{
|
{
|
||||||
public boolean onCommand(Player player, String[] split)
|
public boolean onCommand(Player player, String[] split)
|
||||||
@@ -411,14 +445,9 @@ public class LogBlock extends Plugin
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean onBlockDestroy(Player player, Block blockAt)
|
public boolean onBlockBreak(Player player, Block block)
|
||||||
{
|
{
|
||||||
Block after = new Block(etc.getServer().getBlockIdAt(blockAt.getX(), blockAt.getY(), blockAt.getZ()), blockAt.getX(), blockAt.getY(), blockAt.getZ());
|
queueBlock(player, block, null);
|
||||||
|
|
||||||
if (after.getType() == blockAt.getType())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
queueBlock(player, blockAt, after);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} // end LBListener
|
} // end LBListener
|
||||||
@@ -496,13 +525,13 @@ public class LogBlock extends Plugin
|
|||||||
this.z = z;
|
this.z = z;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void log()
|
public String toString()
|
||||||
{
|
{
|
||||||
log.info("name: " + name + " before type: " + replaced + " type: " + type + " x: " + x + " y: " + y + " z: " + z);
|
return("name: " + name + " before type: " + replaced + " type: " + type + " x: " + x + " y: " + y + " z: " + z);
|
||||||
}
|
}
|
||||||
} // end BlockRow
|
} // end BlockRow
|
||||||
|
|
||||||
private class Result
|
private class Result // start
|
||||||
{
|
{
|
||||||
public String player;
|
public String player;
|
||||||
public int created;
|
public int created;
|
||||||
@@ -519,5 +548,13 @@ public class LogBlock extends Plugin
|
|||||||
{
|
{
|
||||||
return(String.format("%-6d %-6d %s", created, destroyed, player));
|
return(String.format("%-6d %-6d %s", created, destroyed, player));
|
||||||
}
|
}
|
||||||
}
|
} // end Result
|
||||||
|
|
||||||
|
private class LogFormatter extends Formatter //start
|
||||||
|
{
|
||||||
|
public String format(LogRecord rec)
|
||||||
|
{
|
||||||
|
return formatMessage(rec) + "\n";
|
||||||
|
}
|
||||||
|
} // end LogFormatter
|
||||||
} // end LogBlock
|
} // end LogBlock
|
||||||
|
Reference in New Issue
Block a user