This commit is contained in:
Robin Kupper
2011-03-10 13:08:20 +01:00
parent 1c2a6cc422
commit 1c9a115de3
2 changed files with 58 additions and 21 deletions

View File

@@ -28,6 +28,7 @@ import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockListener; import org.bukkit.event.block.BlockListener;
import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.block.BlockRightClickEvent; import org.bukkit.event.block.BlockRightClickEvent;
import org.bukkit.event.block.SignChangeEvent;
import org.bukkit.event.player.PlayerChatEvent; import org.bukkit.event.player.PlayerChatEvent;
import org.bukkit.event.player.PlayerItemEvent; import org.bukkit.event.player.PlayerItemEvent;
import org.bukkit.event.player.PlayerListener; import org.bukkit.event.player.PlayerListener;
@@ -54,6 +55,7 @@ public class LogBlock extends JavaPlugin
private int defaultDist = 20; private int defaultDist = 20;
private int toolID = 270; private int toolID = 270;
private int toolblockID = 7; private int toolblockID = 7;
private int keepLogDays = -1;
private boolean toolblockRemove = true; private boolean toolblockRemove = true;
private Consumer consumer = null; private Consumer consumer = null;
private LinkedBlockingQueue<BlockRow> bqueue = new LinkedBlockingQueue<BlockRow>(); private LinkedBlockingQueue<BlockRow> bqueue = new LinkedBlockingQueue<BlockRow>();
@@ -83,7 +85,8 @@ public class LogBlock extends JavaPlugin
+ "tool-block-id : 7" + crlf + "tool-block-id : 7" + crlf
+ "tool-block-remove : true" + crlf + "tool-block-remove : true" + crlf
+ "default-distance : 20" + crlf + "default-distance : 20" + crlf
+ "usePermissions : false"); + "usePermissions : false" + crlf
+ "keepLogDays : -1");
writer.close(); writer.close();
log.info(name + " Config created"); log.info(name + " Config created");
} }
@@ -97,6 +100,7 @@ public class LogBlock extends JavaPlugin
toolblockID = getConfiguration().getInt("tool-block-id", 7); toolblockID = getConfiguration().getInt("tool-block-id", 7);
toolblockRemove = getConfiguration().getBoolean("tool-block-remove", true); toolblockRemove = getConfiguration().getBoolean("tool-block-remove", true);
defaultDist = getConfiguration().getInt("default-distance", 20); defaultDist = getConfiguration().getInt("default-distance", 20);
keepLogDays = getConfiguration().getInt("keepLogDays", -1);
if (getConfiguration().getBoolean("usePermissions", false)) if (getConfiguration().getBoolean("usePermissions", false))
{ {
if (getServer().getPluginManager().getPlugin("Permissions") != null) if (getServer().getPluginManager().getPlugin("Permissions") != null)
@@ -129,11 +133,14 @@ public class LogBlock extends JavaPlugin
log.log(Level.SEVERE, name + " Errors while loading, check logs for more information."); log.log(Level.SEVERE, name + " Errors while loading, check logs for more information.");
return; return;
} }
if (keepLogDays >= 0)
dropOldLogs();
PluginManager pm = getServer().getPluginManager(); PluginManager pm = getServer().getPluginManager();
pm.registerEvent(Type.PLAYER_COMMAND, lblPlayerListener, Event.Priority.Normal, this); pm.registerEvent(Type.PLAYER_COMMAND, lblPlayerListener, Event.Priority.Normal, this);
pm.registerEvent(Type.BLOCK_RIGHTCLICKED, lblBlockListener, Event.Priority.Monitor, this); pm.registerEvent(Type.BLOCK_RIGHTCLICKED, lblBlockListener, Event.Priority.Monitor, this);
pm.registerEvent(Type.BLOCK_PLACED, lblBlockListener, Event.Priority.Monitor, this); pm.registerEvent(Type.BLOCK_PLACED, lblBlockListener, Event.Priority.Monitor, this);
pm.registerEvent(Type.BLOCK_BREAK, lblBlockListener, Event.Priority.Monitor, this); pm.registerEvent(Type.BLOCK_BREAK, lblBlockListener, Event.Priority.Monitor, this);
pm.registerEvent(Type.SIGN_CHANGE, lblBlockListener, Event.Priority.Monitor, this);
pm.registerEvent(Type.PLAYER_ITEM, lblPlayerListener, Event.Priority.Monitor, this); pm.registerEvent(Type.PLAYER_ITEM, lblPlayerListener, Event.Priority.Monitor, this);
consumer = new Consumer(); consumer = new Consumer();
new Thread(consumer).start(); new Thread(consumer).start();
@@ -191,6 +198,30 @@ public class LogBlock extends JavaPlugin
return false; return false;
} }
private void dropOldLogs()
{
Connection conn = null;
Statement state = null;
try {
conn = getConnection();
state = conn.createStatement();
int deleted = state.executeUpdate("DELETE FROM blocks WHERE date < date_sub(now(), INTERVAL " + keepLogDays + " DAY)");
log.info(name + "Cleared out database. Deleted " + deleted + " entries.");
} catch (SQLException ex) {
log.log(Level.SEVERE, name + " SQL exception", ex);
} finally {
try {
if (state != null)
state.close();
if (conn != null)
conn.close();
} catch (SQLException ex) {
log.log(Level.SEVERE, name + " SQL exception on close", ex);
}
}
}
private void showBlockHistory(Player player, Block b) private void showBlockHistory(Player player, Block b)
{ {
player.sendMessage("<EFBFBD>3Block history (" + b.getX() + ", " + b.getY() + ", " + b.getZ() + "): "); player.sendMessage("<EFBFBD>3Block history (" + b.getX() + ", " + b.getY() + ", " + b.getZ() + "): ");
@@ -218,7 +249,7 @@ public class LogBlock extends JavaPlugin
msg = msg + "destroyed " + Material.getMaterial(rs.getInt("replaced")).toString().toLowerCase().replace('_', ' '); msg = msg + "destroyed " + Material.getMaterial(rs.getInt("replaced")).toString().toLowerCase().replace('_', ' ');
else if (rs.getInt("replaced") == 0) else if (rs.getInt("replaced") == 0)
{ {
if (rs.getInt("type") == 323) if (rs.getInt("type") == 63)
msg = msg + "created " + rs.getString("extra"); msg = msg + "created " + rs.getString("extra");
else else
msg = msg + "created " + Material.getMaterial(rs.getInt("type")).toString().toLowerCase().replace('_', ' '); msg = msg + "created " + Material.getMaterial(rs.getInt("type")).toString().toLowerCase().replace('_', ' ');
@@ -256,18 +287,17 @@ public class LogBlock extends JavaPlugin
log.info(name + " failed to queue block for " + playerName); log.info(name + " failed to queue block for " + playerName);
} }
//private void queueSign(Player player, Sign sign) private void queueSign(String playerName, Block block, String[] signText)
//{ {
// int type = 63; BlockRow row = new BlockRow(playerName, 0, 63, block.getData(), block.getX(), block.getY(), block.getZ());
// BlockRow row = new BlockRow(player.getName(), 0, type, sign.getX(), sign.getY(), sign.getZ()); String text = "sign";
// String text = "sign"; for (int i = 0; i < 4; i++)
// for (int i=0; i < 4; i++) text += " [" + signText[i] + "]";
// text = text + " [" + sign.getLine(i) + "]"; row.addExtra(text);
// row.addExtra(text); boolean result = bqueue.offer(row);
// boolean result = bqueue.offer(row); if (!result)
// if (!result) log.info(name + " failed to queue block for " + playerName);
// log.info(name + " failed to queue block for " + player.getName()); }
//}
private boolean CheckPermission(Player player, String permission) private boolean CheckPermission(Player player, String permission)
{ {
@@ -408,6 +438,8 @@ public class LogBlock extends JavaPlugin
queueBlock(event.getPlayer().getName(), event.getBlockClicked().getFace(event.getBlockFace()), 0, 9, (byte)0); queueBlock(event.getPlayer().getName(), event.getBlockClicked().getFace(event.getBlockFace()), 0, 9, (byte)0);
else if (event.getMaterial() == Material.LAVA_BUCKET) else if (event.getMaterial() == Material.LAVA_BUCKET)
queueBlock(event.getPlayer().getName(), event.getBlockClicked().getFace(event.getBlockFace()), 0, 11, (byte)0); queueBlock(event.getPlayer().getName(), event.getBlockClicked().getFace(event.getBlockFace()), 0, 11, (byte)0);
else if (event.getMaterial() == Material.FLINT_AND_STEEL)
queueBlock(event.getPlayer().getName(), event.getBlockClicked().getFace(event.getBlockFace()), 0, 51, (byte)0);
} }
} }
} }
@@ -436,9 +468,14 @@ public class LogBlock extends JavaPlugin
public void onBlockBreak(BlockBreakEvent event) public void onBlockBreak(BlockBreakEvent event)
{ {
if (event.getPlayer().getWorld() == getServer().getWorlds().get(0)) if (event.getPlayer().getWorld() == worlds.get(0))
queueBlock(event.getPlayer().getName(), event.getBlock(), event.getBlock().getTypeId(), 0, event.getBlock().getData()); queueBlock(event.getPlayer().getName(), event.getBlock(), event.getBlock().getTypeId(), 0, event.getBlock().getData());
} }
public void onSignChange(SignChangeEvent event) {
if (event.getPlayer().getWorld() == worlds.get(0))
queueSign(event.getPlayer().getName(), event.getBlock(), event.getLines());
}
} }
private class Consumer implements Runnable private class Consumer implements Runnable
@@ -532,10 +569,10 @@ public class LogBlock extends JavaPlugin
this.extra = null; this.extra = null;
} }
//public void addExtra(String extra) public void addExtra(String extra)
//{ {
// this.extra = extra; this.extra = extra;
//} }
public String toString() public String toString()
{ {
@@ -619,7 +656,7 @@ public class LogBlock extends JavaPlugin
public void perform() public void perform()
{ {
Block block = getServer().getWorlds().get(0).getBlockAt(x, y, z); Block block = getServer().getWorlds().get(0).getBlockAt(x, y, z);
if (block.getTypeId() == type) if (block.getTypeId() == type || (block.getTypeId() >= 8 && block.getTypeId() <= 11))
{ {
if (block.setTypeId(replaced)) { if (block.setTypeId(replaced)) {
block.setData(data); block.setData(data);

View File

@@ -1,5 +1,5 @@
name: LogBlock name: LogBlock
version: 0.2 version: 0.3
author: DiddiZ, bootswithdefer author: DiddiZ, bootswithdefer
website: http://www.diddiz.de/minecraft/ website: http://www.diddiz.de/minecraft/
main: de.diddiz.LogBlock.LogBlock main: de.diddiz.LogBlock.LogBlock