diff --git a/src/de/diddiz/LogBlock/Config.java b/src/de/diddiz/LogBlock/Config.java index de6cdb2..2169551 100644 --- a/src/de/diddiz/LogBlock/Config.java +++ b/src/de/diddiz/LogBlock/Config.java @@ -23,6 +23,7 @@ public class Config { public final boolean logExplosions; public final boolean logFire; public final boolean logLeavesDecay; + public final boolean logLavaFlow; public final boolean logChestAccess; public final boolean logKills; public final LogKillsLevel logKillsLevel; @@ -88,10 +89,12 @@ public class Config { config.setProperty("logging.logExplosions", false); if (!subkeys.contains("logFire")) config.setProperty("logging.logFire", false); - if (!subkeys.contains("logChestAccess")) - config.setProperty("logging.logChestAccess", false); if (!subkeys.contains("logLeavesDecay")) config.setProperty("logging.logLeavesDecay", false); + if (!subkeys.contains("logLavaFlow")) + config.setProperty("logging.logLavaFlow", false); + if (!subkeys.contains("logChestAccess")) + config.setProperty("logging.logChestAccess", false); if (!subkeys.contains("logKills")) config.setProperty("logging.logKills", false); if (!subkeys.contains("logKillsLevel")) @@ -132,6 +135,7 @@ public class Config { logFire = config.getBoolean("logging.logFire", false); logChestAccess = config.getBoolean("logging.logChestAccess", false); logLeavesDecay = config.getBoolean("logging.logLeavesDecay", false); + logLavaFlow = config.getBoolean("logging.logLavaFlow", false); logKills = config.getBoolean("logging.logKills", false); try { logKillsLevel = LogKillsLevel.valueOf(config.getString("logging.logKillsLevel")); diff --git a/src/de/diddiz/LogBlock/LBBlockListener.java b/src/de/diddiz/LogBlock/LBBlockListener.java index 63012eb..6940a21 100644 --- a/src/de/diddiz/LogBlock/LBBlockListener.java +++ b/src/de/diddiz/LogBlock/LBBlockListener.java @@ -1,9 +1,11 @@ package de.diddiz.LogBlock; import org.bukkit.Material; +import org.bukkit.block.BlockFace; import org.bukkit.block.BlockState; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBurnEvent; +import org.bukkit.event.block.BlockFromToEvent; import org.bukkit.event.block.BlockListener; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.LeavesDecayEvent; @@ -19,7 +21,23 @@ public class LBBlockListener extends BlockListener consumer = logblock.getConsumer(); } - //TODO Flow listener + @Override + public void onBlockFromTo(BlockFromToEvent event) { + if (!event.isCancelled()) { + final int typeFrom = event.getBlock().getTypeId(); + final int typeTo = event.getToBlock().getTypeId(); + if (typeFrom == 10 || typeFrom == 11) { + if (typeTo == 0 || typeTo == 78) + consumer.queueBlockReplace("LavaFlow", event.getToBlock().getState(), 10, (byte)(event.getBlock().getData() + 1)); + else if (typeTo == 8 || typeTo == 9) { + if (event.getFace() == BlockFace.DOWN) + consumer.queueBlockReplace("LavaFlow", event.getToBlock().getState(), 10, (byte)0); + else + consumer.queueBlockReplace("LavaFlow", event.getToBlock().getState(), 4, (byte)0); + } + } + } + } @Override public void onBlockPlace(BlockPlaceEvent event) { diff --git a/src/de/diddiz/LogBlock/LogBlock.java b/src/de/diddiz/LogBlock/LogBlock.java index 990297e..5895787 100644 --- a/src/de/diddiz/LogBlock/LogBlock.java +++ b/src/de/diddiz/LogBlock/LogBlock.java @@ -127,6 +127,8 @@ public class LogBlock extends JavaPlugin pm.registerEvent(Type.LEAVES_DECAY, lbBlockListener, Priority.Monitor, this); if (config.logChestAccess) pm.registerEvent(Type.PLAYER_INTERACT, lbPlayerListener, Priority.Monitor, this); + if (config.logLavaFlow) + pm.registerEvent(Type.BLOCK_FROMTO, lbBlockListener, Priority.Monitor, this); if (config.logKills) pm.registerEvent(Type.ENTITY_DAMAGE, lbEntityListener, Priority.Monitor, this); if (config.useBukkitScheduler) { @@ -435,8 +437,8 @@ public class LogBlock extends JavaPlugin state.execute("CREATE TABLE `lb-players` (playerid SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, playername varchar(32) NOT NULL DEFAULT '-', PRIMARY KEY (playerid), UNIQUE (playername))"); if (!dbm.getTables(null, null, "lb-players", null).next()) return false; - state.execute("INSERT IGNORE INTO `lb-players` (playername) VALUES ('TNT'), ('Creeper'), ('Fire'), ('LeavesDecay'), ('Ghast'), ('Environment')"); } + state.execute("INSERT IGNORE INTO `lb-players` (playername) VALUES ('TNT'), ('Creeper'), ('Fire'), ('LeavesDecay'), ('Ghast'), ('LavaFlow'), ('Environment'), ('Chicken'), ('Cow'), ('Giant'), ('Pig'), ('PigZombie'), ('Sheep'), ('Skeleton'), ('Slime'), ('Spider'), ('Squid'), ('Wolf'), ('Zombie')"); for (final String table : config.tables.values()) { if (!dbm.getTables(null, null, table, null).next()) { log.log(Level.INFO, "[LogBlock] Crating table " + table + "."); @@ -461,7 +463,6 @@ public class LogBlock extends JavaPlugin state.execute("CREATE TABLE `" + table + "-kills` (id INT UNSIGNED NOT NULL AUTO_INCREMENT, date DATETIME NOT NULL, killer SMALLINT UNSIGNED, victim SMALLINT UNSIGNED NOT NULL, weapon SMALLINT UNSIGNED NOT NULL, PRIMARY KEY (id));"); if (!dbm.getTables(null, null, table + "-kills", null).next()) return false; - state.execute("INSERT IGNORE INTO `lb-players` (playername) VALUES ('Chicken'), ('Cow'), ('Creeper'), ('Ghast'), ('Giant'), ('Pig'), ('PigZombie'), ('Sheep'), ('Skeleton'), ('Slime'), ('Spider'), ('Squid'), ('Wolf'), ('Zombie')"); } } return true;